zoukankan      html  css  js  c++  java
  • Zabbix中获取各用户告警媒介分钟级统计

    任务内容:
    获取Zabbix各用户告警媒介分钟级统计,形成趋势图,便于观察各用户在每分钟收到的告警数量,在后续处理中,可以根据用户在某时间段内(例如3分钟内)收到的邮件总数,来判断是否有告警洪水的现象,以便于我们及时对相关现象做出处理。注释掉短信告警语句,然后产生一次电话告警事件。
    任务分析:
    查阅完相关资料之后,没有办法直接从zabbix现有的配置中获取到相关的统计值。就只能从zabbix的数据库中获取,毕竟太阳底下无新鲜事,收到的这些告警邮件,也是需要相关底层数据库支撑着。从数据库中找到zabbix.alerts表符合我们收集数据的基本要求。

     

    从alerts中,可以知道到收件人(sendto),触发器时间(Trigger DATE),主题(subject),从这三项数据,经过加工就可以获取zabbix各用户在每分钟收到的告警事件数量。注意:触发器时间(Trigger DATE),这项数据不是独立的mysql字段,而是message字段里面的数据。经过分析该message数据的来源模板是在zabbix的动作里面设置的。如下图

    因此:要想正确获取到相关的时间统计,就必须在动作模板里面包含有标题:{TRIGGER.STATUS},消息内容:{Trigger.DATE}
    邮件事件统计脚本内容:
    [root@zabbix scripts]# cat userEmailAlertCount.py
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #此脚本用于从zabbxi数据库中获取各个用户的告警媒介,并统计上一分钟告警条数为了获取数据的准确性,只能获取上一分钟告警事件的统计值`
    #2018.08.31
    #jmucai
    import time
    import datetime
    import sys
    import MySQLdb
    #获取当前日期
    day = time.strftime("%Y.%m.%d", time.localtime())
    #获取当前时间的上一分钟时间
    min = (datetime.datetime.now()+datetime.timedelta(minutes=-1)).strftime("%H:%M")
    #获取脚本传入的参数
    userAlertType=sys.argv[1]
    if "邮件" in userAlertType:
    userName = userAlertType.split("邮件")[0]
    userEmail = userAlertType.split("邮件")[1]
    sqlPattern = "select alertid from alerts where message like" +
    ' "%' + day + "%" + min + ':%"' + " and sendto = " + '"' + userEmail + '"' + " and subject like " + '"PROBLEM:%"'
    #print sqlPattern
    # 打开数据库连接
    db = MySQLdb.connect("localhost", "zabbix", "hskj", "zabbix", charset='utf8' )
     
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
     
    # 使用execute方法执行SQL语句
    userEmailAlertCount = cursor.execute(sqlPattern)
    print userEmailAlertCount
    # 关闭数据库连接
    db.close()
    else:
    print "传入错误的告警媒介参数"
     
    zabbix配置参数:
    #邮件告警统计
    UserParameter=userEmailAlertCount[*],/usr/local/zabbix/scripts/userEmailAlertCount.py $1
     

     

    以邮件告警为例
    名称:自定义监控项目名称
    键值:userEmailAlertCount["名字A邮件zabbix@qq.com"]:这里主要是key值的组成,这里的名字A是我们zabbix用户管理里面的别名(alias),zabbix@qq.com邮箱是我们在用户里面定义的邮件告警媒介。”邮件“是作为我们脚本里面的分隔符。
    最终图像展示效果
  • 相关阅读:
    模板【洛谷P3368】 【模板】树状数组 2
    模板【洛谷P3812】 【模板】线性基
    Java面向对象-多态
    Java常用工具类
    Java常用工具类
    Java static关键字
    MyBatis对象关联查询demo (一对多,多对一)
    将Cmder添加到系统右键菜单中
    IDEA 创建JavaWeb应用打包并发布
    IDEA 调试与打包
  • 原文地址:https://www.cnblogs.com/jmucai/p/9593880.html
Copyright © 2011-2022 走看看