20.20 告警系统主脚本
定义监控系统的各个目录,然后定义主脚本。(每个机器都要做)
首先cd到里去(我们写的脚本都可以在这个目录里,不是必须,只是为了好找)
创建mon目录,然后cd到里面,
创建几个目录
我们把主脚本创建在bin下。
是否发送邮件(这是一个总的开关)。1是开启,当机器维护的时候你需要先关闭它,不然会误报。(前面的export意味着这个变量会应用在所以的子脚本里)
过滤出每一台服务器的地址,这里的代码需要根据自己的机器情况设置。(方便知道是哪一台机器发的警报或邮件)
pwd找到当前主脚本所在的路径,提取出最后一级的目录。
判断last_dir是否是bin,没有的话就告诉用户,不在bin下后面的脚本没有办法执行(因为脚本里好多用的都是相对路径)也就是所我们执行这个脚本的时候是需要在bin下的。
定义配置文件所在的路径。
输出真确的日志和错误的日志。然后打一个日期标记求出系统负载。
因为系统负载是每一个机器必须要监控的项目,所以我们把它放到了主脚本里。(load.sh就是子脚本用来监控负载)
20.21 告警系统配置文件
(以上代码只是例子,具体需要根据自己的需求更改)
下面我们来写配置文件,配置文件就是定义一些开关和对应日志的路径,监控mysql的时候的用户名和密码,以及ip端口等。
配置文件一定要放到里,因为我们在主脚本里定义了的。
意思是是否监控某一项,1就是打开。
是否监控502,因为监控502需要使用到日志,(从日志中过滤出来的)
是否监控请求数,(这里我们也需要用到日志,还有所涉及到的域名)
20.22 告警系统监控项目
系统负载监控脚本。(每台机器都需要有)
监控项目都放到这个目录里。
过滤出系统负载的值
判断值是否大于10,并且send也就是主脚本里的邮件开关值是否是1.
写一条日志到日志里,这个日志是作为发邮件的。不是主日志(要发的邮件内容)
发邮件脚本,
输出日志,输出到哪里已经在主脚本里定义了。
502监控脚本
他需要一个日志,没有日志就没有办法找状态码
截取一分钟以前的时间。(监控系统主脚本是一分钟执行一次,所以我们监控的是一分钟以前的日志。)
看一分钟日志里有几个502。
判断出现的次数是否大于10,并且send是否是1。
满足条件下面就是发邮件了。
disk监控磁盘使用率脚本
把所有的分区挨个看一下,需要一个循环,
意思是取如下红框位置的数值。以一个或多个空格和%为分隔符(加号代表可以重复多个,比如说几个空格在一起,算一个分隔符),和下面这个例子类似:
这里我们需要让它不显示中文,所以我们需要加一句
这个脚本整体思路是查看这些值里是都有大于90的,并且send是1,然后执行下面的操作,发邮件或者干嘛。
这里我们做了一个操作判断邮件是否存在,存在就发邮件,不存在就写一个日志。这里存在的前提是满足如下条件,才会生成。