前期准备
创建项目主目录mkdir /usr/local/sbin/mon
创建项目各个子目录
cd /usr/local/sbin/mon
mkdir bin conf shares mail log
centos7操作系统、可以联网、安装python3环境(直接yum install -y python3即可)net-tools
1.配置main.sh
进入bin目录下
①cd /usr/local/sbin/mon/bin/
②vim main.sh
2、配置mon.conf
①cd /usr/local/sbin/mon/conf
②vim mon.conf
3、配置监控子程序
这些子程序才是我们真正的监控程序,这些程序我们都放在shares目录下,这里主要有三个程序,分别是load.sh、502.sh、disk.sh。
①cd /usr/local/sbin/mon/shares
②vim load.sh(下面的邮箱地址为收件箱)
load.sh程序的核心就是利用uptime命令取程序最近一分钟的负载值做判断,如果值大于我们设定的阈值就发送邮件告警。mail.sh后面跟三个参数 分别是邮件接收人、邮件主题、邮件内容,可以根据需要自定义参数。
③vim 502.sh
502.sh 核心就是监控nginx运行日志一分钟502出现的次数,如果大于我们设定的阈值就发送邮件告警。这个脚本需要在conf目录下mon.conf设置502运行日志的目录位置。
④vim disk.sh
disk.sh 核心思想就是利用for循环遍历每个分区的磁盘利用率,如果有分区磁盘利用率超过设定的阈值就发送告警邮件。
4.配置告警系统邮件引擎
告警系统邮件引擎由两个文件组成,都在mail目录下,mail.py负责发送邮件,mail.sh负责告警收敛。
mail.py是由python3编写的脚本,如果没有学过python 内容不需要关心,只需要注意最下面一行,填写你的网易163账号、授权码和发送人邮箱。
①cd /usr/local/sbin/mon/mail
②vim mail.py
③vim mail.sh
mail.sh是负责告警收敛的,如果每次运行脚本出现问题都发送邮件就太烦人了,所以就有了这个告警收敛脚本。这个脚本设置了三种场景,分别是第一次执行脚本如果有警告就发送邮件、业务连续报警十分钟再发送一封邮件和业务间断的报警一小时内满十分钟就报警一次。
测试
因为是测试我们先把日志关掉,注释掉main.sh脚本exec那一行。
我们要把load.sh脚本改成满足我们设定的阈值,所以改一下判断条件当系统负载等于($load -gt 0)0时我们就告警。(前面的命令已经修改过)
执行主程序
1.cd /usr/local/sbin/mon/bin
2.sh -x main.sh
结果下面显示:
++ date ‘+%F %T’
- echo ‘2021-02-26 22:39:34 load average’
2021-02-26 22:39:34 load average - /bin/bash …/shares/load.sh
7200
success
22:39:35 load is 0 - grep -q to_mon_502=1 …/conf/mon.conf