Zabbix 数据库表结构解析

zabbix 数据库表结构解析


监控表结构详解

  • hosts,存储被监控的机器的信息,表结构如下:


  • items




  • hosts_templates,存储机器和模版或者模版和模版之间的关系

    由于模版和机器都存储在 hosts 表中,所以 **hosts_templates 和 hosts 之间可以 hostid 关联也可以通过 templateid 关联。
    interface,存储了所有设备的 ip 和端口的数据。(由于 hosts 表中不仅保存了设备信息还保存了模版信息,所以统计实际监控的设备,此表更加准确)

数据存储表结构详解

  • 将 clock 转化为人性化时间:

报警相关表结构详解

  • triggers







附 functions 表结构:

  • events

例子:

1. 找出某台主机的所有 items , 含有某个 key_的 item , 统计 items 总个数

1
2
3
4
5
SELECT \* FROM HOSTS WHERE hostid=10157;  
SELECT \* FROM items WHERE hostid=10157 AND key\_ LIKE '%agent%';
SELECT COUNT(\*) FROM items;
```
2\. 找出触发trigger次数最多的事件,并按trigger 降序排列。

SELECT a.description, COUNT(*) cnt FROM TRIGGERS a , EVENTS b
WHERE a.triggerid=b.objectid ORDER BY cnt DESC ;

1
2
3
4
5
6
7
8
9
10
11
3\. 从item记录各找出一个value类型为整形,浮点型的key\_。  
统计这两个key\_ 存储在history或者history\_uint 某一个时间段(比如2017/06/12)
的最大值,最小值,平均值,然后与 trends 或者 trends\_unint 中相应时间段做对比
```
整型
SELECT \* FROM items WHERE value\_type=3 AND hostid=10157 LIMIT 1;
SELECT \* FROM history\_uint a,trends\_uint b WHERE a.clock=b.clock AND a.itemid=b.itemid LIMIT 1;

浮点型
SELECT \* FROM items WHERE value\_type=0 AND hostid=10157 LIMIT 1;
SELECT \* FROM history a,trends b WHERE a.clock=b.clock AND a.itemid=b.itemid LIMIT 1;

4. 统计 Zabbix Dashboard 中 triggers 总数的来源。

1
2
3
4
5
6
7
8
9
10
11
SELECT  count(\*)
  FROM TRIGGERS
WHERE triggerid IN
    (SELECT triggerid
    FROM functions
    WHERE itemid IN (SELECT itemid
       FROM items
       WHERE hostid IN (SELECT hostid FROM interface)
       AND key\_ NOT LIKE '%#%'
       AND key\_ NOT LIKE '%discovery%'
       AND STATUS != 1));

说明:
通过之前对 zabbix 表结构的学习,我们知道,表 triggers 和 functions 相关联,而 functions 和 items 相关联,那么,要对 triggers 做统计,就需要从这三张表下手。
关键就是对 items 表中的数据做出筛选,key_中带 “#” 和 “discovery” 的和 status=1(不可用状态)都要排除,这样就统计出来了。