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邮箱是我们在用户里面定义的邮件告警媒介。”邮件“是作为我们脚本里面的分隔符。

最终图像展示效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值