【Z投稿】通过API批量自动生成报表

2021-02-03 11:08:05 浏览数 (1)

大家好,本期Z投稿为大家带来的文章是

《Zabbix通过API批量自动生成报表》

一起来看吧~

文| 李运臣

签名:优秀的判断力来自经验,但经验来自于错误的判断。

关键字: Zabbix,Shell,Python

多年Linux运维经验,精通Zabbix监控系统架构,熟悉Shell,Python等语言脚本的编写等。

微信: lyc100147

Zabbix 优势在于其丰富的api功能,可以高度定制化、扩展。在cmdb资产管理功能、微信操作控制Zabbix功能、获取Zabbix数据制作报表等都利用到了Zabbix api。Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。

Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作(当然前提是你拥有认证账户)。

Zabbix API提供两项主要功能:

1. 远程管理Zabbix配置

2. 远程检索配置和历史数据

API 采用JSON-RPC实现。这意味着调用任何函数,都需要发送POST请求,输入输出数据都是以JSON格式。大致工作流如下:

1. 准备JSON对象,它描述了你想要做什么(创建主机,获取图像,更新监控项等)。

2. 采用POST方法向http://example.com/zabbix/api_jsonrpc.php发送此JSON对象,http://example.com/zabbix/是Zabbix前端地址。api_jsonrpc.php是调用API的PHP脚本。可在安装可视化前端的目录下找到。

3. 获取JSON格式响应。

基本请求格式

Zabbix API简化的JSON请求如下:

{

"jsonrpc": "2.0",

"method": "method.name",

"params": {

"param_1_name": "param_1_value",

"param_2_name": "param_2_value"

},

"id": 1,

"auth": "159121b60d19a9b4b55d49e30cf12b81",

}

现在制作Zabbix报表,都会手动去制作报表或直接在数据库里抽取数据,第一种方法过于麻烦,要是一天两天还可以,日子多了就会很烦,第二种方法直接在数据库中抽取,很不安全,有可能会人为泄露数据,现在是信息化时代,数据比钱还要重要,所以两种方法都不可行,本篇文章主要介绍了通过Zabbix的API端口来获取数据来自动生成报表。

脚本的编程语言是Python语言,版本Python2.7.5,Python语言的使用在于对模块和语法的使用,要想实现此项功能,需要安装模块xlrd(对数据的读取),xlwt(数据的写入),openpyxl(读写Excel 2010文档的Python库),jdcal,et_xmlfile(是安装openpyxl模块的依赖模块),模块下载地址https://pypi.org/project/Openpyxl/#files模块安装完毕后,就可以直接上代码了。

首先第一个脚本,是登录Zabbix的api端口脚本login.py,这里需要修改的地方是请求的IP(注意:是zabbix-server的IP),登录Zabbix的用户和密码,如果不是脚本内的,也是需要修改的,详细脚本请看附件。

点击查看大图

第二个脚本,是定义函数脚本 function.py(这里获取的history.get),如果你想获取其他值,可参考https://www.zabbix.com/documentation/4.0/manual/api,可根据自己需求修改脚本,详细脚本请看附件。

点击查看大图

第三个脚本,是传参调用函数脚本zabbix.py,通过在此目录下创建ip.txt文件(如下图),读取文件内的ip来抽取出对应ip的cpu和内存的历史数据,详细脚本请看附件。

点击查看大图

第四个脚本,是定义取值时间函数脚本time.py,实现的功能是可以让用户可以取出不同时间段的值,更利于用户使用,详细脚本请看附件。

第五个脚本,是写入excel表格脚本excel.py,主要定义了生成excel表格,并将数据写入excel表格的方法和写入格式,详细脚本请看附件。

在该目录下会生成一个test.xls文件,导入到Windows系统内,打开后就能看到生成excel表格了,具体图如下:

点击查看大图

利用excel,即可以图表方式展现服务器的性能报表。

0 人点赞