20.20 告警系统主脚本;20.21 告警系统配置文件;20.22 告警系统监控项目
1. 要求:我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件。
2. 程序架构:
bin下是:主程序
conf下是:配置文件
shares下是:各个监控脚本
mail下是:邮件引擎
log下是:日志
20.20 告警系统主脚本
约定:所有脚本都放在 /usr/local/bin目录下!
shell项目-告警系统main.sh
1. 在/usr/local/bin/目录下,创建一个mon目录 :
[root@hao-01~]# mkdir /usr/local/bin/mon
2. 进入.../mon目录下 :
[root@hao-01~]# cd /usr/local/bin/mon
3. 在 /usr/local/bin/mon目录下,创建以下目录 :
[root@hao-01 mon]# mkdir bin conf shares log mail
4. 在/usr/local/bin/mon/bin下,创建main.sh主脚本 :
[root@hao-01 mon]# vim /usr/local/bin/mon/bin/main.sh
添加内容:
#!/bin/bash
#Written by hao.
# 是否发送邮件的开关
export send=1
# 过滤ip地址
export addr=ifconfig |grep -A1 "ens33: "|awk '/inet/ {print $2}'
dir=`pwd`
# 只需要最后一级目录名
last_dir=`echo $dir|awk -F'/' '{print $NF}'`
# 下面的判断目的是,保证执行脚本的时候,我们在bin目录里,不然监控脚本、邮件和日志很有可能找不到
if [ $last_dir == "bin" ] || [ $last_dir == "bin/" ]; then
conf_file="../conf/mon.conf"
else
echo "you shoud cd bin dir"
exit
fi
exec 1>>../log/mon.log 2>>../log/err.log
echo "`date +"%F %T"` load average"
/bin/bash ../shares/load.sh
#先检查配置文件中是否需要监控502
if grep -q 'to_mon_502=1' $conf_file; then
export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'`
/bin/bash ../shares/502.sh
fi
20.21 告警系统配置文件
shell项目-告警系统mon.conf
1. 在/usr/local/bin/mon/conf下,创建mon.conf配置文件 :
[root@hao-01 mon]# vim /usr/local/bin/mon/conf/mon.conf
添加内容:
## to config the options if to monitor
## 定义mysql的服务器地址、端口以及user、password
to_mon_cdb=0 ##0 or 1, default 0,0 not monitor, 1 monitor
db_ip=10.20.3.13
db_port=3315
db_user=username
db_pass=passwd
## httpd 如果是1则监控,为0不监控
to_mon_httpd=0
## php 如果是1则监控,为0不监控
to_mon_php_socket=0
## http_code_502 需要定义访问日志的路径
to_mon_502=1
logfile=/data/log/xxx.xxx.com/access.log
## request_count 定义日志路径以及域名
to_mon_request_count=0
req_log=/data/log/www.discuz.net/access.log
domainname=www.discuz.net
20.22 告警系统监控项目
shell项目-告警系统load.sh
1. 在/usr/local/bin/mon/shares下,创建load.sh子脚本 :
[root@hao-01 ~]# vim /usr/local/bin/mon/shares/load.sh
添加内容 :
#! /bin/bash
##Writen by aming##
load=`uptime |awk -F 'average:' '{print $2}'|cut -d',' -f1|sed 's/ //g' |cut -d. -f1`
if [ $load -gt 10 ] && [ $send -eq "1" ]
then
echo "$addr `date +%T` load is $load" >../log/load.tmp
/bin/bash ../mail/mail.sh zhuneianxiang@163.com "$addr\_load:$load" `cat ../log/load.tmp`
fi
echo "`date +%T` load is $load"
shell项目-告警系统502.sh
1. 在/usr/local/bin/mon/shares下,创建502.sh子脚本 :
[root@hao-01 ~]# vim /usr/local/bin/mon/shares/502.sh
添加内容:
#! /bin/bash
d=`date -d "-1 min" +%H:%M`
c_502=`grep :$d: $log |grep ' 502 '|wc -l`
if [ $c_502 -gt 10 ] && [ $send == 1 ]; then
echo "$addr $d 502 count is $c_502">../log/502.tmp
/bin/bash ../mail/mail.sh $addr\_502 $c_502 ../log/502.tmp
fi
echo "`date +%T` 502 $c_502"
shell项目-告警系统disk.sh
1. 在/usr/local/bin/mon/shares下,创建disk.sh子脚本 :
[root@hao-01 ~]# vim /usr/local/bin/mon/shares/disk.sh
添加内容 :
#! /bin/bash
##Writen by aming##
rm -f ../log/disk.tmp
for r in `df -h |awk -F '[ %]+' '{print $5}'|grep -v Use`
do
if [ $r -gt 90 ] && [ $send -eq "1" ]
then
echo "$addr `date +%T` disk useage is $r" >>../log/disk.tmp
fi
if [ -f ../log/disk.tmp ]
then
df -h >> ../log/disk.tmp
/bin/bash ../mail/mail.sh $addr\_disk $r ../log/disk.tmp
echo "`date +%T` disk useage is nook"
else
echo "`date +%T` disk useage is ok"
fi
转载于:https://blog.51cto.com/zhuneianxiang/2106754
20.20 告警系统主脚本;20.21 告警系统配置文件;20.22 告警系统监控项目相关推荐
- 告警系统主脚本 告警系统配置文件 告警系统监控项目
一.告警系统主脚本 我们要养成习惯,把shell脚本放到/usr/local/sbin/目录下,方便我们查找 [root@linux-01 ~]# cd /usr/local/sbin/ [root@ ...
- Shell告警系统(需求分析,告警系统主脚本,告警系统配置文件,告警系统监控项目)...
shell项目-告警系统 1.需求分析 (虽然之前我们学习了zabbix,但有时候也不能满足我们的需求,比如比较冷门的监控项目需要写自定义脚本,或者服务器网络有问题,没有办法将客户端的数据发送到服务端 ...
- 配置告警系统主脚本main.sh mon.sh load.sh 502.sh disk.sh
需求:使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理. 思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日志等. 主程序:作为整个脚本的入口,是整个系统的命脉. ...
- nodejs error Windows_NT 6.1.7601 21 error code ELIFECYCLE 22 error angular-adminlte-plugin@0.1.0
报错日志: 17 error Windows_NT 6.1.7601 18 error argv "D:\\Program Files\\nodejs\\node.exe" &qu ...
- python爬斗鱼直播数据图片_Python爬取2000万直播数据——看20万游戏主播能否月入100万...
原标题:Python爬取2000万直播数据--看20万游戏主播能否月入100万 她那时候还太年轻,不知道命运赠送的礼物,早已暗中标好了价格. --茨威格 社会在发展,时代在进步.伴随着未曾停息的拥护声 ...
- 20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数...
20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [root@hao-01 ~]# yum install -y expe ...
- 大屏监控系统实战(10)-大屏展示前20个博主的排名、票数及名次相对于前一日的升降情况
一.概述 上一节我们已经把数据爬取到了数据库中并保存了起来,这章就要把数据在大屏上展示出来,先在大屏上展示前20个博主的排名.票数及名次相对于前一日的升降情况.最终实现的效果如下: 这个效果相当完美了 ...
- FTP 21端口和20端口有什么区别?
FTP的服务端口是21号端口,默认情况下FTP协议会使用TCP端口中的20和21这两个端口,其中21端口用于FTP传输控制信息,21端口用于连接,20端口用于传输数据,在实际使用中20端口是否作为FT ...
- ftp服务器的端口20和21的具体作用,FTP协议中21端口和20端口的详解
FTP(File Transfer Protocol)文件传输协议,是 TCP/IP 协议组中的协议之一. FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FTP服务器用来存储 ...
- MATLAB小技巧(20)矩阵分析--主成分回归
MATLAB小技巧(20)矩阵分析--主成分回归 前言 一. MATLAB仿真 二. 仿真结果 三. 小结 前言 MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有 ...
最新文章
- 第二章 单元测试的基本概念和核心技法
- kafka partition分配_kafka的分区分配策略
- 大致了解写java聊天器所需要的技术
- 【正一专栏】故意豪宅纵火的保姆会判死刑吗?
- 将ArXiv中的Reference导入EndNote
- python socket tcp远控_Python3实现ICMP远控后门(中)之“嗅探”黑科技
- mac mysql not found_mac版mysql安装后显示mysql: command not found咋整?
- android半透明闪退,(Android)react-native-splash-screen实践-解决react-native打包好后启动白屏的问题...
- 简单理解操作系统中的PV操作
- Php clearstatcache() 函数详解
- 【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)
- win10 系统下‘javac‘ 不是内部或外部命令,
- 资源---vc++2010学习版---注册码(注册码密匙)
- 锁卡,每插入一张新卡都需要进行解锁
- LaTeX制作幻灯片
- Python-Scrapy-抓取链家二手房信息
- [机缘参悟-79]:深度思考-职场中注意事项-管理者版
- 三一重能科创板上市:年营收102亿 梁稳根持股为56.7%
- 指尖江湖李忘生鸿蒙初开,剑网3指尖江湖李忘生技能怎么配?李忘生技能搭配攻略...
- 区块链技术在金融行业的应用
热门文章
- 查看name的状态,是属于active还是standby
- 【收藏】十大Webserver漏洞扫描工具
- c#中sqlhelper类的编写(一)
- DB2 9 根本(730 磨练)认证指南,第 3 部门: 谋面 DB2 数据(4)
- 孙燕姿:(Hello, I'm Stefanie...)
- 如何在一个项目中兼容Wepy和Taro?
- Qt——菜单栏、工具栏、状态栏
- tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
- asp 读取 json 数据
- CodeForces 2B The least round way