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 告警系统监控项目相关推荐

  1. 告警系统主脚本 告警系统配置文件 告警系统监控项目

    一.告警系统主脚本 我们要养成习惯,把shell脚本放到/usr/local/sbin/目录下,方便我们查找 [root@linux-01 ~]# cd /usr/local/sbin/ [root@ ...

  2. Shell告警系统(需求分析,告警系统主脚本,告警系统配置文件,告警系统监控项目)...

    shell项目-告警系统 1.需求分析 (虽然之前我们学习了zabbix,但有时候也不能满足我们的需求,比如比较冷门的监控项目需要写自定义脚本,或者服务器网络有问题,没有办法将客户端的数据发送到服务端 ...

  3. 配置告警系统主脚本main.sh mon.sh load.sh 502.sh disk.sh

    需求:使用shell定制各种个性化告警工具,但需要统一化管理.规范化管理. 思路:指定一个脚本包,包含主程序.子程序.配置文件.邮件引擎.输出日志等. 主程序:作为整个脚本的入口,是整个系统的命脉. ...

  4. 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 ...

  5. python爬斗鱼直播数据图片_Python爬取2000万直播数据——看20万游戏主播能否月入100万...

    原标题:Python爬取2000万直播数据--看20万游戏主播能否月入100万 她那时候还太年轻,不知道命运赠送的礼物,早已暗中标好了价格. --茨威格 社会在发展,时代在进步.伴随着未曾停息的拥护声 ...

  6. 20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数...

    20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [root@hao-01 ~]# yum install -y expe ...

  7. 大屏监控系统实战(10)-大屏展示前20个博主的排名、票数及名次相对于前一日的升降情况

    一.概述 上一节我们已经把数据爬取到了数据库中并保存了起来,这章就要把数据在大屏上展示出来,先在大屏上展示前20个博主的排名.票数及名次相对于前一日的升降情况.最终实现的效果如下: 这个效果相当完美了 ...

  8. FTP 21端口和20端口有什么区别?

    FTP的服务端口是21号端口,默认情况下FTP协议会使用TCP端口中的20和21这两个端口,其中21端口用于FTP传输控制信息,21端口用于连接,20端口用于传输数据,在实际使用中20端口是否作为FT ...

  9. ftp服务器的端口20和21的具体作用,FTP协议中21端口和20端口的详解

    FTP(File Transfer Protocol)文件传输协议,是 TCP/IP 协议组中的协议之一. FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FTP服务器用来存储 ...

  10. MATLAB小技巧(20)矩阵分析--主成分回归

    MATLAB小技巧(20)矩阵分析--主成分回归 前言 一. MATLAB仿真 二. 仿真结果 三. 小结 前言 MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有 ...

最新文章

  1. 第二章 单元测试的基本概念和核心技法
  2. kafka partition分配_kafka的分区分配策略
  3. 大致了解写java聊天器所需要的技术
  4. 【正一专栏】故意豪宅纵火的保姆会判死刑吗?
  5. 将ArXiv中的Reference导入EndNote
  6. python socket tcp远控_Python3实现ICMP远控后门(中)之“嗅探”黑科技
  7. mac mysql not found_mac版mysql安装后显示mysql: command not found咋整?
  8. android半透明闪退,(Android)react-native-splash-screen实践-解决react-native打包好后启动白屏的问题...
  9. 简单理解操作系统中的PV操作
  10. Php clearstatcache() 函数详解
  11. 【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)
  12. win10 系统下‘javac‘ 不是内部或外部命令,
  13. 资源---vc++2010学习版---注册码(注册码密匙)
  14. 锁卡,每插入一张新卡都需要进行解锁
  15. LaTeX制作幻灯片
  16. Python-Scrapy-抓取链家二手房信息
  17. [机缘参悟-79]:深度思考-职场中注意事项-管理者版
  18. 三一重能科创板上市:年营收102亿 梁稳根持股为56.7%
  19. 指尖江湖李忘生鸿蒙初开,剑网3指尖江湖李忘生技能怎么配?李忘生技能搭配攻略...
  20. 区块链技术在金融行业的应用

热门文章

  1. 查看name的状态,是属于active还是standby
  2. 【收藏】十大Webserver漏洞扫描工具
  3. c#中sqlhelper类的编写(一)
  4. DB2 9 根本(730 磨练)认证指南,第 3 部门: 谋面 DB2 数据(4)
  5. 孙燕姿:(Hello, I'm Stefanie...)
  6. 如何在一个项目中兼容Wepy和Taro?
  7. Qt——菜单栏、工具栏、状态栏
  8. tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
  9. asp 读取 json 数据
  10. CodeForces 2B The least round way