需求:使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。
思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。
主程序:作为整个脚本的入口,是整个系统的命脉。
配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。
子程序:这个才是真正的监控脚本,用来监控各个指标。
邮件引擎:是由一个python程序来实现,它可以定义发邮件的服务器、发邮件人以及发件人密码
输出日志:整个监控系统要有日志输出。

在/usr/local/sbin目录下新建个mon目录
在mon目录下新建四个文件夹
[root@aminglinux-001 mon]# ls
bin conf log mail shares

1、在mon/bin下创建main.sh

编辑告警系统 main.sh

[root@aminglinux-001 bin]# vim main.sh
#!/bin/bash
#Written by aming.
是否发送邮件的开关
export send=1
过滤ip地址
export addr= /sbin/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

2、在conf下创建mon.sh

编辑告警系统mon.sh

#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

3.在shares创建load.sh

3.1编辑监控项目load.sh

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 k_weill@163.com "$addr_load:$load" cat ../log/lo<br/>fi<br/>echo "date +%T` load is $load"

3.2在shares再创建一个502.sh

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"

3.3创建一个shell项目-告警系统disk.sh

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/13528516/2107508

配置告警系统主脚本main.sh mon.sh load.sh 502.sh disk.sh相关推荐

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

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

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

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

  3. Spring Boot 打包不同环境配置与 Shell 脚本部署

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 本篇和大家分享的是 Spring Boot 打包并结合 S ...

  4. 【postgres】4、安装、配置、主备、归档

    文章目录 一.安装部署pg11.5 1.1 create db 1.1.1 编译安装建库,需包含文档及所有contrib 1.1.1.1 源码安装 1.1.1.2 yum安装 apt源设置 依赖 提前 ...

  5. java 打包xml脚本_springboot打包不同环境配置与shell脚本部署

    本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assembly-plu ...

  6. php和nginx安装脚本,Nginx + PHP 配置和启动脚本

    Nginx + PHP 配置和启动脚本,很实用 # nginx.conf server { listen 8080 ; server_name localhost; location / { root ...

  7. Zabbix 配置钉钉脚本告警(4)

    title: Zabbix 配置钉钉脚本告警(4) date: 2018-12-10 11:50:21 tags: Zabbix categories: Zabbix copyright: true ...

  8. 1-4 NodeJS的安装之配置可执行脚本

    NodeJS配置可执行脚本 首先,了解一下,模块安装本地和安装全局的区别. 全局: 1.所有的项目都可以使用这个模块 劣势:(1)容易导致版本冲突 (2)不能基于commonJS模块规范,调取使用 就 ...

  9. 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )

    文章目录 一.AspectJ 下载 二.拷贝 aspectjrt.jar 到 Android Studio 三.配置 Gradle 和 Gradle 插件版本 四.配置 Gradle 构建脚本 一.A ...

最新文章

  1. mongodb重命名集合、数据库
  2. vs2017 +CUDA 9.0配置
  3. 让服务器apache/iis/nginx支持.apk/ipa文件下载
  4. 简述计算机的网络技术,简述新式计算机网络技术及应用
  5. boost::coroutine模块实现相同的边缘的测试程序
  6. iMac建立到服务器的反向ssh
  7. logback 的 access 模块
  8. BZOJ1509: [NOI2003]逃学的小孩(树的直径)
  9. ElastciSearch简单总结(笔记)
  10. 自定义 Spark item 的渲染器
  11. 数据库主从数据一致性的几种解决方案
  12. sparksql读取mysql表的两种方式
  13. GitLab版本管理(转)
  14. 2012—2018年软考中级软件设计师历年真题
  15. 【项目管理】启动 - 项目启动会议
  16. java学生成绩管理系统文库,基于JAVA的学生成绩管理系统的设计与实现
  17. java计算机毕业设计O2O生鲜果蔬电商设计与实现(附源码、数据库)
  18. fzyzojP3580 -- [校内训练-互测20180315]小基的高智商测试
  19. 智慧城市同城小程序V4_1.0.86后端+双前端
  20. Java 8 新特性|Collectors.joining()

热门文章

  1. python 随机生成密码
  2. 我看过的SDN方面的好文章
  3. LeetCode-笔记-112、路径总和
  4. 2020-10-26runtime error: member access within null pointer of type ‘struct ListNode‘ (solution.cpp)错
  5. reg类型变量综合电路_verilog中reg和wire类型的区别
  6. html完整表格结构,正确认识html表格(table)的结构
  7. java实现最长连续子序列_最长公共子序列/最长公共子串 Python/Java实现
  8. Elasticsearch入常用RESTful API总结
  9. oracle个性化,Oracle:个性化营销成功的五细则
  10. python读中文文本_python读取中文txt文本