【常见问题】如何获取 Zabbix 的仪表板数据


飞致云 发布于 2023-05-25 / 1020 阅读 / 0 评论 /
有很多企业用户会使用 Zabbix 做监控,然后想要使用 DataEase 获取 Zabbix 的仪表板数据进行分析,Zabbix 使用的是 MySQL 数据库,但是由于很多用户并不了解 Zabbix 的数据库表结构,想要获取数据就变得很困难。 为了能给大家提供一些帮助,我们研究了一下 Zabbix

有很多企业用户会使用 Zabbix 做监控,然后想要使用 DataEase 获取 Zabbix 的仪表板数据进行分析,Zabbix 使用的是 MySQL 数据库,但是由于很多用户并不了解 Zabbix 的数据库表结构,想要获取数据就变得很困难。

为了能给大家提供一些帮助,我们研究了一下 Zabbix 数据库的表结构,整理了一些获取 Zabbix 仪表板数据的 SQL 语句,你可以直接使用这些 SQL 语句在 DataEase 中创建 SQL 数据集。

zabbix.png

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 监控项数量

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 触发器数量(已启用/已禁用 [问题/正常])

-- 已启用数量 
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 用户数(线上)

select COUNT(*) from users;

登陆过的有效用户数:

select COUNT(*) from users WHERE userid in (select userid from sessions);


是否对你有帮助?