Zabbix数据查询技巧分享:快速找出zabbix的sql

简介: Zabbix数据查询技巧分享:快速找出zabbix的sql


写在开篇

当zabbix监控的体量上去后,数据量就会非常大,在web页面上总是查询很慢、甚至查询失败时。又或者,当其他用户向你提出一些查询需求,特别是在web页面很难做到的个性化查询时,那么就要编写查询sql了。本篇不是sql教程,而是分享如何快速获得查询zabbix数据的sql语句,并在其基础上改造成适合你的sql。

查询需求

当用户向你提出这样一个需求,需要查询某台主机的所有监控项、监控key、触发器名称以及告警级别。这时候,你可能第一时间就是要登录到数据库去看所涉及到的表的表结构、搞清楚他们之间的关系,然后再写个多表关联查询的sql语句,如果你对zabbix的表非常熟悉,可能搜的一下就搞定了。那要是不熟悉呢?实话说,监控项和触发器的关系,我就找了大半天(尴尬...)。按正常想法,肯定涉及到triggers表,但看了triggers的表结构,又特么跟items表没关系。那我就想,肯定还有一张中间表,找了大半天没找到,最后发现这张中间表的名字叫做functions,我了个去。特么叫这个名字。。。我。。。一万匹草泥马奔腾而过。。。打死我都没想到,是这个中间表,尴尬。

SQL> desc functions;
Name       Type           Nullable Default Comments 
---------- -------------- -------- ------- -------- 
FUNCTIONID NUMBER(20)                               
ITEMID     NUMBER(20)                               
TRIGGERID  NUMBER(20)                               
NAME       NVARCHAR2(12)  Y        ''               
PARAMETER  NVARCHAR2(255) Y        '0'

技巧实战

结合我踩过的坑,以及依托用户侧的查询需求,那么正式分享一下我是怎么快速解决这个需求的。好了,废话不说,开撸!!!(O(∩_∩)O 小撸怡情,大撸伤身啊!)

  1. 首先开启调试模式

  1. 然后随便找一台主机并进入触发器

  1. 接着创建一个测试的触发器

  1. 触发器名称随便给就好,然后添加表达式

  1. 随便选个监控项

  1. 最后添加这个触发器

  1. 接着把调试模式框框中的sql都复制到文本文件里,方便等会查找

  1. 搜索刚才创建的触发器名称test-a,找到相关的sql

  1. 将原滋原味的sql拿到PLSQL Developer 执行一下看看(我的是oracle环境)

  1. 根据实际需求改造查询sql

接下来就是慢慢改造这条sql了,本篇只是分享如何快速获得zabbix的sql,不讲改造的过程,下面我直接分享出改造后的sql,以及查询结果。

改造后的sql

select data.host "主机", data.name "监控项", data.key_ "监控项KEY", data.description "触发器名称", data.alert_level "告警级别" 
FROM (
SELECT
h.host,
i.name,
i.key_,
t.description,
CASE t.priority
  WHEN 0 THEN
  '未分类'
  WHEN 1 THEN
  '信息'
    WHEN 2 THEN
  '警告'
    WHEN 3 THEN
  '一般严重'
    WHEN 4 THEN
  '严重'
    WHEN 5 THEN
  '灾难'
  ELSE
  '未知的告警级别'
END AS alert_level
FROM triggers t,functions f,items i,hosts h WHERE f.triggerid=t.triggerid AND f.itemid=i.itemid AND h.hostid=i.hostid AND h.host='Zabbix server'
) data;

查询结果

写在最后

好了,本篇分享到此结束,如果您有更好、更快速的方法可以私信我,一起交流、学习、进步。

相关文章
|
16天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
83 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
23天前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
34 8
|
29天前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
53 4
|
1月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
1月前
|
SQL 存储 缓存
如何优化SQL查询性能?
【10月更文挑战第28天】如何优化SQL查询性能?
120 10
|
1月前
|
SQL 关系型数据库 MySQL
|
2月前
|
SQL 数据库 开发者
功能发布-自定义SQL查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
|
2月前
|
SQL 数据管理 数据库
SQL语句实例教程:掌握数据查询、更新与管理的关键技巧
SQL(Structured Query Language,结构化查询语言)是数据库管理和操作的核心工具
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
1月前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
29 0

推荐镜像

更多