当前位置: 首页 > news >正文

统计zabbix指定日期内的告警数量

问题描述:
知名企业A公司的运维人员小智,需要对zabbix发生的告警数量进行统计。
解决方案:
1、数据库查询方案,调整时间范围即可查询告警相应数据:

查询最近30天zabbix告警数据
SELECTa.hostid ,a.`host`,a.`name` AS hostnname,b.`name` AS groupname,FROM_UNIXTIME( e.clock ) AS eventtime,e.`name`,e.severity 
FROMhosts aJOIN hosts_groups c ON a.hostid = c.hostidJOIN hstgrp b ON b.groupid = c.groupid AND b.NAME LIKE '%***%'JOIN items d ON a.hostid = d.hostid AND d.flags <> 1 AND d.flags <> 2JOIN ( SELECT itemid, triggerid FROM functions GROUP BY itemid, triggerid ) f ON d.itemid = f.itemidJOIN events e ON f.triggerid = e.objectid AND e.`value` = 1 AND e.clock in (select e.clock from events e where TIMESTAMPDIFF(day,from_unixtime(e.clock,'%Y-%m-%d'),current_date)<30)ORDER BY e.clock

2、使用zabbix api获取

import requests
import json
from datetime import datetime# Zabbix API相关信息
zabbix_url = 'http://your-zabbix-server/zabbix/api_jsonrpc.php'
zabbix_username = 'your_username'
zabbix_password = 'your_password'# 登录Zabbix并获取认证令牌
def zabbix_login():data = {'jsonrpc': '2.0','method': 'user.login','params': {'user': zabbix_username,'password': zabbix_password,},'id': 1,}response = requests.post(zabbix_url, json=data, headers={'Content-Type': 'application/json'})result = response.json()if 'result' in result:return result['result']else:raise Exception("Zabbix login failed")# 获取指定日期范围内的告警数量
def get_alert_count(start_date, end_date):token = zabbix_login()data = {'jsonrpc': '2.0','method': 'alert.get','params': {'output': 'extend','time_from': datetime.strptime(start_date, '%Y-%m-%d').timestamp(),'time_till': datetime.strptime(end_date, '%Y-%m-%d').timestamp(),'selectAcknowledges': 'extend','sortfield': 'clock','sortorder': 'DESC',},'auth': token,'id': 2,}response = requests.post(zabbix_url, json=data, headers={'Content-Type': 'application/json'})#查询数据在此result = response.json()if 'result' in result:return len(result['result'])else:raise Exception("Failed to retrieve alert count")# 指定日期范围
start_date = '2024-01-01'
end_date = '2024-01-10'# 获取告警数量
alert_count = get_alert_count(start_date, end_date)
print(f"Alert count from {start_date} to {end_date}: {alert_count}")

请确保替换代码中的以下值:

‘http://your-zabbix-server/zabbix/api_jsonrpc.php’:Zabbix服务器的API URL。
‘your_username’:用于登录Zabbix的用户名。
‘your_password’:用于登录Zabbix的密码。
此代码登录到Zabbix,获取认证令牌,然后使用alert.get方法获取指定日期范围内的告警数量。注意,Zabbix的API调用可能会受到Zabbix服务器配置和权限的影响,确保用户具有足够的权限执行相应的API调用。

相关文章:

  • C陷阱和缺陷--第二章 “语法陷阱”
  • MyBatis---初阶
  • 【C语言】中的位操作符和移位操作符,原码反码补码以及进制之间的转换
  • Leetcode刷题笔记题解(C++):203. 移除链表元素
  • Spring Boot项目中TaskDecorator的应用实践
  • 第六十四天 服务攻防-框架安全CVE复现Apache shiroApache Solr
  • 如何使用Coded UI Test对Webpage进行自动化测试
  • FlashMeeting(基于FFmpeg+openCV)视频语音通讯系统
  • Java 爬虫 jvppeteer
  • 美易平台:全球金融市场一周前瞻G20会议至美联储纪要,关键事件点评
  • 【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——自我介绍(英文)
  • .net 微服务 服务保护 自动重试 Polly
  • Java 面向对象进阶 10 多态中调用成员的特点(黑马)
  • 代码随想录刷题第38天
  • Docker中如何删除某个镜像
  • @angular/forms 源码解析之双向绑定
  • css系列之关于字体的事
  • Effective Java 笔记(一)
  • HTML中设置input等文本框为不可操作
  • httpie使用详解
  • Java知识点总结(JavaIO-打印流)
  • spring boot下thymeleaf全局静态变量配置
  • Vue2 SSR 的优化之旅
  • Web标准制定过程
  • Xmanager 远程桌面 CentOS 7
  • 汉诺塔算法
  • 源码安装memcached和php memcache扩展
  • Semaphore
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​Linux·i2c驱动架构​
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (a /b)*c的值
  • (day 12)JavaScript学习笔记(数组3)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (笔试题)分解质因式
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)winform之ListView
  • .net CHARTING图表控件下载地址
  • .NET Core 2.1路线图
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net Winform开发笔记(一)
  • .net 后台导出excel ,word
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .so文件(linux系统)
  • @WebService和@WebMethod注解的用法
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ 蓝桥杯Web真题 ]-布局切换
  • [] 与 [[]], -gt 与 > 的比较
  • [1127]图形打印 sdutOJ