任务内容:
获取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邮箱是我们在用户里面定义的邮件告警媒介。”邮件“是作为我们脚本里面的分隔符。
最终图像展示效果

搜索

复制

Zabbix中获取各用户告警媒介分钟级统计的更多相关文章

  1. SpringBoot中获取微信用户信息从未如此简单!

    前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...

  2. Python 操作Zabbix API 获取ERROR级别告警信息并打印

    1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...

  3. 日志监控文件中获取ip,每一分钟统计一次,超过200次的计入黑名单

    一.日志文件access.log #.要从日志里面找到1分钟之内访问超过200次的 #.每分钟都运行一次 #.读取文件内容,获取到ip地址 #.把每个ip地址存起来{} #.判断ip访问的次数是否超过 ...

  4. 从session中获取当前用户的工具类

    package cn.crmx.crm.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Ht ...

  5. SAP中获取当前用户相关信息的两个函数

    函数名:TH_USER_LIST作用:可以得到SM04界面显示样式的表. 函数名:TH_USER_INFO作用:可以得到当前特定用户的机器名.当前活动窗口数.IP地址等信息

  6. SpringSecurity如何在代码中获取认证用户信息

    ⒈ public Object getCurrentUser(){ return SecurityContextHolder.getContext().getAuthentication(); } ⒉ ...

  7. 分布式系统监视zabbix讲解三之用户和用户组--技术流ken

    概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...

  8. 分布式系统监视zabbix讲解三之用户和用户组

    概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...

  9. java程序中获取kerberos登陆hadoop

    本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...

随机推荐

  1. 轻松理解 Spark 的 aggregate 方法

    2019-04-20 关键字: Spark 的 agrregate 作用.Scala 的 aggregate 是什么 Spark 编程中的 aggregate 方法还是比较常用的.本篇文章站在初学者的 ...

  2. Linux之vi编辑器

    vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.可是会用的有多少呢.下面介绍一下vi编辑器的简单用法和部分命令.让你在Linux系统中畅行无阻. 基本上vi可以分为三种状态 ...

  3. Dynamics CRM 日常使用JS整理(二)

    BPF(Business Process Flow)相关的JS 为Stage添加changed或者selected事件: function fnOnLoad() { Xrm.Page.data.pro ...

  4. DirectX11--HLSL编译着色器的三种方法

    前言 本教程不考虑Effects11(FX11),而是基于原始的HLSL. 目前编译与加载着色器的方法如下: 使用Visual Studio中的HLSL编译器,随项目编译期间一同编译,并生成.cso( ...

  5. python之路(10)类的内置函数

    目录 isinstance()和issubclass() __setitem__.__getitem__和__delitem__ __str__和__reper__ __format__ __slot ...

  6. HBase读写的几种方式(二)spark篇

    1. HBase读写的方式概况 主要分为: 纯Java API读写HBase的方式: Spark读写HBase的方式: Flink读写HBase的方式: HBase通过Phoenix读写的方式: 第一 ...

  7. Mysql查询库、表存储量(Size)

    Mysql查询库.表存储量(Size) 1.要查询表所占的容量,就是把表的数据和索引加起来就可以了. SELECT SUM(DATA_LENGTH) + SUM(INDEX_LENGTH) FROM ...

  8. JGUI源码:开发中遇到的问题(11)

    1.IE8下浏览器下css body边缘要留一个像素,如果不留的话,很有可能看不到最边缘的像素. 2.同一种颜色在深色背景和浅色背景下给人的感觉不一样,在深色背景下,给人感觉特别亮,所以深色背景下的颜 ...

  9. Window7 定制 Explore中的右键菜单

    win+R 命令  运行 regedit ,打开注册表 在  HKEY_CLASSES_ROOT\*\shell\VisualCode下创建针对文件的新增命令 command 在HKEY_CLASSE ...

  10. Technocup 2019 - Elimination Round 1

    http://codeforces.com/contest/1030 B. Vasya and Cornfield 判断点是否在矩形内(包括边界) 把每条边转化为一个不等式 public static ...