之前的文章中已經實現了zabbix 郵件告警和微信告警,生產環境上測試出消息抵達很及時,但是!萬一服務器在大半夜突發故障微信、郵件這些通知都是廢物了,大晚上還能聽到微信通知嗎?顯然不可能(我的某朋友就因為這事到處找語音告警,推薦onealert 給他后實現了晚上電話告警)。
onealert 官方有提供兩種方式的文檔,一個是一鍵安裝包,但是顯然對於自定義安裝zabbix的情況不太合適,使用通用安裝方式實現了對接: http://wiki.110monitor.com/integration/zabbix-manual.html
官方的這篇文檔有個坑,這個agent是需要手動啟動的!需要運行 alert-agent/bin/start.sh 腳本啟動官方提供的客戶端。
- [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 服務器。
- [root@aliyun ~] cd /usr/local/zabbix/alertscripts
- [root@aliyun alertscripts] vim onealert.sh
- #!/bin/bash
- POSTURL="http://api.110monitor.com/alert/api/event"
- onea=/tmp/onealert
- echo "$1" >$onea
- curl -H "Content-type: application/json" -X POST -d @$onea $POSTURL
- [root@aliyun alertscripts] chown zabbix.zabbix onealert.sh
- [root@aliyun alertscripts] touch /tmp/onealert
- [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
- {
- "app": "xxxxxxxxxxxxxxxxxxxxx",
- "eventId": "{EVENT.ID}",
- "eventType": "trigger",
- "alarmName": "{TRIGGER.NAME}",
- "entityName": "{HOSTNAME}",
- "entityId": "{IPADDRESS}",
- "priority": 3,
- "alarmContent": "{IPADDRESS} {ITEM.NAME}:{ITEM.VALUE}"
- }
Recovery subject 填寫resolve
- {
- "app": "xxxxxxxxxxxxxxxxxxxxx",
- "eventId": "{EVENT.ID}",
- "eventType": "resolve",
- "alarmName": "{TRIGGER.NAME}",
- "entityName": "{HOSTNAME}",
- "entityId": "{IPADDRESS}",
- "priority": 3,
- "alarmContent": "{IPADDRESS} {ITEM.NAME}:{ITEM.VALUE}"
- }
好了,配置完了,模擬故障測試一下看看情況,如果在onealert 的告警中已經看到告警任務,電話告警配額也已經消耗了一條(免費用戶每月50個電話通知),但是沒有電話打進來,可以換個號碼測試一下,之前一個朋友測試到電信號碼不成功,換移動號后正常了。