shell项目-告警系统
需求背景
使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。当zabbix服务器之间因为网络原因而无法上报数据时,就可以先通过shell脚本来暂时监控。这样的告警系统属于分布式的,需要在每一台机器上去放置该shell脚本,每一台机器都独立监控,不需要依赖其他机器。
思路:指定一个脚本包,其中包含以下内容
(1)主程序:作为整个脚本的入口,是整个系统的命脉
(2)配置文件:是一个控制中心,用他来开关各个子进程,指定各个相关联的日志文件
(3)子程序:这个才是真正的监控脚本,用来监控各个指标
(4)邮件引擎:是由一个pythen程序来实现,它可以定义发邮件的服务器、发邮件人以及发件人密码。
(5)输出日志:整个监控系统要有日志输出要求:机器角色很多种,但是所有机器上都要部署同样的监控系统,也就是说所有的机器不管什么角色,整个程序框架是一致的,不同之处在于根据不同的角色,定制不同的配置文件。
程序框架
告警系统主脚本
先定义各个监控系统的目录,然后再去定义主脚本,因为是分布式的,所以每一台机器都需要这样去做。可以在其他机器上创建那些目录,然后将这台机器上的脚本拷贝过去,并做一些更改。
将脚本全部放在/usr/local/sbin目录下,方便以后的查找。
创建mon目录,并创建bin 、 conf 、shares 、log 、mail这几个子目录。
-主脚本放在/bin目录下,并写入以下内容
#!/bin/bash
##written by zcy
#是否发送邮件的开关,0为是指不发送
export send=1 //所有的子脚本只是关闭告警,监控还是继续监控
#过滤ip地址
export addr=` /sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {print $2}'`
dir=`pwd`
#只需要最后一些目录名
last_dir=`echo