一看就懂!如何将Zabbix监测到的数据导出?

前言

Zabbix是一款服务器监测应用,有良好的web界面,美中不足的是缺乏导出报表的功能,但是Zabbix同时也提供了强有力的API支持。https://www.zabbix.com/documentation/3.4/zh/manual/api 详细可以看这个。

本系统是我自己写的一个将zabbix监测到的数据导出成Excel表的系统。

后台使用Springboot+JPA+POI

前端使用VUE+ElementUI

源码先行奉上:

后台代码:https://github.com/FENGZHIJIE1998/zabbix-data/

前端代码:https://github.com/FENGZHIJIE1998/zabbix-data-vue/

效果

我们先来看看效果

来看看导出的表格

目前已经实现了历史导出数据记录、设置要导出的监控项,监控项的别名映射设置以及权重排序功能。

 

经过多线程的优化,计算数据大概需要4秒左右

 

食用指南:

部署后台:

1.克隆代码 https://github.com/FENGZHIJIE1998/zabbix-data/

2.修改配置文件 application.yml

需要将以下地方修改为你的设置

3.导入sql

sql文件再resource的sql目录下。

4.启动项目。

 

部署前端:

1.克隆前端代码 https://github.com/FENGZHIJIE1998/zabbix-data-vue/

2.执行命令

npm install
npm run serve

 

代码介绍

后台使用的是Springboot JPA POI技术,详细不展开。

1.获取数据

首先是调用Zabbix提供的API,在DataServiceImpl里,通过HTTPClient工具进行数据获取。关于zabbixapi的使用这里不展开说。

声明了一个内部类,AsynClu进行多线程异步计算,因为每个主机的数据是不会交叉的,所以我们采用多线程各个主机计算各自数据的思路。同时实现有返回值的Callable接口,将计算好的结果返回。

根据构造顺序执行:

1.login()方法获取token

2.getHost()获取主机项

通过设置output和selectInterfaces这两个参数可以获取到想要的数据,减少数据解析的消耗

String[] output = {"hostid", "host", "name", "ip"};
String[] selectInterfaces = {"ip"};

3.getItem()获取监控项

同样这里也是设置了output属性

String[] output = {"itemid", "hostid", "name", "key_", "value_type", "units"};

4.getHistory()获取对应时间范围内的历史数据

这里注意zabbix本身不同数据类型的历史数据是存放在不同表里的,我们查找时应根据getItem里获取到的value_type设置参数,否则会出现数据获取不到的情况

historyDTO.setHistory(Integer.valueOf(item.getValue_type()));

 5.calculate()方法是对获取到的历史数据进行计算,获取最大最小值、平均值、差值。这一步其实就是根据你的需求来,你需要计算出什么样的值。注意你可能需要单位换算,单位换算的代码我还未想好如何能够更高效的换算,有思路的大佬欢迎留言。

6.将计算的数据排序返回,添加到res集合中

List<DataResponse> dataResponses = future.get();
res.addAll(dataResponses);

7.对数据进行excel填充,这里就不展开说了,关于POI的使用说明自行查找吧,太多了。

代码介绍就到这里

 

说明:本系统用于内网运维使用,所以就没有做登录模块,有需要的小伙伴可以看我的关于登录拦截的博客啦

 

这是第一版,如果有任何问题,请留下你的评论或者issue。如果觉得好用,客官别忘了点赞呀,能够去GitHub上star一下就更好了

 


有什么问题可以评论或者私信我,每日在线解(LIAO)疑(SAO)。

我是大誌,一位准备996的卑微码农🐶,觉得好用记得点赞收藏!!!

  • 24
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大誌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值