1. 編寫獲取activemq隊列積壓消息(check-amq.sh)python
#!/bin/bash QUEUENAME=$1 MQ_IP='172.16.1.56' curl -uadmin:admin http://${MQ_IP}:8161/admin/queues.jsp 2>/dev/null| grep -A 5 "${QUEUENAME}</a></td>"|awk -F '<' '{print $2}'|sed 's/td>//g'|grep '^[0-9]'|head -1
2. zabbix配置加入獲取值(userparameter_amq.conf)json
UserParameter=amq.Pending_Messages[*],/etc/zabbix/zabbix_agentd.d/check-amq.sh $1
3. 重啓zabbix-agent,server端測試獲取值是否正常api
zabbix_get -s 172.16.1.153 -k "amq.Pending_Messages[test-queues]"bash
4. 添加監控項itemapp
5. 添加觸發器curl
6. 配置觸發器對應得動做jsp
7. 配置故障消息格式post
## 故障測試
主機名稱: {HOSTNAME1}
告警名稱: {TRIGGER.NAME}
告警級別: {TRIGGER.SEVERITY}
告警時間: {EVENT.DATE} {EVENT.TIME}
檢查項: {TRIGGER.KEY1}
當前值: {ITEM.LASTVALUE}
IP地址: {HOST.IP}url
## 恢復
主機名稱: {HOSTNAME1}
告警名稱: {TRIGGER.NAME}
告警級別: {TRIGGER.SEVERITY}
告警時間: {EVENT.DATE} {EVENT.TIME}
恢復時間: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
故障時長: {EVENT.AGE}
檢查項: {TRIGGER.KEY1}
當前值: {EVENT.RECOVERY.VALUE}
IP地址: {HOST.IP}
8. 配置釘釘報警
a. server端 自定義腳本(默認自定義腳本存放路徑:/usr/lib/zabbix/alertscripts/DingAlert.py)
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author: nickli import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "https://oapi.dingtalk.com/robot/send?access_token=#釘釘機器人token信息" def dingAlert( text, mobile): json_text= { "msgtype": "text", "at": { "atMobiles": [ mobile ], "isAtAll": False }, "text": { "content": text } } print(requests.post(api_url,json.dumps(json_text),headers=headers).content) if __name__ == '__main__': text = sys.argv[1] mobile = sys.argv[2] dingAlert(text, mobile)
b. 添加告警媒介
c. 觸發器對應得動做添加告警媒介
9. 添加告警執行腳本
a. 修改zabbix-agentd.conf(配置可執行腳本)
EnableRemoteCommands=1
b. 自定義腳本
#!/bin/bash _date=`date +"%Y-%m-%d %H:%M:%S"` _jps="/usr/local/jdk1.8.0_101/bin/jps" _jstack="/usr/local/jdk1.8.0_101/bin/jstack" _Pid=`${_jps} |grep "activemq.jar"|awk '{print $1}'` function jstack_info () { echo ${_date} > /tmp/activemq_dump.log ${_jstack} -F -m ${_Pid} >> /tmp/activemq_dump.log } jstack_info
c. 將zabbix用戶加入到sudo用戶
zabbix ALL=(ALL) NOPASSWD:/bin/bash
10. zabbix-server 手動測試自定義腳本(默認得超時是3s,客戶端和服務端都修改參數Timeout=10)
zabbix_get -s 172.16.1.153 -k "system.run[sudo /bin/bash /etc/zabbix/zabbix_agentd.d/jstack_info.sh]"
11. 觸發器對應得操做裏添加遠程執行腳本