1、概述
文章基于zabbix 5 编写,zabbix发音:[`zæbiks],中文发音:日阿(ra)贝克斯。
zabbix中文官方文档,链接(Zabbix 手册)。里面含有介绍,安装,配置,以及API接口文档。
本文只是基于数据呈现的开发,所以安装、配置都不在文章主要讨论范围内;我会将主要表以及一些说明文档备注在本次文档中。
本人不是网管,对IPMI,SNMP这些协议不是太了解,文章中有解释不正确的,请各位斧正,谢谢!
原创不易,转载请注明出处 https://blog.youkuaiyun.com/weixin_41006749/article/details/122376850
2、采集协议
Zabbix原生支持4种协议,可以通过协议是否正常来判断故障与否。如下:
- ZBX -> Zabbix Client模式
- SNMP -> 简单网络协议
- JMX -> JMX协议
- IPMI -> IPMI协议
除了原生协议支持外,还可以配置 http ,odbc 等协议来采集数据。
-- 通过tcp检查应用程序是否在线
-- 语法格式:net.tcp.service[协议,"主机","端口")]
-- 协议:ssh|ldap|smtp|ftp|http|pop|nntp|imap|tcp|https|telnet
-- 主机:可为空
-- 端口:可为空
-- 示例:items.key_ = net.tcp.service[http,"10.72.234.38","81"]
3、开发中几个查询SQL
-- 聚合图形查询视图
CREATE VIEW v_hostscreens AS
SELECT t.hostid, t.templateid, s.screenid
FROM screens s
INNER JOIN (
WITH recursive cte (hostid, templateid) AS (
SELECT ht.hostid, ht.templateid
FROM hosts_templates ht
INNER JOIN `hosts` h ON h.hostid = ht.hostid AND h.`status` IN (0,1) AND h.flags IN (0,4)
UNION
SELECT cte.hostid, ht.templateid
FROM hosts_templates ht, cte
WHERE ht.hostid = cte.templateid
) SELECT templateid, hostid FROM cte ORDER BY hostid
) t ON t.templateid = s.templateid;
-- 图表视图查询
CREATE VIEW v_hostgraphs AS
SELECT DISTINCT i.hostid, g.graphid
FROM graphs g
INNER JOIN graphs_items gi ON gi.graphid = g.graphid
INNER JOIN items i ON i.itemid = gi.itemid
WHERE g.flags IN (0, 4);
-- 主机问题视图
CREATE VIEW v_hostproblems AS
SELECT DISTINCT i.hostid, i.itemid, i.`name` itemname, i.key_, p.eventid, p.objectid, p.clock, p.`name`, p.severity
FROM problem p
INNER JOIN functions f ON f.triggerid = p.objectid
INNER JOIN items i ON i.itemid = f.itemid
WHERE p.`source`='0' AND p.`object`='0' AND p.r_eventid IS NULL
AND NOT EXISTS (SELECT NULL FROM event_suppress es WHERE es.eventid=p.eventid);
-- 去除依赖后的主机问题
CREATE VIEW v_hostproblemdepends AS (
WITH recursive cte AS (
SELECT hp.hostid, hp.objectid triggerid_down, d.triggerid_up, IF(hp1.objectid IS NULL, NULL, 1) has_up
FROM v_hostproblems hp
LEFT JOIN trigger_depends d ON d.triggerid_down = hp.objectid
LEFT JOIN v_hostproblems hp1 ON hp1.hostid = hp.hostid AND hp1.objectid = d.triggerid_up AND hp1.objectid != hp.objectid
UNION
SELECT c.hostid, d.triggerid_down, d.triggerid_up, IF(hp1.objectid IS NULL, NULL, 1) has_up
FROM trigger_depends d
INNER JOIN cte c ON d.triggerid_down = c.triggerid_up
LEFT JOIN v_hostproblems hp1 ON hp1.hostid = c.hostid AND hp1.objectid = d.triggerid_up AND hp1.objectid != c.triggerid_up
)
SELECT * FROM cte
);
正则表达式作用:查询通过非 ZBX/SNMP/JMX/IMPI协议的应用程序是否在线 '^net\\.tcp\\.service\\[\\s*(ssh|ldap|smtp|ftp|http|pop|nntp|imap|tcp|https|telnet)\\s*(,\\s*[^,\\]]*){0,2}\\]$'
-- 主机查询
SELECT
h.hostid,
h.`name`,
h.`host`,
h.`status`,
JSON_OBJECT(
'available', h.available,
'errors_from', DATE_FORMAT(FROM_UNIXTIME(IF(h.errors_from = 0, NULL, h.errors_from)), '%Y-%m-%d %h:%i:%s'),
'error', h.`error`,
'snmp_available', h.snmp_available,
'snmp_errors_from', DATE_FORMAT(FROM_UNIXTIME(IF(h.snmp_errors_from = 0, NULL, h.snmp_errors_from)), '%Y-%m-%d %h:%i:%s'),
'snmp_error', h.snmp_error,
'jmx_available', h.jmx_available,
'jmx_errors_from', DATE_FORMAT(FROM_UNIXTIME(IF(h.jmx_errors_from=0, NULL, h.jmx_errors_from)), '%Y-%m-%d %h:%i:%s'),
'jmx_error', h.jmx_error,
'ipmi_available', h.ipmi_available,
'ipmi_errors_from', DATE_FORMAT(FROM_UNIXTIME(IF(h.ipmi_errors_from = 0, NULL, h.ipmi_errors_from)), '%Y-%m-%d %h:%i:%s'),
'ipmi_error', h.ipmi_error,
'tcp_available', CASE WHEN i1.itemid IS NOT NULL AND e.clock IS NOT NULL THEN 2 WHEN i1.itemid IS NOT NULL THEN 1 ELSE 0 END,
'tcp_errors_from', DATE_FORMAT(FROM_UNIXTIME(CASE WHEN e.clock IS NOT NULL THEN e.clock ELSE NULL END), '%Y-%m-%d %h:%i:%s'),
'tcp_error', CASE WHEN e.clock IS NOT NULL THEN e.`name` ELSE NULL END
) as availableJson,
i.ip AS interfaces, -- 接口
COUNT(DISTINCT g.graphid) AS `graphs`, -- 图表数量
COUNT(DISTINCT p.eventid) AS `problems`,
COUNT(DISTINCT IF(p.severity = 0, p.eventid, NULL)) severity0, -- 未分级
COUNT(DISTINCT IF(p.severity = 1, p.eventid, NULL)) severity1, -- 信息
COUNT(DISTINCT IF(p.severity = 2, p.eventid, NULL)) severity2, -- 警告
COUNT(DISTINCT IF(p.severity = 3, p.eventid, NULL)) severity3, -- 一般严重
COUNT(DISTINCT IF(p.severity = 4, p.eventid, NULL)) severity4, -- 严重
COUNT(DISTINCT IF(p.severity = 5, p.eventid, NULL)) severity5 -- 灾难
FROM `hosts` h
INNER JOIN hosts_groups hg ON hg.hostid = h.hostid
INNER JOIN hstgrp grp ON grp.groupid = hg.groupid -- AND grp.`name` IN ( :{groupNames} )
INNER JOIN lateral (
SELECT i.hostid, i.ip, i.`port` FROM interface i WHERE i.hostid = h.hostid LIMIT 1
) i ON i.hostid = h.hostid
LEFT JOIN lateral (
SELECT e.hostid, e.clock, e.`name` FROM v_hostproblems e
WHERE e.hostid = h.hostid AND e.`key_` REGEXP '^net\\.tcp\\.service\\[\\s*(ssh|ldap|smtp|ftp|http|pop|nntp|imap|tcp|https|telnet)\\s*(,\\s*[^,\\]]*){0,2}\\]$'
ORDER BY e.clock DESC LIMIT 1
) e ON e.hostid = h.hostid
LEFT JOIN lateral (
SELECT i.hostid, i.itemid FROM items i
WHERE i.hostid = h.hostid AND i.`key_` REGEXP '^net\\.tcp\\.service\\[\\s*(ssh|ldap|smtp|ftp|http|pop|nntp|imap|tcp|https|telnet)\\s*(,\\s*[^,\\]]*){0,2}\\]$'
LIMIT 1
) AS i1 ON i1.hostid = h.hostid
LEFT JOIN v_hostgraphs g ON g.hostid = h.hostid
LEFT JOIN v_hostproblems p ON p.hostid = h.hostid AND NOT EXISTS (
SELECT NULL FROM v_hostproblemdepends t WHERE t.hostid = p.hostid AND t.triggerid_down = p.objectid AND t.has_up = 1
)
LEFT JOIN v_hostscreens s ON s.hostid = h.hostid
WHERE h.`status` IN (0, 1) AND h.flags IN (0, 4) -- AND h.`name` LIKE :{hostname}
GROUP BY h.hostid, e.clock, e.`name`, i.ip, i1.itemid
ORDER BY h.`name`
-- 查询监控项
SELECT i.itemid,
i.`type`,
i.hostid,
i.`name`,
i.key_,
i.delay,
i.`history`,
i.`trends`,
i.`status`,
i.value_type,
i.units,
i.description,
ir.state,
ir.`error`,
IFNULL(a.applicationid, -1) AS applicationid,
IFNULL(a.`name`, '- other -') AS application_name,
COUNT(i.itemid) OVER(PARTITION BY a.applicationid) AS application_count
FROM items i
LEFT JOIN item_rtdata ir ON i.itemid = ir.itemid
LEFT JOIN items_applications ia ON ia.itemid = i.itemid
LEFT JOIN applications a ON a.applicationid = ia.applicationid AND a.hostid = i.hostid
WHERE i.flags IN (0,4) AND i.`status` = 0
-- AND i.hostid = 10450
ORDER BY a.`name` IS NULL, a.`name`, i.`name`
LIMIT 0, 50;
-- 监控项最新数据查询
-- value_type = 0, history 浮点类型的监控项查询
SELECT t.itemid, FROM_UNIXTIME(IF(h.clock > 0, h.clock, NULL)) clock,
CASE WHEN m.newvalue IS NOT NULL THEN CONCAT(m.newvalue, ' (', h.`value`, ')') ELSE h.`value` END `value`
FROM (
SELECT i.itemid, i.valuemapid, MAX(h.clock) max_clock
FROM items i
LEFT JOIN history h ON h.itemid = i.itemid
WHERE i.flags IN (0,4) AND i.`status` = 0 AND i.value_type = 0 AND i.itemid IN ( 29163 )
GROUP BY i.itemid
) t
LEFT JOIN history h ON h.itemid = t.itemid AND h.clock = t.max_clock
LEFT JOIN mappings m ON m.valuemapid = t.valuemapid AND m.`value` = h.`value`
UNION
-- value_type = 1, history_str 字符类型的监控项查询
SELECT t.itemid, FROM_UNIXTIME(IF(h.clock > 0, h.clock, NULL)) clock,
CASE WHEN m.newvalue IS NOT NULL THEN CONCAT(m.newvalue, ' (', h.`value`, ')') ELSE h.`value` END `value`
FROM (
SELECT i.itemid, i.valuemapid, MAX(h.clock) max_clock
FROM items i
LEFT JOIN history_str h ON h.itemid = i.itemid
WHERE i.flags IN (0,4) AND i.`status` = 0 AND i.value_type = 1 AND i.itemid IN ( 29163 )
GROUP BY i.itemid
) t
LEFT JOIN history_str h ON h.itemid = t.itemid AND h.clock = t.max_clock
LEFT JOIN mappings m ON m.valuemapid = t.valuemapid AND m.`value` = h.`value`
UNION
-- value_type = 2, history_log 日志类型的监控项查询
SELECT t.itemid, FROM_UNIXTIME(IF(h.clock > 0, h.clock, NULL)) clock,
CASE WHEN m.newvalue IS NOT NULL THEN CONCAT(m.newvalue, ' (', h.`value`, ')') ELSE h.`value` END `value`
FROM (
SELECT i.itemid, i.valuemapid, MAX(h.clock) max_clock
FROM items i
LEFT JOIN history_log h ON h.itemid = i.itemid
WHERE i.flags IN (0,4) AND i.`status` = 0 AND i.value_type = 2 AND i.itemid IN ( 29163 )
GROUP BY i.itemid
) t
LEFT JOIN history_log h ON h.itemid = t.itemid AND h.clock = t.max_clock
LEFT JOIN mappings m ON m.valuemapid = t.valuemapid AND m.`value` = h.`value`
UNION
-- value_type = 3, history_uint 无符号整数类型的监控项查询
SELECT t.itemid, FROM_UNIXTIME(IF(h.clock > 0, h.clock, NULL)) clock,
CASE WHEN m.newvalue IS NOT NULL THEN CONCAT(m.newvalue, ' (', h.`value`, ')') ELSE h.`value` END `value`
FROM (
SELECT i.itemid, i.valuemapid, MAX(h.clock) max_clock
FROM items i
LEFT JOIN history_uint h ON h.itemid = i.itemid
WHERE i.flags IN (0,4) AND i.`status` = 0 AND i.value_type = 3 AND i.itemid IN ( 29163 )
GROUP BY i.itemid
) t
LEFT JOIN history_uint h ON h.itemid = t.itemid AND h.clock = t.max_clock
LEFT JOIN mappings m ON m.valuemapid = t.valuemapid AND m.`value` = h.`value`
UNION
-- value_type = 4, history_text 文本类型的监控项查询
SELECT t.itemid, FROM_UNIXTIME(IF(h.clock > 0, h.clock, NULL)) clock,
CASE WHEN m.newvalue IS NOT NULL THEN CONCAT(m.newvalue, ' (', h.`value`, ')') ELSE h.`value` END `value`
FROM (
SELECT i.itemid, i.valuemapid, MAX(h.clock) max_clock
FROM items i
LEFT JOIN history_text h ON h.itemid = i.itemid
WHERE i.flags IN (0,4) AND i.`status` = 0 AND i.value_type = 4 AND i.itemid IN ( 29163 )
GROUP BY i.itemid
) t
LEFT JOIN history_text h ON h.itemid = t.itemid AND h.clock = t.max_clock
LEFT JOIN mappings m ON m.valuemapid = t.valuemapid AND m.`value` = h.`value`
;
解释这句 round(1223* MOD(CAST(clock AS UNSIGNED)+189,300)/(300),0)
1、数字 “1223” 是浏览器页面显示图表的宽度,定义变量为 $width
2、数字 “300” 是 “结束时间” - “开始时间” (1639204011 - 1639203711),定义变量为 $size
3、数字 “189” 定义为变量 $delta,公式:$delta = $size - “开始时间” % $size;
-- 模拟Zabbix监控项图表查询SQL
-- history
SELECT itemid,
COUNT(*) AS `count`,
AVG(value) AS `avg`,
MIN(value) AS `min`,
MAX(value) AS `max`,
round(1223* MOD(CAST(clock AS UNSIGNED)+189,300)/(300),0) AS i,
MAX(clock) AS clock
FROM history
WHERE itemid='29163' AND clock>='1639203711' AND clock<='1639204011'
GROUP BY itemid,round(1223* MOD(CAST(clock AS UNSIGNED)+189,300)/(300),0)
-- history_uint
SELECT itemid,
COUNT(*) AS count,
AVG(value) AS avg,
MIN(value) AS min,
MAX(value) AS max,
round(1223* MOD(CAST(clock AS UNSIGNED)+2519,3600)/(3600),0) AS i,
MAX(clock) AS clock
FROM history_uint
WHERE itemid='41990' AND clock>='1639531081' AND clock<='1639534681'
GROUP BY itemid,round(1223* MOD(CAST(clock AS UNSIGNED)+2519,3600)/(3600),0)
-- trends
SELECT itemid,
SUM(num) AS count,
AVG(value_avg) AS avg,
MIN(value_min) AS min,
MAX(value_max) AS max,
round(1223* MOD(CAST(clock AS UNSIGNED)+2914346,63158400)/(63158400),0) AS i,
MAX(clock) AS clock
FROM trends
WHERE itemid='29163' AND clock>='1576045654' AND clock<='1639204054'
GROUP BY itemid,round(1223* MOD(CAST(clock AS UNSIGNED)+2914346,63158400)/(63158400),0)
-- trends_uint
SELECT itemid,
SUM(num) AS count,
AVG(value_avg) AS avg,
MIN(value_min) AS min,
MAX(value_max) AS max,
round(1223* MOD(CAST(clock AS UNSIGNED)+263689,604799)/(604799),0) AS i,
MAX(clock) AS clock
FROM trends_uint
WHERE itemid='41990' AND clock>='1639346400' AND clock<='1639951199'
GROUP BY itemid,round(1223* MOD(CAST(clock AS UNSIGNED)+263689,604799)/(604799),0)
网络流量和CPU/Memory查询相似
接收流量 key_ = '^net\\.if\\.in\\[[^,\\]]+\\]$'
发送流量 key_ = '^net\\.if\\.out\\[[^,\\]]+\\]$'
-- 查询CPU/Memory的监控项
SELECT i.itemid
FROM items i
INNER JOIN `hosts` h ON h.hostid = i.hostid AND h.`status` = 0 AND h.flags IN (0,4)
WHERE i.`status` = 0 AND i.flags IN (0,4)
AND (i.key_ REGEXP '^system\\.cpu\\.util(\\[[^,\\]]*\\])?$'
OR i.key_ REGEXP '^vm\\.memory\\.util(ization|\\[[^\\]]*\\])?$'
);
-- 查询主机20分钟内CPU/Memory平均使用率
SELECT m.hostid, m.`name`, m.`type`, m.units, s.`avg`
FROM (
SELECT DISTINCT h.hostid, h.`name`, i.units,
CASE WHEN i.key_ REGEXP '^system\\.cpu\\.util(\\[[^,\\]]*\\])?$' THEN 'CPU'
WHEN i.key_ REGEXP '^vm\\.memory\\.util(ization|\\[[^\\]]*\\])?$' THEN 'MEM'
ELSE '' END AS `type`
FROM `hosts` h
INNER JOIN items i ON i.hostid = h.hostid
AND i.itemid IN ( 41960,45995,45686,53077 )
) m
LEFT JOIN (
SELECT i.hostid, i.units,
CASE WHEN i.key_ REGEXP '^system\\.cpu\\.util(\\[[^,\\]]*\\])?$' THEN 'CPU'
WHEN i.key_ REGEXP '^vm\\.memory\\.util(ization|\\[[^\\]]*\\])?$' THEN 'MEM'
ELSE '' END AS `type`,
AVG(h.`value` / 100) * 100 AS `avg`
FROM history h
INNER JOIN items i ON h.itemid = i.itemid
WHERE h.itemid IN ( 41960,45995,45686,53077 ) AND h.clock >= UNIX_TIMESTAMP(NOW() - INTERVAL 20 MINUTE)
GROUP BY i.hostid, i.units,
CASE WHEN i.key_ REGEXP '^system\\.cpu\\.util(\\[[^,\\]]*\\])?$' THEN 'CPU'
WHEN i.key_ REGEXP '^vm\\.memory\\.util(ization|\\[[^\\]]*\\])?$' THEN 'MEM'
ELSE '' END
) s ON s.hostid = m.hostid AND s.`type` = m.`type` AND s.units = m.units
ORDER BY m.`name`, `type`
4、数据库主要表结构
公共属性
`flags`
0 - ZBX_FLAG_DISCOVERY_NORMAL 常规发现
1 - ZBX_FLAG_DISCOVERY_RULE 规则发现
2 - ZBX_FLAG_DISCOVERY_PROTOTYPE 原型发现
4 - ZBX_FLAG_DISCOVERY_CREATED 创建
主机相关表
1,`hosts` 主机/模板 共用表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
hostid | BIGINT | 20 | 否 | 主机/模板主键 | |
host | VARCHAR | 128 | 否 | '' | 主机名称 |
status | INT | 10 | 否 | '0' | 状态,参考下表 |
flags | INT | 10 | 否 | '0' | 参考公共属性表 |
name | VARCHAR | 128 | 否 | '' | 显示名称 |
available | INT | 10 | 否 | '0' | ZBX状态。0、非ZBX,1、正常,2、异常 |
errors_from | INT | 10 | 否 | '0' | ZBX错误发生时间 |
error | VARCHAR | 2048 | 否 | '' | ZBX错误内容 |
disable_until | INT | 10 | 否 | '0' | 禁止主机监控到什么时候 |
snmp_available | INT | 10 | 否 | '0' | SNMP状态。0、非ZBX,1、正常,2、异常 |
snmp_errors_from | INT | 10 | 否 | '0' | SNMP错误发生时间 |
snmp_error | VARCHAR | 2048 | 否 | '' | SNMP错误内容 |
snmp_disable_until | INT | 10 | 否 | '0' | 禁止主机监控到什么时候 |
jmx_available | INT | 10 | 否 | '0' | JMX状态。0、非ZBX,1、正常,2、异常 |
jmx_errors_from | INT | 10 | 否 | '0' | JMX错误发生时间 |
jmx_error | VARCHAR | 2048 | 否 | '' | JMX错误内容 |
jmx_disable_until | INT | 10 | 否 | '0' | 禁止主机监控到什么时候 |
ipmi_available | INT | 10 | 否 | '0' | IPMI状态。0、非ZBX,1、正常,2、异常 |
ipmi_errors_from | INT | 10 | 否 | '0' | IPMI错误发生时间 |
ipmi_error | VARCHAR | 2048 | 否 | '' | IPMI错误内容 |
ipmi_disable_until | INT | 10 | 否 | '0' | 禁止主机监控到什么时候 |
ipmi_authtype | INT | 10 | 否 | '-1' | IPMI授权类型,见下表: |
ipmi_privilege | INT | 10 | 否 | '2' | IPMI权限,见下表: |
ipmi_username | VARCHAR | 16 | 否 | '' | IPMI帐号 |
ipmi_password | VARCHAR | 20 | 否 | '' | IPMI密码 |
maintenanceid | BIGINT | 20 | 是 | NULL | maintenances维护表主键 |
maintenance_status | INT | 10 | 否 | '0' | 维护状态,0、关闭,1、开启 |
maintenance_type | INT | 10 | 否 | '0' | 维护类型,0、正常,1、无数据 |
maintenance_from | INT | 10 | 否 | '0' | 维护开始时间 |
description | TEXT | 否 | 描述 | ||
lastaccess | INT | 10 | 否 | '0' | 最后访问时间 |
templateid | BIGINT | 20 | 是 | NULL | 模板主键 |
tls_connect | INT | 10 | 否 | '1' | TLS连接,见下表: |
tls_accept | INT | 10 | 否 | '1' | TLS许可,同tls_connect |
tls_issuer | VARCHAR | 1024 | 否 | '' | TLS发行人 |
tls_subject | VARCHAR | 1024 | 否 | '' | TLS项目名 |
tls_psk_identity | VARCHAR | 128 | 否 | '' | TLS PSK身份认证 |
tls_psk | VARCHAR | 512 | 否 | '' | TLS PSK |
proxy_hostid | BIGINT | 20 | 是 | NULL | 代理主机主键 |
proxy_address | VARCHAR | 255 | 否 | '' | 代理主机地址 |
auto_compress | INT | 10 | 否 | '1' | 1、自动压缩 |
discover | INT | 10 | 否 | '0' | 0、自动发现,1、非自动发现 |
`status` -- default 0
0 - HOST_STATUS_MONITORED 主机监控中
1 - HOST_STATUS_NOT_MONITORED 主机未监控
3 - HOST_STATUS_TEMPLATE 模板数据
5 - HOST_STATUS_PROXY_ACTIVE 主动代理模式
6 - HOST_STATUS_PROXY_PASSIVE 被动代理模式
`ipmi_authtype` -- default -1
-1 - IPMI_AUTHTYPE_DEFAULT 默认授权
0 - IPMI_AUTHTYPE_NONE 无授权
1 - IPMI_AUTHTYPE_MD2 MD2
2 - IPMI_AUTHTYPE_MD5 MD5
4 - IPMI_AUTHTYPE_STRAIGHT
5 - IPMI_AUTHTYPE_OEM OEM
6 - IPMI_AUTHTYPE_RMCP_PLUS RMCPPlus
`ipmi_privilege` -- default 2
1 - IPMI_PRIVILEGE_CALLBACK Callback
2 - IPMI_PRIVILEGE_USER User
3 - IPMI_PRIVILEGE_OPERATOR Operator
4 - IPMI_PRIVILEGE_ADMIN Admin
5 - IPMI_PRIVILEGE_OEM OEM
`maintenance_status` -- default 0
0 - HOST_MAINTENANCE_STATUS_OFF 主机维护状态关闭
1 - HOST_MAINTENANCE_STATUS_ON 主机维护状态开启
`maintenance_type` -- default 0
0 - MAINTENANCE_TYPE_NORMAL 正常
1 - MAINTENANCE_TYPE_NODATA 无数据
`tls_connect`, `tls_accept` -- default 1
1 - HOST_ENCRYPTION_NONE 不加密
2 - HOST_ENCRYPTION_PSK PSK
4 - HOST_ENCRYPTION_CERTIFICATE 证书加密
`auto_compress` -- default 1
1 - HOST_COMPRESSION_ON 开启自动压缩
`discover` -- default 1
0 - HOST_DISCOVER 自动发现
1 - HOST_NO_DISCOVER 非自动发现
2,`hosts_templates` 主机-模板关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
hosttemplateid | BIGINT | 20 | 否 | 主机-模板关联主键 | |
hostid | BIGINT | 20 | 否 | 主机主键 | |
templateid | BIGINT | 20 | 否 | 模板主键 |
主机和模板关联,模板和模板也有关联。此处若查询它们之间的关系,需要使用到MySQL8.0的CTE递归查询法。如下:
WITH recursive cte (hostid, templateid) AS (
SELECT ht.hostid, ht.templateid
FROM hosts_templates ht
INNER JOIN `hosts` h ON h.hostid = ht.hostid AND h.`status` IN (0,1) AND h.flags IN (0,4)
UNION
SELECT cte.hostid, ht.templateid
FROM hosts_templates ht, cte
WHERE ht.hostid = cte.templateid
) SELECT templateid, hostid FROM cte ORDER BY hostid
3,`hstgrp` 主机组表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
groupid | BIGINT | 20 | 否 | 主机组主键 | |
name | VARCHAR | 255 | 否 | '' | 主机组名称 |
flags | INT | 10 | 否 | 0 | 0、正常,1、发现规则,2、发现原型,4、已创建 |
internal | INT | 10 | 否 | 0 | 0、外部发现,1、内部配置 |
`internal` -- default 0
0 - ZBX_NOT_INTERNAL_GROUP 非内部组
1 - ZBX_INTERNAL_GROUP 内部组
4,`hosts_groups` 主机-主机组关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
hostgroupid | BIGINT | 20 | 否 | 主机-主机组关联主键 | |
hostid | BIGINT | 20 | 否 | 主机主键 |
5,`host_tag` 主机标签表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
hosttagid | BIGINT | 20 | 否 | 主机标签主键 | |
hostid | BIGINT | 20 | 否 | 主机主键 | |
tag | VARCHAR | 255 | 否 | '' | 标签名 |
value | VARCHAR | 255 | 否 | '' | 标签值 |
6,`drules` 自动发现规则表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
druleid | BIGINT | 20 | 否 | 自动发现规则主键 | |
proxy_hostid | BIGINT | 20 | 是 | NULL | 代理主机主键 |
name | VARCHAR | 255 | 否 | '' | 自动发现规则名称 |
iprange | VARCHAR | 2048 | 否 | '' | ip范围 |
delay | VARCHAR | 255 | 否 | '1h' | 采集周期 |
nextcheck | INT | 10 | 否 | '0' | 下一次检查时间 |
status | INT | 10 | 否 | '0' | 0、启用,1、禁用 |
`status`
0 - ACTION_STATUS_ENABLED 启用
1 - ACTION_STATUS_DISABLED 禁用
7,`dhosts` 自动发现主机,discovery hosts
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
dhostid | BIGINT | 20 | 否 | 自动发现主机主键 | |
druleid | BIGINT | 20 | 否 | 自动发现规则主键 | |
status | INT | 10 | 否 | '0' | 0、激活,1、禁用 |
lastup | INT | 10 | 否 | '0' | 最后上线时间 |
lastdown | INT | 10 | 否 | '0' | 最后下线时间 |
`status`
0 - DHOST_STATUS_ACTIVE 激活
1 - DHOST_STATUS_DISABLED 禁用
8,`interface` 主机网络接口信息
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
interfaceid | BIGINT | 20 | 否 | 主机网络接口主键 | |
hostid | BIGINT | 20 | 否 | 主机主键 | |
main | INT | 10 | 否 | '0' | 是否使用默认接口 |
type | INT | 10 | 否 | '1' | 类型,如下 |
useip | INT | 10 | 否 | '1' | 0、使用DNS,1、使用IP |
ip | VARCHAR | 64 | 否 | '' | IP地址 |
dns | VARCHAR | 255 | 否 | '' | DNS地址 |
port | VARCHAR | 64 | 否 | '' | 端口号 |
`main`
0 - INTERFACE_SECONDARY 次要
1 - INTERFACE_PRIMARY 主要
`type`
-1 - INTERFACE_TYPE_ANY 任意
0 - INTERFACE_TYPE_UNKNOWN 未知
1 - INTERFACE_TYPE_AGENT ZBX客户端
2 - INTERFACE_TYPE_SNMP SNMP
3 - INTERFACE_TYPE_IPMI IPMI
4 - INTERFACE_TYPE_JMX JMX
`useip`
0 - INTERFACE_USE_DNS 使用DNS
1 - INTERFACE_USE_IP 使用IP
9,`interface_discovery` 主机自动发现表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
interfaceid | BIGINT | 20 | 否 | 主机网络接口主键 | |
parent_interfaceid | BIGINT | 20 | 否 | 父主机网络接口主键 |
10,`interface_snmp` 主机SNMP信息表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
interfaceid | BIGINT | 20 | 否 | 主机网络接口主键 | |
version | INT | 10 | 否 | '2' | SNMP版本号 |
bulk | INT | 10 | 否 | '1' | 0、禁用,1、启用 |
community | VARCHAR | 64 | 否 | '' | 团体名称 |
securityname | VARCHAR | 64 | 否 | '' | 网管侧显示的用户名 |
securitylevel | INT | 10 | 否 | '0' | 安全等级 |
authpassphrase | VARCHAR | 64 | 否 | '' | 认证密码 |
privpassphrase | VARCHAR | 64 | 否 | '' | 授权密码 |
authprotocol | INT | 10 | 否 | '0' | 认证协议 |
privprotocol | INT | 10 | 否 | '0' | 授权协议 |
contextname | VARCHAR | 255 | 否 | '' | 上下文名称 |
`version`
1 - SNMP_V1
2 - SNMP_V2C
3 - SNMP_V3
`bulk`
0 - SNMP_BULK_DISABLED 禁用
1 - SNMP_BULK_ENABLED 启用
`securitylevel`
0 - ITEM_SNMPV3_SECURITYLEVEL_NOAUTHNOPRIV 无认证无权限
1 - ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV 有认证无权限
2 - ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV 有认证有权限
`authprotocol`
0 - ITEM_AUTHPROTOCOL_MD5 MD5
1 - ITEM_AUTHPROTOCOL_SHA SHA
`privprotocol`
0 - ITEM_PRIVPROTOCOL_DES DES
1 - ITEM_PRIVPROTOCOL_AES AES
监控项相关表
1,`items` 监控项表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
type | INT | 10 | 否 | '0' | 监控项类型,见下表 |
snmp_oid | VARCHAR | 512 | 否 | '' | SNMP对象标识符 |
hostid | BIGINT | 20 | 否 | 主机主键 | |
name | VARCHAR | 255 | 否 | '' | 监控项名称 |
key_ | VARCHAR | 2048 | 否 | '' | 键值 |
delay | VARCHAR | 1024 | 否 | '0' | 采集间隔 |
history | VARCHAR | 255 | 否 | '90d' | 历史数据保留时间 |
trends | VARCHAR | 255 | 否 | '365d' | 趋势数据(按小时汇总)保留时间 |
status | INT | 10 | 否 | '0' | 状态:0、启用,1、禁用 |
value_type | INT | 10 | 否 | '0' | 数据保存类型表,见下表 |
trapper_hosts | VARCHAR | 255 | 否 | '' | type=ITEM_TYPE_TRAPPER时,主机捕获 |
units | VARCHAR | 255 | 否 | '' | 数据单位 |
formula | VARCHAR | 255 | 否 | '' | 公式 |
logtimefmt | VARCHAR | 64 | 否 | '' | 日志日期格式化 |
templateid | BIGINT | 20 | 是 | NULL | 模板主键 |
valuemapid | BIGINT | 20 | 是 | NULL | 值映射表 |
params | TEXT | 否 | 参数 | ||
ipmi_sensor | VARCHAR | 128 | 否 | '' | IPMI 传感 |
authtype | INT | 10 | 否 | '0' | 认证方法,0、密码,1、公私钥 |
username | VARCHAR | 64 | 否 | '' | 用户名称。简单检查 、ssh、数据库、telnet、JMX agent会有帐号,密码填写 |
password | VARCHAR | 64 | 否 | '' | 密码 |
publickey | VARCHAR | 64 | 否 | '' | 授权公钥 |
privatekey | VARCHAR | 64 | 否 | '' | 授权私钥 |
flags | INT | 10 | 否 | '0' | 见公共属性 |
description | TEXT | 否 | 描述 | ||
inventory_link | INT | 10 | 否 | '0' | 资产清单 |
lifetime | VARCHAR | 255 | 否 | '30d' | 使用周期 |
evaltype | INT | 10 | 否 | '0' | |
jmx_endpoint | VARCHAR | 255 | 否 | '' | JMX端口 |
master_itemid | BIGINT | 20 | 是 | NULL | 主监控项主键 |
url | VARCHAR | 2048 | 否 | '' | URL |
query_fields | VARCHAR | 2048 | 否 | '' | 当type=19时,查询字段 |
request_method | INT | 10 | 否 | '0' | 请求类型,GET,POST,PUT,HEAD |
timeout | VARCHAR | 255 | 否 | '3s' | 超时时间 |
post_type | INT | 10 | 否 | '0' | type=19时,post数据类型,见下表 |
posts | TEXT | 否 | type=19时,请求正文(体) | ||
headers | TEXT | 否 | type=19时,请求头 | ||
status_codes | VARCHAR | 255 | 否 | '200' | 需要响应的状态码 |
follow_redirects | INT | 10 | 否 | '1' | 301,302跟随跳转,0、关闭,1、开启 |
retrieve_mode | INT | 10 | 否 | '0' | 获取响应数据模式,体、头、体和头 |
http_proxy | VARCHAR | 255 | 否 | '' | HTTP 代理 |
verify_peer | INT | 10 | 否 | '0' | SSL验证对端,0、否,1、是 |
verify_host | INT | 10 | 否 | '0' | SSL验证主机,0、否 ,1、是 |
ssl_cert_file | VARCHAR | 255 | 否 | '' | SSL证书文件 |
ssl_key_file | VARCHAR | 255 | 否 | '' | SSL秘钥文件 |
ssl_key_password | VARCHAR | 64 | 否 | '' | SSL秘钥密码 |
interfaceid | BIGINT | 20 | 是 | NULL | 主机接口(IP地址)主键 |
output_format | INT | 10 | 否 | '0' | http输出格式,0、原生RAW,1、JSON格式 |
allow_traps | INT | 10 | 否 | '0' | 启用trapping,0、否,1、是 |
discover | INT | 10 | 否 | '0' | 0、自动发现,1、非自动发现 |
表字段类型说明
`status` -- default=0
0 - ITEM_STATUS_ACTIVE 激活
1 - ITEM_STATUS_DISABLED 禁用
`type` -- default=0
0 - ITEM_TYPE_ZABBIX Zabbix 客户端
1 - ITEM_TYPE_SNMPV1 已过时,只使用在xml转换中,使用ITEM_TYPE_SNMP替代
2 - ITEM_TYPE_TRAPPER Zabbix采集器
3 - ITEM_TYPE_SIMPLE 简单检查
4 - ITEM_TYPE_SNMPV2C 已过时,只使用在xml转换中,使用ITEM_TYPE_SNMP替代
5 - ITEM_TYPE_INTERNAL Zabbix内部
6 - ITEM_TYPE_SNMPV3 已过时,只使用在xml转换中,使用ITEM_TYPE_SNMP替代
7 - ITEM_TYPE_ZABBIX_ACTIVE Zabbix客户端(主动式)
8 - ITEM_TYPE_AGGREGATE Zabbix整合
9 - ITEM_TYPE_HTTPTEST http test
10 - ITEM_TYPE_EXTERNAL 外部检查
11 - ITEM_TYPE_DB_MONITOR 数据库监控
12 - ITEM_TYPE_IPMI IPMI客户端
13 - ITEM_TYPE_SSH SSH 客户端
14 - ITEM_TYPE_TELNET TELNET客户端
15 - ITEM_TYPE_CALCULATED 可计算的
16 - ITEM_TYPE_JMX JMX agent代理程序
17 - ITEM_TYPE_SNMPTRAP SNMP trap
18 - ITEM_TYPE_DEPENDENT 相关项目
19 - ITEM_TYPE_HTTPAGENT HTTP 代理
20 - ITEM_TYPE_SNMP SNMP agent
`value_type` -- default=0
0 - ITEM_VALUE_TYPE_FLOAT 浮点类型表(history)
1 - ITEM_VALUE_TYPE_STR 字符类型表(history_str)
2 - ITEM_VALUE_TYPE_LOG 日志类型表(history_log)
3 - ITEM_VALUE_TYPE_UINT64 无符号整数类型(history_uint)
4 - ITEM_VALUE_TYPE_TEXT 文本类型表(history_text)
`authtype` -- default=0
0 - ITEM_AUTHTYPE_PASSWORD 用户名/密码授权方式
1 - ITEM_AUTHTYPE_PUBLICKEY 公/私钥授权方式
`evaltype`
0 - TAG_EVAL_TYPE_AND_OR
2 - TAG_EVAL_TYPE_OR
`follow_redirects` -- default=1
0 - HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF 关闭
1 - HTTPTEST_STEP_FOLLOW_REDIRECTS_ON 开启
`post_type` -- default=0
0 - ZBX_POSTTYPE_RAW 原生
1 - ZBX_POSTTYPE_FORM 表单
2 - ZBX_POSTTYPE_JSON JSON
3 - ZBX_POSTTYPE_XML XML
`retrieve_mode` -- default=0
0 - HTTPTEST_STEP_RETRIEVE_MODE_CONTENT 体
1 - HTTPTEST_STEP_RETRIEVE_MODE_HEADERS 头
2 - HTTPTEST_STEP_RETRIEVE_MODE_BOTH 体和头
`request_method` -- default=0
0 - HTTPCHECK_REQUEST_GET GET
1 - HTTPCHECK_REQUEST_POST POST
2 - HTTPCHECK_REQUEST_PUT PUT
3 - HTTPCHECK_REQUEST_HEAD HEAD
`verify_peer` -- default=0, SSL验证对端
0 - HTTPTEST_VERIFY_PEER_OFF 否
1 - HTTPTEST_VERIFY_PEER_ON 是
`verify_host` -- default=0, SSL验证主机
0 - HTTPTEST_VERIFY_HOST_OFF 否
1 - HTTPTEST_VERIFY_HOST_ON 是
`allow_traps` -- default=0
0 - HTTPCHECK_ALLOW_TRAPS_OFF 关闭
1 - HTTPCHECK_ALLOW_TRAPS_ON 开启
`discover` -- default=0
0 - ITEM_DISCOVER 自动发现
1 - ITEM_NO_DISCOVER 非自动发现
`inventory_link` -- default=0
0 - 无
1 - 类型
2 - 类型(全细节)
3 - 名称
4 - 别名
5 - 操作系统
6 - 操作系统(所有细节)
7 - 操作系统( 简短)
8 - 序列号A
9 - 序列号B
10 - 标签
11 - 资产标签
12 - Mac 地址 A
13 - Mac 地址 B
14 - 硬件
15 - 硬件(全细节)
16 - 软件
17 - 软件(全细节)
18 - 软件应用程序A
19 - 软件应用程序B
20 - 软件应用程序C
21 - 软件应用程序D
22 - 软件应用程序E
23 - 联系
24 - 位置
25 - 位置纬度
26 - 位置经度
27 - 备注
28 - 机壳
29 - 模型
30 - 硬件架构
31 - 提供者
32 - 合同号码
33 - 安装名称
34 - 部署状态
35 - URL A
36 - URL B
37 - URL C
38 - 主机网络
39 - 主机子网掩码
40 - 主机路由
41 - 带外 IP 地址
42 - 带外子网掩码
43 - 带外路由器
44 - 硬件购买日期
45 - 硬件安装日期
46 - 硬件维修过期日期
47 - 硬件退役日期
48 - 场所地址A
49 - 场所地址B
50 - 场所地址C
51 - 场所城市
52 - 场所州/省
53 - 场所国家
54 - 地址邮政编码
55 - 场所机柜位置
56 - 场所备注
57 - 主要的POC名称
58 - 主要的POC email
59 - 主要的POC电话A
60 - 主要的POC电话B
61 - 主要的POC手机
62 - 主要的POC屏幕名称
63 - 主要的POC注记
64 - 第二个POC名称
65 - 第二个POC email
66 - 第二个POC电话A
67 - 第二个POC电话B
68 - 第二个POC手机号码
69 - 第二个POC聚合图形名称
70 - 第二个POC注记
2,`valuemaps` 监控项值映射表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
valuemapid | BIGINT | 20 | 否 | 监控项值映射主键 | |
name | VARCHAR | 64 | 否 | '' | 映射名称 |
3,`mappings` 监控项值映射明细表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
mappingid | BIGINT | 20 | 否 | 映射明细主键 | |
valuemapid | BIGINT | 20 | 否 | 监控项值映射主键 | |
value | VARCHAR | 64 | 否 | '' | 监控项值 |
newvalue | VARCHAR | 64 | 否 | '' | 转换显示内容,如0值页面显示为Down (0) |
4,`item_discovery` 监控项自动发现依赖表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemdiscoveryid | BIGINT | 20 | 否 | 监控项自动发现主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
parent_itemid | BIGINT | 20 | 否 | 父监控项主键(由该监控项生成其它监控项) | |
key_ | VARCHAR | 2048 | 否 | '' | key值 |
lastcheck | INT | 10 | 否 | '0' | 最后检查时间戳,秒 |
ts_delete | INT | 10 | 否 | '0' | 删除时间戳,秒 |
5,`item_rtdata` 监控项实时错误表
与`items`表共用主键,一对一关系
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
lastlogsize | BIGINT | 20 | 否 | '0' | 最大日志大小 |
state | INT | 10 | 否 | '0' | 状态,0、正常,1、错误 |
mtime | INT | 10 | 否 | '0' | 更新时间 |
error | VARCHAR | 2048 | 否 | '' | 错误消息 |
6,`item_preproc` 自动发现规则 - 监控项进程表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
item_preprocid | BIGINT | 20 | 否 | 主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
step | INT | 10 | 否 | '0' | 处理步骤,从1开始 |
type | INT | 10 | 否 | '0' | 如下: |
params | TEXT | 否 | 处理参数文本 | ||
error_handler | INT | 10 | 否 | '0' | 错误处理次数 |
error_handler_params | VARCHAR | 255 | 否 | '' | 错误处理入参 |
`type`
文本
5 - ZBX_PREPROC_REGSUB 正则表达式截取
25 - ZBX_PREPROC_STR_REPLACE 字符串替换
4 - ZBX_PREPROC_TRIM TRIM去除前后空格
2 - ZBX_PREPROC_RTRIM 去除右边空格
3 - ZBX_PREPROC_LTRIM 去除左边空格
结构化
11 - ZBX_PREPROC_XPATH XML XPATH提取
12 - ZBX_PREPROC_JSONPATH JSON PATH提取
24 - ZBX_PREPROC_CSV_TO_JSON CSV转JSON
算法
1 - ZBX_PREPROC_MULTIPLIER 自定义倍数
更改
9 - ZBX_PREPROC_DELTA_VALUE 简单更改
10 - ZBX_PREPROC_DELTA_SPEED 每秒更改
数字
6 - ZBX_PREPROC_BOOL2DEC 布尔转十进制数
7 - ZBX_PREPROC_OCT2DEC 八进制转十进制
8 - ZBX_PREPROC_HEX2DEC 十六进制转十进制
脚本
21 - ZBX_PREPROC_SCRIPT JavaScript脚本
验证
13 - ZBX_PREPROC_VALIDATE_RANGE 范围验证
14 - ZBX_PREPROC_VALIDATE_REGEX 正则匹配验证
15 - ZBX_PREPROC_VALIDATE_NOT_REGEX 正则不匹配验证
16 - ZBX_PREPROC_ERROR_FIELD_JSON JSON字段错误
17 - ZBX_PREPROC_ERROR_FIELD_XML XML字段错误
18 - ZBX_PREPROC_ERROR_FIELD_REGEX 正则字段错误
丢弃
19 - ZBX_PREPROC_THROTTLE_VALUE 丢弃未改变
20 - ZBX_PREPROC_THROTTLE_TIMED_VALUE 丢弃心跳未改变
PROMETHEUS
22 - ZBX_PREPROC_PROMETHEUS_PATTERN Prometheus pattern
23 - ZBX_PREPROC_PROMETHEUS_TO_JSON Prometheus to JSON
7,`lld_macro_path` 自动发现规则 - 低级别自动发现宏路径
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_macro_pathid | BIGINT | 20 | 否 | 宏主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
lld_macro | VARCHAR | 255 | 否 | '' | 宏 |
path | VARCHAR | 255 | 否 | '' | JSONPath |
8,`item_condition` 自动发现规则 - 监控项过滤器表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
item_conditionid | BIGINT | 20 | 否 | 主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
operator | INT | 10 | 否 | '8' | 8-正则匹配,9-正则不匹配 |
macro | VARCHAR | 64 | 否 | '' | 宏 |
value | VARCHAR | 255 | 否 | '' | 正则表达式 |
`operator`
0 - CONDITION_OPERATOR_EQUAL = 等于
1 - CONDITION_OPERATOR_NOT_EQUAL != 不等
2 - CONDITION_OPERATOR_LIKE LIKE 模糊匹配
3 - CONDITION_OPERATOR_NOT_LIKE NOT LIKE 模糊不匹配
4 - CONDITION_OPERATOR_IN IN 在…之内
5 - CONDITION_OPERATOR_MORE_EQUAL >= 大于等于
6 - CONDITION_OPERATOR_LESS_EQUAL <= 小于等于
7 - CONDITION_OPERATOR_NOT_IN NOT IN 不在…之内
8 - CONDITION_OPERATOR_REGEXP REGEXP 正则匹配
9 - CONDITION_OPERATOR_NOT_REGEXP NOT REGEXP 正则不匹配
10 - CONDITION_OPERATOR_YES YES 是
11 - CONDITION_OPERATOR_NO NO 否
9,`lld_override` 自动发现规则 - 覆盖
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_overrideid | BIGINT | 20 | 否 | 主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
name | VARCHAR | 255 | 否 | '' | 名称 |
step | INT | 10 | 否 | '0' | 步骤顺序 |
evaltype | INT | 10 | 否 | '0' | 如下: |
formula | VARCHAR | 255 | 否 | '' | evaltype=3时,表达式 |
stop | INT | 10 | 否 | '0' | 0、继续覆盖,1、停止处理 |
`evaltype`
0 - CONDITION_EVAL_TYPE_AND_OR AND_OR
1 - CONDITION_EVAL_TYPE_AND AND
2 - CONDITION_EVAL_TYPE_OR OR
3 - CONDITION_EVAL_TYPE_EXPRESSION EXPRESSION
10,`lld_override_condition` 自动发现规则 - 覆盖过滤器表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_override_conditionid | BIGINT | 20 | 否 | 主键 | |
lld_overrideid | BIGINT | 20 | 否 | 覆盖主键 | |
operator | INT | 10 | 否 | '8' | 8-正则匹配,9-正则不匹配 |
macro | VARCHAR | 64 | 否 | '' | 宏 |
value | VARCHAR | 255 | 否 | '' | 正则表达式 |
11,`lld_override_operation` 自动发现规则 - 覆盖操作表
`operationobject`
0 - OPERATION_OBJECT_ITEM_PROTOTYPE 监控项
1 - OPERATION_OBJECT_TRIGGER_PROTOTYPE 触发器
2 - OPERATION_OBJECT_GRAPH_PROTOTYPE 图表
3 - OPERATION_OBJECT_HOST_PROTOTYPE 主机
`operator`
0 - CONDITION_OPERATOR_EQUAL 相等
1 - CONDITION_OPERATOR_NOT_EQUAL 不等
2 - CONDITION_OPERATOR_LIKE 模糊匹配
3 - CONDITION_OPERATOR_NOT_LIKE 模糊不匹配
8 - CONDITION_OPERATOR_REGEXP 正则匹配
9 - CONDITION_OPERATOR_NOT_REGEXP 正则不匹配
` lld_override_opstatus` 自动发现规则 - 覆盖操作 - 创建新的
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_override_operationid | BIGINT | 20 | 否 | 覆盖操作主键 | |
status | INT | 10 | 否 | '0' | 创建新的,0、是,1、否 |
`lld_override_opdiscover` 自动发现规则 - 覆盖操作 - 自动发现
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_override_operationid | BIGINT | 20 | 否 | 覆盖操作主键 | |
discover | INT | 10 | 否 | '0' | 自动发现,0、是,1、否 |
`lld_override_opperiod` 自动发现规则 - 覆盖操作 - 周期更新
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_override_operationid | BIGINT | 20 | 否 | 覆盖操作主键 | |
delay | VARCHAR | 1024 | 否 | '0' | 周期,'1m' |
`lld_override_ophistory` 自动发现规则 - 覆盖操作 - 历史数据存储周期
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_override_operationid | BIGINT | 20 | 否 | 覆盖操作主键 | |
history | VARCHAR | 255 | 否 | '90d' | 历史数据存储周期 |
`lld_override_optrends` 自动发现规则 - 覆盖操作 - 趋势(按小时统计)数据存储周期
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
lld_override_operationid | BIGINT | 20 | 否 | 覆盖操作主键 | |
trends | VARCHAR | 255 | 否 | '365d' | 趋势数据存储周期 |
还有几张表不一一介绍了,都比较简单
`lld_override_opinventory` 清单表
`lld_override_opseverity` 告警等级
`lld_override_optag` 标签
`lld_override_optemplate` 模板
应用集相关表
1,`applications` 应用集表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
applicationid | BIGINT | 20 | 否 | 应用集主键 | |
hostid | BIGINT | 20 | 否 | 主机主键 | |
name | VARCHAR | 255 | 否 | '' | 应用集名称 |
flags | INT | 10 | 否 | '0' | 见公共属性 |
2,`items_applications` 监控项-应用集关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemappid | BIGINT | 20 | 否 | 监控项-应用集关联主键 | |
applicationid | BIGINT | 20 | 否 | 应用集主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 |
3,`application_template` 应用集-模板关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
application_templateid | BIGINT | 20 | 否 | 应用集-模板关联主键 | |
applicationid | BIGINT | 20 | 否 | 应用集主键 | |
templateid | BIGINT | 20 | 否 | 模板主键 |
4,`application_prototype` 应用集原型表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
application_prototypeid | BIGINT | 20 | 否 | 应用集原型主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
templateid | BIGINT | 20 | 否 | 模板主键 | |
name | VARCHAR | 255 | 否 | '' | 应用集原型名称 |
5,`application_discovery` 应用集自动发现表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
application_discoveryid | BIGINT | 20 | 否 | 应用集自动发现主键 | |
applicationid | BIGINT | 20 | 否 | 应用集主键 | |
application_prototypeid | BIGINT | 20 | 否 | 应用集原型主键 | |
name | VARCHAR | 255 | 否 | '' | 名称 |
lastcheck | INT | 10 | 否 | '0' | 最后发现时间戳,秒 |
ts_delete | INT | 10 | 否 | '0' | 删除时间戳,秒 |
6,`item_application_prototype` 监控项-应用集原型关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
item_application_prototypeid | BIGINT | 20 | 否 | 监控项-应用集原型关联主键 | |
application_prototypeid | BIGINT | 20 | 否 | 应用集原型主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 |
函数,事件,触发器等
1,`functions` 函数表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
functionid | BIGINT | 20 | 否 | 主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
triggerid | BIGINT | 20 | 否 | 触发器主键 | |
name | VARCHAR | 12 | 否 | '' | 函数名称 |
parameter | VARCHAR | 255 | 否 | '0' | 函数参数 |
2,`triggers` 触发器表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
triggerid | BIGINT | 20 | 否 | 触发器主键 | |
expression | VARCHAR | 2048 | 否 | '' | 触发器表达式 |
description | VARCHAR | 255 | 否 | '' | 描述信息 |
url | VARCHAR | 255 | 否 | '' | URL地址 |
status | INT | 10 | 否 | '0' | 0、启用,1、禁用 |
value | INT | 10 | 否 | '0' | 0、正常,1、问题 |
priority | INT | 10 | 否 | '0' | 优先级,见下表 |
lastchange | INT | 10 | 否 | '0' | 最后变更时间 |
comments | TEXT | 否 | 注释 | ||
error | VARCHAR | 2048 | 否 | '' | 错误内容 |
templateid | BIGINT | 20 | 是 | NULL | 模板主键 |
type | INT | 10 | 否 | '0' | 问题事件生成模式。0、单个,1、多重 |
state | INT | 10 | 否 | '0' | 0、正常,1、未知 |
flags | INT | 10 | 否 | '0' | 见公共属性 |
recovery_mode | INT | 10 | 否 | '0' | 恢复模式。0、表达式,1、恢复表达式,2、无 |
recovery_expression | VARCHAR | 2048 | 否 | '' | 恢复表达式 |
correlation_mode | INT | 10 | 否 | '0' | 成功关闭事件。0、所有问题,1、匹配tag的所有问题 |
correlation_tag | VARCHAR | 255 | 否 | '' | 匹配tag |
manual_close | INT | 10 | 否 | '0' | 是否允许手动关闭,0、否,1、是 |
opdata | VARCHAR | 255 | 否 | '' | 操作数据 |
discover | INT | 10 | 否 | '0' | 自动发现。0、是,1、否 |
`status`
0 - TRIGGER_STATUS_ENABLED 启用
1 - TRIGGER_STATUS_DISABLED 禁用
`value`
0 - TRIGGER_VALUE_FALSE 正常
1 - TRIGGER_VALUE_TRUE 问题
`priority`
0 - 未分级
1 - 信息
2 - 警告
3 - 一般严重
4 - 严重
5 - 灾难
`type` -- 问题事件生成模式
0 - TRIGGER_MULT_EVENT_DISABLED 单个
1 - TRIGGER_MULT_EVENT_ENABLED 多重
`state`
0 - TRIGGER_STATE_NORMAL 正常
1 - TRIGGER_STATE_UNKNOWN 未知
`recovery_mode` -- 恢复模式
0 - ZBX_RECOVERY_MODE_EXPRESSION 表达式
1 - ZBX_RECOVERY_MODE_RECOVERY_EXPRESSION 恢复表达式
2 - ZBX_RECOVERY_MODE_NONE 无
`correlation_mode` -- 成功关闭事件
0 - ZBX_TRIGGER_CORRELATION_NONE 所有问题
1 - ZBX_TRIGGER_CORRELATION_TAG 匹配tag的所有问题
`manual_close`
0 - ZBX_TRIGGER_MANUAL_CLOSE_NOT_ALLOWED 不允许手动关闭
1 - ZBX_TRIGGER_MANUAL_CLOSE_ALLOWED 允许手动关闭
`discover`
0 - TRIGGER_DISCOVER 自动发现
1 - TRIGGER_NO_DISCOVER 非自动发现
3,`trigger_depends`,触发器依赖
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
triggerdepid | BIGINT | 20 | 否 | 触发器依赖主键 | |
triggerid_down | BIGINT | 20 | 否 | 原触发器 | |
triggerid_up | BIGINT | 20 | 否 | 依赖的触发器 |
triggerid_down 依赖 triggerid_up,触发器之间会循环依赖,我写了个递归查询SQL,如下:
WITH recursive cte AS (
SELECT d.triggerid_down, d.triggerid_up, CONCAT(d.triggerid_down, ',', d.triggerid_up) lineage
FROM trigger_depends d
UNION
SELECT d.triggerid_down, d.triggerid_up, CONCAT(c.lineage, ',', d.triggerid_up) lineage
FROM trigger_depends d
INNER JOIN cte c ON c.triggerid_up = d.triggerid_down
) SELECT * FROM cte
4,`problem` 问题
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
eventid | BIGINT | 20 | 否 | 事件主键,也是问题主键 | |
source | INT | 10 | 否 | '0' | 数据源。0、触发器,3、内部错误 |
object | INT | 10 | 否 | '0' | 对象表。0、触发器,4、监控项,5、低级别规则发现 |
objectid | BIGINT | 20 | 否 | '0' | 对象主键 |
clock | INT | 10 | 否 | '0' | 问题发生时间戳,秒 |
ns | INT | 10 | 否 | '0' | 问题发生纳秒时间 |
r_eventid | BIGINT | 20 | 是 | NULL | 问题恢复事件主键 |
r_clock | INT | 10 | 否 | '0' | 问题恢复时间戳,秒 |
r_ns | INT | 10 | 否 | '0' | 问题恢复纳秒时间 |
correlationid | BIGINT | 20 | 是 | NULL | correlation表主键 |
userid | BIGINT | 20 | 是 | NULL | 用户主键 |
name | VARCHAR | 2048 | 否 | '' | 问题描述 |
acknowledged | INT | 10 | 否 | '0' | acknowledged确认表主键 |
severity | INT | 10 | 否 | '0' | 严重性,参考“触发器的优先级” |
`source`
0 - EVENT_SOURCE_TRIGGERS 来源于触发器
3 - EVENT_SOURCE_INTERNAL 来源于系统内部错误
`object`
0 - EVENT_OBJECT_TRIGGER 触发器对象
4 - EVENT_OBJECT_ITEM 监控项对象
5 - EVENT_OBJECT_LLDRULE 低级别规则发现,LLDRULE Low level discovery rule
我写了一个主机产生哪些问题的触发器
-- 主机问题,过滤掉循环依赖的问题
-- has_up 问题表中是否含有依赖问题
WITH recursive cte AS (
SELECT hp.hostid, hp.objectid triggerid_down, d.triggerid_up, IF(hp1.objectid IS NULL, NULL, 1) has_up
FROM v_hostproblems hp
LEFT JOIN trigger_depends d ON d.triggerid_down = hp.objectid
LEFT JOIN v_hostproblems hp1 ON hp1.hostid = hp.hostid AND hp1.objectid = d.triggerid_up AND hp1.objectid != hp.objectid
UNION
SELECT c.hostid, d.triggerid_down, d.triggerid_up, IF(hp1.objectid IS NULL, NULL, 1) has_up
FROM trigger_depends d
INNER JOIN cte c ON d.triggerid_down = c.triggerid_up
LEFT JOIN v_hostproblems hp1 ON hp1.hostid = c.hostid AND hp1.objectid = d.triggerid_up AND hp1.objectid != c.triggerid_up
)
SELECT * FROM cte
5,`events` 事件表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
eventid | BIGINT | 20 | 否 | 事件主键 | |
source | INT | 10 | 否 | '0' | 数据源,见下 |
object | INT | 10 | 否 | '0' | 来源对象,见下 |
objectid | BIGINT | 20 | 否 | '0' | 对象主键 |
clock | INT | 10 | 否 | '0' | 事件发生时间戳,秒 |
ns | INT | 10 | 否 | '0' | 事件发生纳秒时间 |
value | INT | 10 | 否 | '0' | 事件值,0、正常,1、问题 |
acknowledged | INT | 10 | 否 | '0' | acknowledged确认表主键 |
name | VARCHAR | 2048 | 否 | '' | 问题名称 |
severity | INT | 10 | 否 | '0' | 严重性,参考“触发器的优先级” |
说明:events表数据包含了problem表数据,problem表是events表的子集。所以problem表的主键直接使用的evenid。
events.value=1的数据,在problem中都会产生对应的数据
`source`
0 - EVENT_SOURCE_TRIGGERS 来源于触发器
1 - EVENT_SOURCE_DISCOVERY 来源于自动发现
2 - EVENT_SOURCE_AUTOREGISTRATION 来源于自动注册
3 - EVENT_SOURCE_INTERNAL 来源于内部错误
`object`
0 - EVENT_OBJECT_TRIGGER 触发器对象
1 - EVENT_OBJECT_DHOST 主机自动发现
2 - EVENT_OBJECT_DSERVICE 服务自动发现
3 - EVENT_OBJECT_AUTOREGHOST 主机自动注册
4 - EVENT_OBJECT_ITEM 监控项
5 - EVENT_OBJECT_LLDRULE 低级别规则自动发现
`value`
0 - TRIGGER_VALUE_FALSE 正常
1 - TRIGGER_VALUE_TRUE 问题
6,`correlation` 事件关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
correlationid | BIGINT | 20 | 否 | 事件关联主键 | |
name | VARCHAR | 255 | 否 | '' | 关联名称 |
description | TEXT | 否 | 描述 | ||
evaltype | INT | 10 | 否 | '0' | 如下 |
status | INT | 10 | 否 | '0' | 如下 |
formula | VARCHAR | 255 | 否 | '' | 当evaltype=3时,表达式值 |
`evaltype`
0 - CONDITION_EVAL_TYPE_AND_OR AND_OR
1 - CONDITION_EVAL_TYPE_AND AND
2 - CONDITION_EVAL_TYPE_OR OR
3 - CONDITION_EVAL_TYPE_EXPRESSION EXPRESSION
`status`
0 - ZBX_CORRELATION_ENABLED 启用
1 - ZBX_CORRELATION_DISABLED 禁用
7,`corr_condition` 关联条件
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
corr_conditionid | BIGINT | 20 | 否 | 关联条件主键 | |
correlationid | BIGINT | 20 | 否 | 事件关联主键 | |
type | INT | 10 | 否 | '0' | 如下 |
`type`
0 - ZBX_CORR_CONDITION_OLD_EVENT_TAG 旧标签事件
1 - ZBX_CORR_CONDITION_NEW_EVENT_TAG 新标签事件
2 - ZBX_CORR_CONDITION_NEW_EVENT_HOSTGROUP 新主机组事件
3 - ZBX_CORR_CONDITION_EVENT_TAG_PAIR 标签对事件
4 - ZBX_CORR_CONDITION_OLD_EVENT_TAG_VALUE 旧标签值事件
5 - ZBX_CORR_CONDITION_NEW_EVENT_TAG_VALUE 新标签值事件
8,`corr_condition_group` 关联条件组 corr_condition.type=2
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
corr_conditionid | BIGINT | 20 | 否 | 关联条件主键 | |
operator | INT | 10 | 否 | '0' | 0、等于,1、不等于 |
groupid | BIGINT | 20 | 否 | 主机组主键 |
`operator`
0 - CONDITION_OPERATOR_EQUAL 等于
1 - CONDITION_OPERATOR_NOT_EQUAL 不等于
9,`corr_condition_tag` 关联条件标签表 corr_condition.type=0,1
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
corr_conditionid | BIGINT | 20 | 否 | 关联条件主键 | |
tag | VARCHAR | 255 | 否 | '' | 标签名称 |
10,`corr_condition_tagpair` 关联条件标签对 corr_condition.type=3
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
corr_conditionid | BIGINT | 20 | 否 | 关联条件主键 | |
oldtag | VARCHAR | 255 | 否 | '' | 旧标签 |
newtag | VARCHAR | 255 | 否 | '' | 新标签 |
11,`corr_condition_tagvalue` 关联条件标签值 corr_condition.type=4,5
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
corr_conditionid | BIGINT | 20 | 否 | 关联条件主键 | |
tag | VARCHAR | 255 | 否 | '' | 标签 |
operator | INT | 10 | 否 | '0' | |
value | VARCHAR | 255 | 否 | '' |
`operator`
0 - CONDITION_OPERATOR_EQUAL 相等
1 - CONDITION_OPERATOR_NOT_EQUAL 不等
2 - CONDITION_OPERATOR_LIKE LIKE
3 - CONDITION_OPERATOR_NOT_LIKE NOT LIKE
12,`corr_operation` 关联操作表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
corr_conditionid | BIGINT | 20 | 否 | 关联条件主键 | |
correlationid | BIGINT | 20 | 否 | 事件关联主键 | |
type | INT | 10 | 否 | '0' | 如下: |
0 - ZBX_CORR_OPERATION_CLOSE_OLD 关闭旧标签
1 - ZBX_CORR_OPERATION_CLOSE_NEW 关闭新标签
13,`acknowledges` 问题确认表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
acknowledgeid | BIGINT | 20 | 否 | 问题确认主键 | |
userid | BIGINT | 20 | 否 | 确认人 | |
eventid | BIGINT | 20 | 否 | 事件(问题)主键 | |
clock | INT | 20 | 否 | '0' | 确认时间 |
message | VARCHAR | 2048 | 否 | '' | 确认内容 |
action | INT | 20 | 否 | '0' | 如下: |
old_severity | INT | 20 | 否 | '0' | 原严重性等级,参考问题等级 |
new_severity | INT | 20 | 否 | '0' | 新严重性等级,参考问题等级 |
`action`
0 - ZBX_PROBLEM_UPDATE_NONE 0x00 - 更新为空
1 - ZBX_PROBLEM_UPDATE_CLOSE 0x01 - 更新为关闭
2 - ZBX_PROBLEM_UPDATE_ACKNOWLEDGE 0x02 - 更新为确认
4 - ZBX_PROBLEM_UPDATE_MESSAGE 0x04 - 更新消息
8 - ZBX_PROBLEM_UPDATE_SEVERITY 0x08 - 更新告警等级
16 - ZBX_PROBLEM_UPDATE_UNACKNOWLEDGE 0x10 - 更新为未确认
14,`actions` 事件动作表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
actionid | BIGINT | 20 | 否 | 事件动作主键 | |
name | VARCHAR | 255 | 否 | '' | 名称 |
eventsource | INT | 10 | 否 | '0' | 参考`events`表的source |
evaltype | INT | 10 | 否 | '0' | 参考`correlation`表的evaltype |
status | INT | 10 | 否 | '0' | 0、启用,1、禁用 |
esc_period | VARCHAR | 255 | 否 | '1h' | 默认操作步骤持续时间 |
formula | VARCHAR | 255 | 否 | '' | evaltype=3时,公式 CONDITION_EVAL_TYPE_EXPRESSION |
pause_suppressed | INT | 10 | 否 | '1' | 暂停操作以制止问题 |
`status`
0 - ACTION_STATUS_ENABLED 启用
1 - ACTION_STATUS_DISABLED 禁用
`pause_suppressed`
0 - ACTION_PAUSE_SUPPRESSED_FALSE 否
1 - ACTION_PAUSE_SUPPRESSED_TRUE 是
15,`operations` 动作操作表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
operationid | BIGINT | 20 | 否 | 主键 | |
actionid | BIGINT | 20 | 否 | 动作主键 | |
operationtype | INT | 10 | 否 | '0' | 操作类型 |
esc_period | VARCHAR | 255 | 否 | '0' | 步骤持续时间 |
esc_step_from | INT | 10 | 否 | '1' | 开始步骤 |
esc_step_to | INT | 10 | 否 | '1' | 结束 步骤 |
evaltype | INT | 10 | 否 | '0' | 参考`correlation`表的evaltype |
recovery | INT | 10 | 否 | '0' | 操作恢复类型,0、操作,1、恢复操作 |
`operationtype`
0 - OPERATION_TYPE_MESSAGE 发送消息
1 - OPERATION_TYPE_COMMAND 远程命令
`recovery`
0 - ACTION_OPERATION 操作
1 - ACTION_RECOVERY_OPERATION 恢复操作
历史数据,趋势数据相关表
1、`history` 浮点类型-历史数据表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | '0' | UNIX时间戳,秒 |
value | DOUBLE | 否 | '0' | 浮点数据 | |
ns | INT | 10 | 否 | '0' | 纳秒时间 |
2、`history_str` 字符串类型-历史数据表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | '0' | UNIX时间戳,秒 |
value | VARCHAR | 255 | 否 | '' | 字符串数据 |
ns | INT | 10 | 否 | '0' | 纳秒时间 |
3,`history_text` TEXT文本类型-历史数据表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | '0' | UNIX时间戳,秒 |
value | TEXT | 否 | 文本数据 | ||
ns | INT | 10 | 否 | '0' | 纳秒时间 |
4,`history_uint` 无符号整数类型-历史数据表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | '0' | UNIX时间戳,秒 |
value | BIGINT | 20 | 否 | '0' | 无符号整数数据 |
ns | INT | 10 | 否 | '0' | 纳秒时间 |
5,`history_log` 日志类型-历史数据表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | 0 | UNIX时间戳,秒 |
value | TEXT | 否 | 日志数据 | ||
ns | INT | 10 | 否 | 0 | 纳秒时间 |
timestamp | INT | 10 | 否 | 0 | 日志时间戳 |
source | VARCHAR | 64 | 否 | '' | 日志数据来源 |
severity | INT | 10 | 否 | 0 | 严重性,参考“触发器的优先级” |
logeventid | INT | 10 | 否 | 0 | event主键 |
6,`trends` 浮点类型-趋势数据表
趋势`trends`表数据是从`history`表按小时汇总生成
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | '0' | UNIX时间戳,秒 |
num | INT | 10 | 否 | '0' | 汇总记录总数 |
value_min | DOUBLE | 否 | '0' | 汇总区间最小值 | |
value_avg | DOUBLE | 否 | '0' | 汇总区间平均值 | |
value_max | DOUBLE | 否 | '0' | 汇总区间最大值 |
7,`trends_uint` 无符号整数类型-趋势数据表
趋势`trends_uint`表数据是从`history_uint`表按小时汇总生成
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
itemid | BIGINT | 20 | 否 | 监控项主键 | |
clock | INT | 10 | 否 | '0' | UNIX时间戳,秒 |
num | INT | 10 | 否 | '0' | 汇总记录总数 |
value_min | BIGINT | 20 | 否 | '0' | 汇总区间最小值 |
value_avg | BIGINT | 20 | 否 | '0' | 汇总区间平均值 |
value_max | BIGINT | 20 | 否 | '0' | 汇总区间最大值 |
图形相关表
1,`graphs` 图形表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
graphid | BIGINT | 20 | 否 | 图表主键 | |
name | VARCHAR | 128 | 否 | '' | 图表名称 |
width | INT | 10 | 否 | '900' | 宽 |
height | INT | 10 | 否 | '200' | 高 |
templateid | BIGINT | 20 | 是 | NULL | 模板主键 |
show_work_period | INT | 10 | 否 | '1' | 显示工作时间,0、否,1、是 |
show_triggers | INT | 10 | 否 | '1' | 显示触发器,0、否,1、是 |
graphtype | INT | 10 | 否 | '0' | 图表类型,如下: |
show_legend | INT | 10 | 否 | '1' | 显示图例,0、否,1、是 |
show_3d | INT | 10 | 否 | '0' | 显示3D,0、否,1、是 |
percent_left | DOUBLE | 否 | '0' | 向左百分比线大小 | |
percent_right | DOUBLE | 否 | '0' | 向右百分比线大小 | |
ymin_type | INT | 10 | 否 | '0' | 最小y轴类型,如下: |
ymax_type | INT | 10 | 否 | '0' | 最大y轴类型,如下: |
yaxismin | DOUBLE | 否 | '0' | ymin_type=1时,最小y轴数据 | |
yaxismax | DOUBLE | 否 | '0' | ymax_type=2时,最大y轴数据 | |
ymin_itemid | BIGINT | 20 | 是 | NULL | ymin_type=2时,选择的监控项主键 |
ymax_itemid | BIGINT | 20 | 是 | NULL | ymax_type=2时,选择的监控项主键 |
flags | INT | 10 | 否 | '0' | 参考公共参数属性 |
discover | INT | 10 | 否 | '0' | 自动发现。0、是,1、否 |
`graphtype`
0 - GRAPH_TYPE_NORMAL 常规图
1 - GRAPH_TYPE_STACKED 堆叠图
2 - GRAPH_TYPE_PIE 饼图
3 - GRAPH_TYPE_EXPLODED EXPLODED 分裂图
4 - GRAPH_TYPE_3D 3D
5 - GRAPH_TYPE_3D_EXPLODED 3D 分裂图
6 - GRAPH_TYPE_BAR 条形图
7 - GRAPH_TYPE_COLUMN 柱形图
8 - GRAPH_TYPE_BAR_STACKED 条形堆叠图
9 - GRAPH_TYPE_COLUMN_STACKED 柱形堆叠图
`ymin_type`, `ymax_type`
0 - GRAPH_YAXIS_TYPE_CALCULATED 自动计算
1 - GRAPH_YAXIS_TYPE_FIXED 固定数值
2 - GRAPH_YAXIS_TYPE_ITEM_VALUE 监控项值获取
`discover`
0 - GRAPH_DISCOVER 自动发现
1 - GRAPH_NO_DISCOVER 非自动发现
2,`graphs_items` 图表-监控项关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
gitemid | BIGINT | 20 | 否 | 图表-监控项主键 | |
graphid | BIGINT | 20 | 否 | 图表主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
drawtype | INT | 10 | 否 | '0' | 绘画类型,如下: |
sortorder | INT | 10 | 否 | '0' | 在当前图表中,监控项的排序顺序,从0开始 |
color | VARCHAR | 6 | 否 | '009600' | 颜色 |
yaxisside | INT | 10 | 否 | '0' | Y轴边界起点,如下: |
calc_fnc | INT | 10 | 否 | '2' | 计算函数,如下: |
type | INT | 10 | 否 | '0' | 类型,参考监控项type, |
`drawtype`
0 - GRAPH_ITEM_DRAWTYPE_LINE 线
1 - GRAPH_ITEM_DRAWTYPE_FILLED_REGION 区域填充
2 - GRAPH_ITEM_DRAWTYPE_BOLD_LINE 粗线
3 - GRAPH_ITEM_DRAWTYPE_DOT 点
4 - GRAPH_ITEM_DRAWTYPE_DASHED_LINE 虚线
5 - GRAPH_ITEM_DRAWTYPE_GRADIENT_LINE 梯度线
6 - GRAPH_ITEM_DRAWTYPE_BOLD_DOT 粗点
`calc_fnc`
1 - CALC_FNC_MIN 最小值
2 - CALC_FNC_AVG 平均值
4 - CALC_FNC_MAX 最大值
7 - CALC_FNC_ALL 所有
9 - CALC_FNC_LST 最新值
`yaxisside`
0 - GRAPH_YAXIS_SIDE_LEFT 左侧
1 - GRAPH_YAXIS_SIDE_RIGHT 右侧
2 - GRAPH_YAXIS_SIDE_BOTTOM 底部
3,`graph_discovery` 图表自动发现表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
graphid | BIGINT | 20 | 否 | 图表主键 | |
parent_graphid | BIGINT | 20 | 否 | 父图表主键 | |
lastcheck | INT | 10 | 否 | '0' | 最后检查时间戳,秒 |
ts_delete | INT | 10 | 否 | 删除时间戳,秒 |
-- 项目环境目前比较简单,未发现有递归依赖的图表,若有可以使用如下递归查询
WITH recursive cte AS (
SELECT gd.graphid, gd.parent_graphid, CONCAT(gd.graphid, ',', gd.parent_graphid) paths
FROM graph_discovery gd
UNION
SELECT gd.graphid, gd.parent_graphid, CONCAT(c.paths, ',', gd.parent_graphid) paths
FROM graph_discovery gd
INNER JOIN cte c ON c.parent_graphid = gd.graphid
) SELECT * FROM cte;
4,`graph_theme` 图表主题样式表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
graphthemeid | BIGINT | 20 | 否 | 图表主题样式主键 | |
theme | VARCHAR | 64 | 否 | '' | 主题样式名称 |
backgroundcolor | VARCHAR | 6 | 否 | '' | 背景色 |
graphcolor | VARCHAR | 6 | 否 | '' | 图表颜色 |
gridcolor | VARCHAR | 6 | 否 | '' | 表格颜色 |
maingridcolor | VARCHAR | 6 | 否 | '' | 主表格颜色 |
gridbordercolor | VARCHAR | 6 | 否 | '' | 表格边框颜色 |
textcolor | VARCHAR | 6 | 否 | '' | 文本颜色 |
highlightcolor | VARCHAR | 6 | 否 | '' | 高亮颜色 |
leftpercentilecolor | VARCHAR | 6 | 否 | '' | 左侧百分比颜色 |
rightpercentilecolor | VARCHAR | 6 | 否 | '' | 右侧百分比颜色 |
nonworktimecolor | VARCHAR | 6 | 否 | '' | 非工作时间颜色 |
colorpalette | VARCHAR | 255 | 否 | '' | 调色版,多种颜色 |
WEB场景相关表
1,`httptest` 测试场景表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
httptestid | BIGINT | 20 | 否 | 主键 | |
name | VARCHAR | 64 | 否 | '' | 名称 |
applicationid | BIGINT | 20 | 否 | NULL | 应用集主键 |
nextcheck | INT | 10 | 否 | '0' | 下次检测时间 |
delay | VARCHAR | 255 | 否 | '1m' | 更新周期,默认1分钟 |
status | INT | 10 | 否 | '0' | 0、启用,1、禁用 |
agent | VARCHAR | 255 | 否 | 'Zabbix' | 客户端 |
hostid | BIGINT | 20 | 否 | 主机主键 | |
templateid | BIGINT | 20 | 否 | NULL | 模板主键 |
http_proxy | VARCHAR | 255 | 否 | '' | HTTP 代理 |
retries | INT | 10 | 否 | '1' | 尝试次数 |
authentication | INT | 10 | 否 | '0' | 授权方式 |
http_user | VARCHAR | 64 | 否 | '' | authentication != 0时,授权用户 |
http_password | VARCHAR | 64 | 否 | '' | authentication != 0时,授权密码 |
verify_peer | INT | 10 | 否 | '0' | SSL验证对端 |
verify_host | INT | 10 | 否 | '0' | SSL验证主机 |
ssl_cert_file | VARCHAR | 255 | 否 | '' | SSL证书文件 |
ssl_key_file | VARCHAR | 255 | 否 | '' | SSL秘钥文件 |
ssl_key_password | VARCHAR | 64 | 否 | '' | SSL秘钥密码 |
`status`
0 - HTTPTEST_STATUS_ACTIVE 启用
1 - HTTPTEST_STATUS_DISABLED 禁用
`agent` -- 客户端,默认'Zabbix'
'Microsoft Edge'
'Microsoft Edge 80' - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 Edge/80.0.361.66'
'Microsoft Edge 44' - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362'
'Internet Explorer'
'Internet Explorer 11' - 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)'
'Internet Explorer 10' - 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'
'Internet Explorer 9' - 'Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; Trident/5.0)'
'Internet Explorer 8' - 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)'
'Mozilla Firefox'
'Firefox 73 (Windows)' - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'
'Firefox 73 (Linux)' - 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:73.0) Gecko/20100101 Firefox/73.0'
'Firefox 73 (macOS)' - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:73.0) Gecko/20100101 Firefox/73.0'
'Google Chrome'
'Chrome 80 (Windows)' - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
'Chrome 80 (Linux)' - 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
'Chrome 80 (macOS)' - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
'Chrome 80 (iOS)' - 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/80.0.3987.95 Mobile/15E148 Safari/605.1'
'Chromium 80 (Linux)' - 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/80.0.3987.87 Chrome/80.0.3987.87 Safari/537.36'
'Opera'
'Opera 67 (Windows)' - 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 OPR/67.0.3575.79'
'Opera 67 (Linux)' - 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 OPR/67.0.3575.79'
'Opera 67 (macOS)' - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 OPR/67.0.3575.79'
'Safari'
'Safari 13 (macOS)' - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15'
'Safari 13 (iPhone)' - 'Mozilla/5.0 (Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1'
'Safari 13 (iPad)' - 'Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1'
'Safari 13 (iPod Touch)' - 'Mozilla/5.0 (iPod Touch; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1'
'Others'
'Zabbix' - 'Zabbix'
'Lynx 2.8.8rel.2' - 'Lynx/2.8.8rel.2 libwww-FM/2.14 SSL-MM/1.4.1'
'Links 2.8' - 'Links (2.8; Linux 3.13.0-36-generic x86_64; GNU C 4.8.2; text)'
'Googlebot 2.1' - 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
`authentication`
0 - HTTPTEST_AUTH_NONE 无授权
1 - HTTPTEST_AUTH_BASIC BASIC授权
2 - HTTPTEST_AUTH_NTLM NTLM授权
3 - HTTPTEST_AUTH_KERBEROS KERBEROS授权
`verify_peer` -- SSL验证对端
0 - HTTPTEST_VERIFY_PEER_OFF 否
1 - HTTPTEST_VERIFY_PEER_ON 是
`verify_host` -- SSL验证主机
0 - HTTPTEST_VERIFY_HOST_OFF 否
1 - HTTPTEST_VERIFY_HOST_ON 是
2,`httptestitem` 测试场景-监控项关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
httptestitemid | BIGINT | 20 | 否 | 主键 | |
httptestid | BIGINT | 20 | 否 | 测试场景主键 | |
itemid | BIGINT | 20 | 否 | 监控项主键 | |
type | INT | 10 | 否 | '0' | 类型 |
`type`
2 - HTTPSTEP_ITEM_TYPE_IN 区间范围测试(web.test.in)
3 - HTTPSTEP_ITEM_TYPE_LASTSTEP 失败步骤测试(web.test.fail)
4 - HTTPSTEP_ITEM_TYPE_LASTERROR 错误测试(web.test.error)
3,`httptest_field` 测试场景字段表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
httptest_fieldid | BIGINT | 20 | 否 | 主键 | |
httptestid | BIGINT | 20 | 否 | 测试场景主键 | |
type | INT | 10 | 否 | '0' | 类型 |
name | VARCHAR | 255 | 否 | '' | 字段名称 |
value | TEXT | 否 | 字段值 |
`type`
0 - ZBX_HTTPFIELD_HEADER 请求头字段
1 - ZBX_HTTPFIELD_VARIABLE 变量字段
2 - ZBX_HTTPFIELD_POST_FIELD POST请求体字段
3 - ZBX_HTTPFIELD_QUERY_FIELD GET查询字段
4,`httpstep` 测试步骤
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
httpstepid | BIGINT | 20 | 否 | 测试步骤主键 | |
httptestid | BIGINT | 20 | 否 | 测试场景主键 | |
name | VARCHAR | 64 | 否 | '' | 步骤名称 |
no | INT | 10 | 否 | '0' | 步骤执行顺序号 |
url | VARCHAR | 2048 | 否 | '' | URL |
timeout | VARCHAR | 255 | 否 | '15s' | 超时时间 |
posts | TEXT | 否 | 原生POST请求体内容 | ||
required | VARCHAR | 255 | 否 | '' | 需要返回内容 |
status_codes | VARCHAR | 255 | 否 | '' | 需要返回状态码 |
follow_redirects | INT | 10 | 否 | '1' | 自动跳转,0、关闭,1、开启 |
retrieve_mode | INT | 10 | 否 | '0' | 恢复模式 |
post_type | INT | 10 | 否 | '0' | POST类型 |
`follow_redirects` -- 301,302 响应码自动跳转
0 - HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF 关闭
1 - HTTPTEST_STEP_FOLLOW_REDIRECTS_ON 开启
`retrieve_mode`
0 - HTTPTEST_STEP_RETRIEVE_MODE_CONTENT 体
1 - HTTPTEST_STEP_RETRIEVE_MODE_HEADERS 头
2 - HTTPTEST_STEP_RETRIEVE_MODE_BOTH 头和体
`post_type`
0 - ZBX_POSTTYPE_RAW 原生数据
1 - ZBX_POSTTYPE_FORM 表单数据
5,`httpstepitem` 测试步骤-监控项关联表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
httpstepitemid | BIGINT | 20 | 否 | 主键 | |
httpstepid | BIGINT | 20 | 否 | 测试步骤主键 | |
itemid | BIGINT | 20 | 否 | 监控项主那家 | |
type | INT | 10 | 否 | '0' | 类型 |
`type`
0 - HTTPSTEP_ITEM_TYPE_RSPCODE 响应状态码测试(web.test.rspcode)
1 - HTTPSTEP_ITEM_TYPE_TIME 时间测试(web.test.time)
2 - HTTPSTEP_ITEM_TYPE_IN 区间范围测试(web.test.in)
6,`httpstep_field` 测试步骤字段表
字段名 | 数据类型 | 长度 | 可空 | 默认 | 说明 |
---|---|---|---|---|---|
httpstep_fieldid | BIGINT | 20 | 否 | 主键 | |
httpstepid | BIGINT | 20 | 否 | 测试步骤主键 | |
type | INT | 10 | 否 | '0' | 类型 |
name | VARCHAR | 255 | 否 | '' | 字段名称 |
value | TEXT | 否 | 字段值 |
`type`
0 - ZBX_HTTPFIELD_HEADER 请求头字段
1 - ZBX_HTTPFIELD_VARIABLE 变量字段
2 - ZBX_HTTPFIELD_POST_FIELD POST请求体字段(未用)
3 - ZBX_HTTPFIELD_QUERY_FIELD GET查询字段(未用)