zabbix电话告警V1
最近决定将夜班值班人员取消,夜里告警采用机器人电话通知。总结一下这么几个情况,有问题还请指出,希望也能给大家多一个思路。
V1做的太糙了,预计年初上V2
一、用谁家的服务
费用我没有太关注,主要就是看了哪个简单一些。
国内:
问了几家国内云平台的客服,他们都需要公司的营业执照,我直接就选择了放弃
国外:
Nexmo,这是我们现在用的,第一次成功打出电话用的就是他,后来直接选择他了。网上对他的介绍也很多,大家可以去看看,直接调用,不需要向他们提供多余的信息,付款也是支持paypal,所以很方便
二、思路
1、zabbix端:
将符合告警条件的内容,通过Action下发到服务器中日志。
2、内容处理
将告警的内容进行文本化,最后以curl的形式,访问电话url
3、判断接口
一个中间接口,这个接口会对发过来的内容进行判断,在30分钟内,相同主机组的主机,将不会被进行二次告警,因为如果是大规模的告警,很有可能打爆你的电话
三、具体的优化和操作
1、zabbix端:
在zabbix的action对需要告警的内容做一个划分,我们这里只对“High”级别才会触发下发内容
其中的"Default message"很关键,他可以有效的帮助我简化对文本的操作
2、内容处理
将下发的内容进行格式化,将多余的空格清理掉;
cat ${logs_path}ss.log | awk -vstart=$start_time -vend=$end_time -F'^' 'start<=$1 && $1<=end {print $0}' | awk '{gsub(/\r[[:blank:]]|[[:blank:]]/,"")}1' > ${alertlogs_path}format$(date +"%Y%m%d%H%M").log
通过切割后的日志,查看triggerid,从zabbix的数据库中提出groupid;
for triggerid in $(awk -F ^ '{print $2}' /usr/local/zabbix_ora/alertscripts/alertshell_dir/alertlog_dir/format$(date +"%Y%m%d%H%M").log )
do
su - oracle <<!
sqlplus -S user/passwd@$IP:1521/zabbix << EOF
set heading off
set feedback off
set pagesize 0
set verify off
set termout off
spool ${alertlogs_path}groupid$(date +"%Y%m%d%H%M").log append
select '${triggerid}^'||groupid from hosts_groups where hostid = (select hostid from items where itemid = (select itemid from functions where triggerid = $triggerid));
spool off
EOF
exit
!
done
将处理的文本和group中的trigger相同的行输出;
awk -F '^' 'NR==FNR{a[$2]=$0;next}{print a[$1]"^"$2}' ${path}format$(date +"%Y%m%d%H%m").log ${path}groupid$(date +"%Y%m%d%H%M").log | awk '{gsub(/[[:blank:]]/,"",$0);print $0}' > ${path}formatmethod.log
将log转换为可执行的语句,并执行
cat /dev/null > transitionkey.sh
for line in `cat ${path}formatmethod.log`
do
echo "${line}" | awk -F ^ '{print "curl '\''$URL="$2"&alertGroupNumber="$6"&alertSummary="$4"&alertDetail="$5"&alertAction=T'\''"}' >> transitionkey.sh
done
最新文章
- angularjs学习使用分享
- 机器学习之寻找KMeans的最优K
- Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器
- 点击空白处隐藏div-阻止事件冒泡
- How to implement an algorithm from a scientific paper
- php CI框架nginx 配置
- Asp.net页面无刷新请求实现
- tomcat 6 不支持jsf2.2,仅支持jsf2.0及以下版本
- System Operations on AWS - Lab 4W - Monitoring (Windows)
- app 测试点
- VS2008+Qt 项目目录
- DOM中的动态NodeList与静态NodeList
- Wise Registry Cleaner Pro(智能注册表清理) V9.31 绿色版
- 单独创建一个Android Test Project 时junit 的配置和使用
- 如何优雅的设计React组件
- 分布式事务之如何基于RocketMQ的事务消息特性实现分布式系统的最终一致性?
- leetcode刷题--两数之和(简单)
- 批量备份数据库脚本(PowerShell版)
- Oracle 数据库逻辑结构2.md
- python基础之 异常处理和logging模块