IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【数据可视化】基于DataEase制作Zabbix监控系统-告警监控大屏 -> 正文阅读

[大数据]【数据可视化】基于DataEase制作Zabbix监控系统-告警监控大屏

制作Zabbix告警监控大屏的背景介绍:

1、希望能够更直观的看到当前告警主机、告警主机组、告警分布、主机被监控情况等跟告警相关的内容;

2、公司的Zabbix监控系统的数据库系统为MySQL;

3、公司部署了DataEase。

下图为成果图:

?一、新建Zabbix的MySQL数据源,如下图所示:

?二、添加对应的数据集

1、添加数据库数据集:选择hosts表、hstgrp表,创建定时同步的数据库数据集

?2、添加MySQL数据集,如下图所示,SQL语句在图后,依次添加数据集

?(1)创建问题告警级别分布数据集,MySQL语句如下:

SELECT
	COUNT(p.severity) count,
	p.severity,
	(
		CASE p.severity
		WHEN '0' THEN
			'未定义'
		WHEN '1' THEN
			'信息'
		WHEN '2' THEN
			'警告'
		WHEN '3' THEN
			'一般严重'
		WHEN '4' THEN
			'严重'
		WHEN p.severity = '5' THEN
			'灾难'
		ELSE
			'未知'
		END
	) severityName
FROM
	problem p
LEFT JOIN (
	SELECT
		s1.triggerid,
		(
			SELECT
				s2.itemid
			FROM
				functions s2
			WHERE
				s2.triggerid = s1.triggerid
			LIMIT 1
		) itemid
	FROM
		functions s1
	GROUP BY
		s1.triggerid
) f ON f.triggerid = p.objectid
LEFT JOIN `items` i ON i.itemid = f.itemid
LEFT JOIN `hosts` h ON h.hostid = i.hostid
LEFT JOIN `interface` inf ON inf.hostid = h.hostid
WHERE
	ISNULL(p.r_eventid)
AND h. STATUS = 0
AND i.`status` = 0
GROUP BY
	p.severity
ORDER BY
	p.severity ASC

(2)创建问题列表数据集,MySQL语句如下:

SELECT
	p.eventid,
	FROM_UNIXTIME(p.clock) time,
	p.clock,
	p. NAME pname,
	p.acknowledged,
	p.severity,
	(
		CASE p.severity
		WHEN '0' THEN
			'未定义'
		WHEN '1' THEN
			'信息'
		WHEN '2' THEN
			'警告'
		WHEN '3' THEN
			'一般严重'
		WHEN '4' THEN
			'严重'
		WHEN p.severity = '5' THEN
			'灾难'
		ELSE
			'未知'
		END
	) severityName,
	p.objectid,
	i.`status`,
	i.key_,
	f.itemid,
	h. HOST,
	h. NAME,
	concat(inf.ip, ":", inf. PORT) ip,
	inf. PORT
FROM
	problem p
LEFT JOIN (
	SELECT
		s1.triggerid,
		(
			SELECT
				s2.itemid
			FROM
				functions s2
			WHERE
				s2.triggerid = s1.triggerid
			LIMIT 1
		) itemid
	FROM
		functions s1
	GROUP BY
		s1.triggerid
) f ON f.triggerid = p.objectid
LEFT JOIN `items` i ON i.itemid = f.itemid
LEFT JOIN `hosts` h ON h.hostid = i.hostid
LEFT JOIN `interface` inf ON inf.hostid = h.hostid
WHERE
	ISNULL(p.r_eventid)
AND h. STATUS = 0
AND i.`status` = 0
ORDER BY
	clock DESC

(3)创建问题主机组数据集,MySQL语句如下:

SELECT
	count(DISTINCT h.hostid) problemNum,
	(
		SELECT
			COUNT(hg.hostid)
		FROM
			hosts_groups hg
		WHERE
			hg.groupid = hs.groupid
	) total,
	(
		SELECT
			COUNT(hg.hostid)
		FROM
			hosts_groups hg
		WHERE
			hg.groupid = hs.groupid
	) - count(DISTINCT h.hostid) normal,
	hs. NAME
FROM
	problem p
LEFT JOIN (
	SELECT
		s1.triggerid,
		(
			SELECT
				s2.itemid
			FROM
				functions s2
			WHERE
				s2.triggerid = s1.triggerid
			LIMIT 1
		) itemid
	FROM
		functions s1
	GROUP BY
		s1.triggerid
) f ON f.triggerid = p.objectid
LEFT JOIN `items` i ON i.itemid = f.itemid
LEFT JOIN `hosts` h ON h.hostid = i.hostid
LEFT JOIN hosts_groups hg ON hg.hostid = h.hostid
LEFT JOIN hstgrp hs ON hs.groupid = hg.groupid
WHERE
	ISNULL(p.r_eventid)
AND h. STATUS = 0
AND i.`status` = 0
GROUP BY
	hs. NAME,
	hs.groupid
ORDER BY
	NAME

(4)创建主机问题排行数据集,MySQL语句如下:

SELECT
	COUNT(h. NAME) count,
	h. NAME
FROM
	problem p
LEFT JOIN (
	SELECT
		s1.triggerid,
		(
			SELECT
				s2.itemid
			FROM
				functions s2
			WHERE
				s2.triggerid = s1.triggerid
			LIMIT 1
		) itemid
	FROM
		functions s1
	GROUP BY
		s1.triggerid
) f ON f.triggerid = p.objectid
LEFT JOIN `items` i ON i.itemid = f.itemid
LEFT JOIN `hosts` h ON h.hostid = i.hostid
WHERE
	ISNULL(p.r_eventid)
AND h. STATUS = 0
AND i.`status` = 0
GROUP BY
	h. NAME
ORDER BY
	count DESC

(5)创建主机状态分布数据集,MySQL语句如下:

SELECT
	available,
	(
		CASE available
		WHEN '0' THEN
			'可用'
		WHEN '1' THEN
			'不可用'
		WHEN '2' THEN
			'未知'
		ELSE
			'未知'
		END
	) 主机状态,
	count(available) 主机数量
FROM
	`hosts`
WHERE
	`status` = '0'
AND `flags` = '0'
GROUP BY
	`available`;

三、创建仪表板和视图

(1)创建空白仪表板

?(2)创建告警类别数量统计视图,选择告警级别分布数据集,创建图表类型为Echarts的饼图

?(3)创建主机状态数量统计视图,选择主机状态分布数据集,创建图表类型为Echarts的饼图,操作可参考(2)

(4)创建主机数量指标卡,选择数据库hstgrp表数据集制作,其它指标制作方式一样选择不同的数据集即可

?(5)创建Top 10 待处理问题的主机,选择主机问题排行MySQL数据集,图标类型选择为横向柱状图;这里需要注意的是有些字段我进行了脱敏处理,所以按照图示选择维度和指标

?(7)创建Top 10 主机组告警视图,选择问题主机组数据集,创建图表类型为横向柱状图,操作可参考(6)

(8)创建待处理告警详情视图,选择问题列表数据集,创建图标类型为汇总表;这里需要注意的是有些字段我进行了脱敏处理,所以按照图示选择维度和指标

?

?(9)创建主机组设备异常/正常对比视图,选择问题主机组数据集,创建图表类型为基础柱状图;这里需要注意的是有些字段我进行了脱敏处理,所以按照图示选择维度和指标

?(10)创建告警趋势视图,选择问题列表数据集,创建图表类型为基础折线图;这里需要注意的是有些字段我进行了脱敏处理,所以按照图示选择维度和指标

?四、根据实际情况调整整体仪表板样式即可。

至此,Zabbix告警监控大屏制作结束,效果如下,欢迎各位指正!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:59:31  更:2022-09-30 01:03:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:40:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码