任务内容:
获取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. Oracle表之间关联更新

    经常会遇到一个表需要根据另一个表数据来更新数据,总结了核心的sql脚本命令如下: A表如下x        y--------------ka       dakb       dbkc       ...

  2. HEOI2013SAO

    题目描述 给定一个\(DAG\),问这个\(DAG\)有多少种拓扑序. 题解 我们首先需要设计一个能够比较好的转移的状态. 我们可以设\(dp[i][j]\)表示第i个点在当前\(dp\)的子图中拓扑 ...

  3. 一加X 手机变砖过程

    很久无使用的一台手机,因需要获得ROOT权限而使用kingroot这款软件,无法获得root权限.而这个软件会导致手机无法进入ERCOVERY模式,后果是你没有办法刷入别的rom,而kingroot的 ...

  4. python第七天

    复习: 1.深浅拷贝 值拷贝:直接赋值 = 号, 列表中的任何值发生改变,第二个中的值都会随之改变浅拷贝:通过copy()方法 ls2 = ls.copy(),第一个中存放的值的地址没有改变, 但内部 ...

  5. centos7 部署安装gitlab服务器

    概念: git 是一种版本控制系统,是一个命令,是一种工具 gitlib 是用于实现git功能的开发库 github 是一个基于git实现的在线代码托管仓库,包含一个网站界面,向互联网开放 gitla ...

  6. 操作系统层面聊聊BIO,NIO和AIO (epoll)

    BIO 有了Block的定义,就可以讨论BIO和NIO了.BIO是Blocking IO的意思.在类似于网络中进行read, write, connect一类的系统调用时会被卡住. 举个例子,当用re ...

  7. java压缩文件或文件夹并导出

    java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...

  8. 一段充满bug的R程序,慎入 ...

    twitter的AnomalyDetection  官网效果图如下: 尝试写了下面这个R程序: get_specify_df <- function(start_ts,stop_ts,categ ...

  9. 图解TCP/IP

    序言 ----

  10. [Luogu P2296][NOIP 2014]寻找道路

    emmm交了第8次才过. 这道题目测一道单源最短路问题,因此dijkstra或者spfa板子先准备好.因为题中对最短路有限定: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在满足条件1的情 ...