1. 编写获取activemq队列积压消息(check-amq.sh)
#!/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)
UserParameter=amq.Pending_Messages[*],/etc/zabbix/zabbix_agentd.d/check-amq.sh $1
3. 重启zabbix-agent,server端测试获取值是否正常
zabbix_get -s 172.16.1.153 -k "amq.Pending_Messages[test-queues]"
4. 添加监控项item
5. 添加触发器
6. 配置触发器对应得动作
7. 配置故障消息格式
## 故障
主机名称: {HOSTNAME1}
告警名称: {TRIGGER.NAME}
告警级别: {TRIGGER.SEVERITY}
告警时间: {EVENT.DATE} {EVENT.TIME}
检查项: {TRIGGER.KEY1}
当前值: {ITEM.LASTVALUE}
IP地址: {HOST.IP}
## 恢复
主机名称: {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. 触发器对应得操作里添加远程执行脚本