Zabbix数据库共有108个表,表的名称都是复数的。针对Zabbix中的每一个资源,都有一张表与其对应,比如hosts表,items表等。每一张表中都有一个id字段,如hosts表中的hostid,items中的itemid等。而资源之间的关联关系是通过外键来完成的。比如host和item的关联关系,就是在items表中使用hostid与hosts表中的资源进行关联。
hosts
“host”就是一台被监控的对象。Hosts表结构如下:
图1 hosts表
Hostid:唯一标识Host在Zabbix及数据库中的id。不同表之间的关联也要用id。
Proxy_hostid:若启用“proxy-server”架构,才会出现被监控机器的proxy_hostid。
Host:被监控机器的名字。
Dns:DNS的名称。
Useip:是否用ip监控。
Port:监控的端口。
Status:机器目前的状态。“0”为正常监控,“1”为disable。
Disabled_util、error、available、errors_from:这些值Zabbix Poller回去修改的值。
Lastacess:表示proxy最后一次工作的时间。
Ipmi*、snmp*、jmx*为使用这三种监控方式时的监控记录。
hosts_groups
hosts_groups保存了host(主机)与host groups(主机组)的关联关系。
这部分信息可以在我们自己做一些批量查询,例如查询关联到某个主机组的所有设备的IP 、存活状态等,进一步去查询该批量设备的load、IO、mem等统计信息。
我之前做的一个简单的报表就是例如了这部分的信息去查询某个业务线下所有设备的一周统计信息,当然了是在同一个主机组或者模版组才可以的。
表2表结构hosts_groups
Interface
Interface表用于存储每一个host的接口信息,此表与hosts表分离,方便了用户修改信息与管理。
Figure 3Interface表结构
Items
Items表记录了item的所有设置。在Zabbix中,最多的操作就是对items的。如添加监控项、删除监控项、更新监控配置等。Items表结构如下:
图4 items表结构
Key_:items的key,可以理解为在triggers中的进行判断的变量。
Applications
Application表用于存储监控像所属于的应用,applicationid为主键编号,hostid对应与host的id,name用于存储application的名称,flag用于存储application的状态。
图5application表结构
Triggers
Triggers表是Zabbix中关于触发警报时记录的表。Triggers的表结构如下:
图6 triggers表结构
Mappings
Mappings表用于存储的应用状态映射信息,存储数据时会将不同的值、不同的范围对应不同的状态,而用户关心的正是这些状态。
图7 mapping表结构
Expressions
Expressions表用于判断triggers时需要用到的正则表达式,助于合理的进行triggers判断。
图8 expressions表结构
media
media 保存了某个用户的media配置项,即对应的告警方式,如邮件等方式。
图9 media 表结构
Events
每当zabbix server获取一个数据,它就会检查跟这个items相关的trigger,然后无论是否触发action,都会生成一个event。
表10 events表结构
Source:Event可能由多种源头生成,source就记录了Event是由什么事件而生成的。
Object:这个字段记录了和event相关的Zabbix对象。
Objected:根据前面object里的定义,这里可能为triggerid,也可能是discovered hosted。
ns:这个字段是在2.0.0版本加入这个记录的。因为如果只有timestamp,那么这个{ITEM.VALUE}会发生错乱。
Value:和object字段类似,根据source的不同,这里的值有不同的意义。
Actions
actions表记录了当触发器触发时,需要采用的动作。
图11 action表结构
alerts
alerts 表保存了历史的告警事件,可以从这个表里面去做一些统计分析,例如某个部门、某人、某类时间的告警统计,以及更深入的故障发生、恢复时间,看你想怎么用了。
图12 alerts表结构
config
config表保存了全局的参数,前端包括后端也是,很多情况下会查询改表的参数的,例如用户的自定义主题、登陆认证类型等,非常重要。
图13config表结构
functions
function 表时非常重要的一个表了,记录了trigger中使用的表达式,例如max、last、nodata等函数。
但其实这个表说他重要时因为同时记录了trigger、itemid,那就可以做一些API的开发了,例如根据 IP 茶香改IP的所有trigger,我记得1.8的版本的API是无法实现我说的这个功能的,那只能利用 function表去自己查询了。
图14functions表结构
graphs_items
graphs_items保存了属于某个图表的所有的监控项信息。
图15graphs_items表结构
profiles
profiles 表保存了用户的一些配置项。
图16 profiles表结构
sessions
sessions 表很重要,保存了每个用户的sessions,在登陆、注销的时候均会操作该张表的。
图17sessions表结构
history
History表用于存储监控所得的原始数据,itemid对应与监控项;clock为数据的获取时间,用时间戳表示;value为获取的原始数据;ns表示采集到该数据所用的时间。
图18 history表结构
history_str
history_str表用于存储采集到的数据中需要用字符串记录的数据,itemid对应与监控项;clock为数据的获取时间,用时间戳表示;value为获取的原始数据;ns表示采集到该数据所用的时间。
图19history_str表结构
Trends
Trends表用于储存监控的趋势性数据,若将所有历史数据保留将占用大量存储空间,单用户可能仍需要查看监控对像的趋势状态,因此需要用到trends表。
图20trends表结构
users
部分用户配置会在该表中,例如auotlogin、autologout、url、theme等信息。
图21user表结构下载本文