搜索看看
告警通知如何根据告警类型分别处理(shell方式处理)
有时候我们需要根据不同的告警内容,进行不同处理,比如进程告警和主机告警需要分别处理,下面以shell脚本为例说明
我们在已经配置好的告警脚本基础上,进行如下改造,下面脚本仅为模板参考,具体处理需要自己填充下
#!/bin/bash # -*- coding: utf-8 -*- ###SCRIPT_NAME:weixin.sh### ###send message from weixin for monitoring### content=$1 #告警内容 content=${content//\ /} time3=$(date "+%H:%M:%S") content="$time3,$content" #content=${content//\,/\\n} #告警信息若需要换行显示,去掉此行注释 echo "告警信息 : $content" #告警内容输出到warn.log文件,测试完成注释掉即可 echo "warn content is : $content" >> ./warn.log #告警内容具体处理如下,具体根据告警内容包含的特有字符串进行判断是什么类型告警,然后进行处理 if [[ $content =~ "当前内存使用率为" ]] then echo "这里书写自己的内存告警处理逻辑......" elif [[ $content =~ "当前系统负载(5分钟)为" ]] then echo "这里书写自己的系统负载(5分钟)告警处理逻辑......" elif [[ $content =~ "当前CPU使用率为" ]] then echo "这里书写自己的CPU告警告警处理逻辑......" elif [[ $content =~ "当前上行传输速率为" ]] then echo "这里书写自己的上行传输速率告警处理逻辑......" elif [[ $content =~ "当前下行传输速率为" ]] then echo "这里书写自己的下行传输速率告警处理逻辑......" elif [[ $content =~ "SMART健康检测结果为" ]] then echo "这里书写自己的磁盘告警SMART处理逻辑......" elif [[ $content =~ "主机磁盘告警" ]] then echo "这里书写自己的主机磁盘告警处理逻辑......" elif [[ $content =~ "CPU当前温度为" ]] then echo "这里书写自己的CPU温度告警处理逻辑......" elif [[ $content =~ "响应状态码为" ]] then #接口下线提醒消息为"服务接口已连续2次检测失败......",恢复消息为"服务接口已恢复......" echo "这里书写自己的服务接口检测告警/恢复处理逻辑......" elif [[ $content =~ "网络设备" ]] then #数通PING下线提醒消息为"网络设备已连续n次PING检测超时或失败......",恢复消息为"网络设备PING已恢复......" echo "这里书写自己的网络设备PING超时告警/恢复处理逻辑......" elif [[ $content =~ "SNMP设备" ]] then #SNMP设备下线提醒消息为"SNMP设备......可能已下线",恢复消息为"SNMP设备监测已恢复......" echo "这里书写自己的SNMP设备下线告警/恢复处理逻辑......" elif [[ $content =~ "主机可能已下线" ]] || [[ $content =~ "主机已恢复上线" ]] then echo "这里书写自己的主机下线/恢复告警处理逻辑......" elif [[ $content =~ "进程可能已下线" ]] || [[ $content =~ "进程已恢复上线" ]] then echo "这里书写自己的进程下线/恢复告警处理逻辑......" elif [[ $content =~ "docker可能已下线" ]] || [[ $content =~ "docker已恢复上线" ]] then echo "这里书写自己的docker下线/恢复告警处理逻辑......" elif [[ $content =~ "端口telnet不通" ]] || [[ $content =~ "端口已恢复上线" ]] then echo "这里书写自己的端口telnet不通告警/恢复处理逻辑......" elif [[ $content =~ "文件防篡改监测异常" ]] || [[ $content =~ "文件防篡改监测已恢复" ]] then echo "这里书写自己的文件防篡改异常/恢复告警处理逻辑......" elif [[ $content =~ "数据库连接失败" ]] || [[ $content =~ "数据库已恢复上线" ]] then echo "这里书写自己的数据库下线/恢复告警处理逻辑......" elif [[ $content =~ "数据表告警" ]] then echo "这里书写自己的数据表告警处理逻辑......" elif [[ $content =~ "日志监控告警" ]] then echo "这里书写自己的日志监控告警处理逻辑......" elif [[ $content =~ "指令内容" ]] then echo "这里书写自己的下发指令告警处理逻辑......" else echo "告警内容为其他处理......" fi
echo "数据表告警处理......",我们在这里写入我们的处理逻辑