zoukankan      html  css  js  c++  java
  • zabbix 自定义脚本监控activemq

    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. 触发器对应得操作里添加远程执行脚本

  • 相关阅读:
    hdu 1151
    DAG的最小路径覆盖和二分图的最大匹配
    二部图 最小点覆盖集与最大匹配的关系
    sdut 2151
    sdut Emergency
    作业
    Node.prototype.contains
    微博登录
    markdown
    Object.observe
  • 原文地址:https://www.cnblogs.com/Jack1023/p/10913124.html
Copyright © 2011-2022 走看看