十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

20.20 告警系统主脚本

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

定义监控系统的各个目录,然后定义主脚本。(每个机器都要做)

首先cd到十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目里去(我们写的脚本都可以在这个目录里,不是必须,只是为了好找)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目创建mon目录,然后cd到里面,

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目 十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目创建几个目录

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目 十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目我们把主脚本创建在bin下。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目是否发送邮件(这是一个总的开关)。1是开启,当机器维护的时候你需要先关闭它,不然会误报。(前面的export意味着这个变量会应用在所以的子脚本里)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

过滤出每一台服务器的地址,这里的代码需要根据自己的机器情况设置。(方便知道是哪一台机器发的警报或邮件)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目pwd找到当前主脚本所在的路径,提取出最后一级的目录。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目判断last_dir是否是bin,没有的话就告诉用户,不在bin下后面的脚本没有办法执行(因为脚本里好多用的都是相对路径)也就是所我们执行这个脚本的时候是需要在bin下的。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目定义配置文件所在的路径。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目输出真确的日志和错误的日志。然后打一个日期标记求出系统负载。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目因为系统负载是每一个机器必须要监控的项目,所以我们把它放到了主脚本里。(load.sh就是子脚本用来监控负载)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

20.21 告警系统配置文件

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目(以上代码只是例子,具体需要根据自己的需求更改)

下面我们来写配置文件,配置文件就是定义一些开关和对应日志的路径,监控mysql的时候的用户名和密码,以及ip端口等。

配置文件一定要放到十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目里,因为我们在主脚本里定义了的。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目意思是是否监控某一项,1就是打开。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目是否监控502,因为监控502需要使用到日志,(从日志中过滤出来的)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目是否监控请求数,(这里我们也需要用到日志,还有所涉及到的域名)

20.22 告警系统监控项目

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

系统负载监控脚本。(每台机器都需要有)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目监控项目都放到这个目录里。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目过滤出系统负载的值

 

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目判断值是否大于10,并且send也就是主脚本里的邮件开关值是否是1.

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目写一条日志到日志里,这个日志是作为发邮件的。不是主日志(要发的邮件内容)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目发邮件脚本,

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目输出日志,输出到哪里已经在主脚本里定义了。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

502监控脚本

他需要一个日志,没有日志就没有办法找状态码

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目截取一分钟以前的时间。(监控系统主脚本是一分钟执行一次,所以我们监控的是一分钟以前的日志。)

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目看一分钟日志里有几个502。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目判断出现的次数是否大于10,并且send是否是1。

满足条件下面就是发邮件了。

disk监控磁盘使用率脚本

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

把所有的分区挨个看一下,需要一个循环,

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目意思是取如下红框位置的数值。十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目以一个或多个空格和%为分隔符(加号代表可以重复多个,比如说几个空格在一起,算一个分隔符),和下面这个例子类似:

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目    十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

这里我们需要让它不显示中文,所以我们需要加一句

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目

这个脚本整体思路是查看这些值里是都有大于90的,并且send是1,然后执行下面的操作,发邮件或者干嘛。

这里我们做了一个操作十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目判断邮件是否存在,存在就发邮件,不存在就写一个日志。这里存在的前提是满足如下条件,才会生成。

十七周一次课 2018.02.09 告警系统主脚本、告警系统配置文件、告警系统监控项目