《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,即可以图表方式展现服务器的性能报表。