zabbix 语音告警

之前的文章中已经实现了zabbix 邮件告警和微信告警,生产环境上测试出消息抵达很及时,但是!万一服务器在大半夜突发故障微信、邮件这些通知都是废物了,大晚上还能听到微信通知吗?显然不可能(我的某朋友就因为这事到处找语音告警,推荐onealert 给他后实现了晚上电话告警)。
  onealert 官方有提供两种方式的文档,一个是一键安装包,但是显然对于自定义安装zabbix的情况不太合适,使用通用安装方式实现了对接: http://wiki.110monitor.com/integration/zabbix-manual.html 
  官方的这篇文档有个坑,这个agent是需要手动启动的!需要运行 alert-agent/bin/start.sh 脚本启动官方提供的客户端。

  1. [root@aliyun bin] /usr/local/zabbix/alertscripts/alert-agent/bin/start.sh &

  如果是这样的方式何必写这文章呢,这里是自己写了个非常非常简单的脚本通过对接开放API 推送消息进行告警(类似微信方式):

一:添加REST API应用获取key:

1.添加REST API应用 后可以获取到对应的key 并且下方有事例信息,看了下流程就是把一段json 内容通过post 方式传递到API 服务器即可。

2.配置通知策略为电话告警:

二:zabbix 配置:

这里基本和邮件报警类似: 《zabbix 配置邮件报警 》
1. 在alertscripts 目录创建脚本文件:
  zabbix 传入参数message ,脚本获取参数写入到文件onealert 中暂存,curl 使用post 方式将文件onealert 中的值传到API 服务器。

  1. [root@aliyun ~] cd /usr/local/zabbix/alertscripts
  2. [root@aliyun alertscripts] vim onealert.sh
  3. #!/bin/bash
  4. POSTURL="http://api.110monitor.com/alert/api/event"
  5. onea=/tmp/onealert
  6. echo "$1" >$onea
  7. curl -H "Content-type: application/json" -X POST -d @$onea $POSTURL
  8.  
  9. [root@aliyun alertscripts] chown zabbix.zabbix onealert.sh
  10. [root@aliyun alertscripts] touch /tmp/onealert
  11. [root@aliyun alertscripts] chown zabbix.zabbix /tmp/onealert

2. 配置zabbix 报警媒介和动作:
  这里的参数只填写{ALERT.MESSAGE} 即可


3.配置用户通知:
  收件人 也就是Send to 随意填写,因为收件人信息稍后会写到message 里面,通知时间这里,语音告警一般用于晚上,所以可以设置为00:00-07:00时间段。


4.配置动作:
  app 处填写应用KEY ,详细参数请参看官方文档: http://wiki.110monitor.com/api/event_api.html 
Default subject 填写trigger

  1. {
  2. "app": "xxxxxxxxxxxxxxxxxxxxx",
  3. "eventId": "{EVENT.ID}",
  4. "eventType": "trigger",
  5. "alarmName": "{TRIGGER.NAME}",
  6. "entityName": "{HOSTNAME}",
  7. "entityId": "{IPADDRESS}",
  8. "priority": 3,
  9. "alarmContent": "{IPADDRESS} {ITEM.NAME}:{ITEM.VALUE}"
  10. }

Recovery subject 填写resolve

  1. {
  2. "app": "xxxxxxxxxxxxxxxxxxxxx",
  3. "eventId": "{EVENT.ID}",
  4. "eventType": "resolve",
  5. "alarmName": "{TRIGGER.NAME}",
  6. "entityName": "{HOSTNAME}",
  7. "entityId": "{IPADDRESS}",
  8. "priority": 3,
  9. "alarmContent": "{IPADDRESS} {ITEM.NAME}:{ITEM.VALUE}"
  10. }



  好了,配置完了,模拟故障测试一下看看情况,如果在onealert 的告警中已经看到告警任务,电话告警配额也已经消耗了一条(免费用户每月50个电话通知),但是没有电话打进来,可以换个号码测试一下,之前一个朋友测试到电信号码不成功,换移动号后正常了。

posted @   地铁昌平线  阅读(1323)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
一:添加REST API应用获取key:二:zabbix 配置:
点击右上角即可分享
微信分享提示