有很多企业用户会使用 Zabbix 做监控,然后想要使用 DataEase 获取 Zabbix 的仪表板数据进行分析,Zabbix 使用的是 MySQL 数据库,但是由于很多用户并不了解 Zabbix 的数据库表结构,想要获取数据就变得很困难。
为了能给大家提供一些帮助,我们研究了一下 Zabbix 数据库的表结构,整理了一些获取 Zabbix 仪表板数据的 SQL 语句,你可以直接使用这些 SQL 语句在 DataEase 中创建 SQL 数据集。
1 主机数量 {#heading-1}
select COUNT(*) from hosts WHERE flags = '0';
已启用/已禁用/模板:
select `status`,
(CASE status
WHEN '0' THEN
'已启用'
WHEN '1' THEN
'已禁用'
WHEN '2' THEN
'未知'
ELSE
'模板'
END
) 主机状态,
count(status) 主机数量
from hosts
WHERE flags = '0'
GROUP BY status;
2 监控项数量 {#heading-2}
select COUNT(*) from items WHERE flags='0' and hostid in (
select hostid from `hosts` WHERE status='0' and flags = '0'
);
已启用/已禁用/不支持:
select state,
(CASE state
WHEN '0' THEN
'已启用'
WHEN '1' THEN
'不支持'
ELSE
'未知'
END
) 监控项状态,
COUNT(state) as '监控项数量'
from items
WHERE flags='0' and hostid in (
select hostid from `hosts` WHERE status='0' and flags = '0'
)
GROUP BY state;
3 触发器数量(已启用/已禁用 [问题/正常]) {#heading-3}
-- 已启用数量
select COUNT(*) from triggers WHERE triggerid in (select objectid from events);
问题/正常:
select `value`,
(CASE `value`
WHEN '1' THEN
'问题'
ELSE
'正常'
END
) 状态,
COUNT(`value`) as '触发器数量'
from `triggers` WHERE triggerid in (select objectid from `events`)
GROUP BY `value`;
4 用户数(线上) {#heading-4}
select COUNT(*) from users;
登陆过的有效用户数:
select COUNT(*) from users WHERE userid in (select userid from sessions);