关于python调用zabbix api接口的自动化实例 [结合saltstack]

简介:

前言:

   这两天一直做一个叫集群配置管理平台的自动化项目,写了有20多天了,项目做的还算顺利,只是一堆的接口需要写,有点烦。因为clusterops项目到最后肯定是要和监控平台做结合的,这两天也抽时间看了下。   以前自己也写过不少类似zabbix的接口调用教程,当时看的时候,由于时间有限,也都是草草跑demo。


请大家多关注下我的独立博客,更多的关于zabbix二次开发的话题,http://xiaorui.cc


       zabbix的接口挺好理解,任何的程序都可以写,甚至是linux的curl命令。我这边用python的urllib、urllib2来搞的,当然会php的就更好了,因为zabbix的接口是php写的,懂php可以直接用现成的。

zabbix官网有大量的接口,你只要会用zabbix,然后看下api的说明,应该就没啥问题了

https://www.zabbix.com/documentation/1.8/api

简单说三个例子,入个门。

      获取KEY

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
!/usr/bin/env python2. 7
#coding=utf- 8
import  json
import  urllib2
# based url and required header
url =  "http://monitor.example.com/api_jsonrpc.php"
header = { "Content-Type" "application/json" }
# auth user and password
data = json.dumps(
{
     "jsonrpc" "2.0" ,
     "method" "user.login" ,
     "params" : {
     "user" "Admin" ,
     "password" "zabbix"
},
"id" 0
})
# create request object
request = urllib2.Request(url,data)
for  key  in  header:
     request.add_header(key,header[key])
# auth and  get  authid
try :
     result = urllib2.urlopen(request)
except URLError  as  e:
     print  "Auth Failed, Please Check Your Name And Password:" ,e.code
else :
     response = json.loads(result.read())
     result.close()
     print  "Auth Successful. The Auth ID Is:" ,response[ 'result' ]

   获取hostlist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python2. 7
#coding=utf- 8
import  json
import  urllib2
#xiaorui.cc
url =  "http://10.10.10.61/api_jsonrpc.php"
header = { "Content-Type" "application/json" }
# request json
data = json.dumps(
{
     "jsonrpc" : "2.0" ,
     "method" : "host.get" ,
     "params" :{
         "output" :[ "hostid" , "name" ],
         "filter" :{ "host" : "" }
     },
     "auth" : "dbcd2bd8abc0f0320fffab34c6d749d3" ,
     "id" : 1 ,
})
# create request object
request = urllib2.Request(url,data)
for  key  in  header:
     request.add_header(key,header[key])
get  host list
try :
     result = urllib2.urlopen(request)
except URLError  as  e:
     if  hasattr(e,  'reason' ):
         print  'We failed to reach a server.'
         print  'Reason: ' , e.reason
     elif hasattr(e,  'code' ):
         print  'The server could not fulfill the request.'
         print  'Error code: ' , e.code
else :
     response = json.loads(result.read())
     result.close()
     print  "Number Of Hosts: " , len(response[ 'result' ])
     for  host  in  response[ 'result' ]:
         print  "Host ID:" ,host[ 'hostid' ], "Host Name:" ,host[ 'name' ]


添加主机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python2. 7
#coding=utf- 8
import  json
import  urllib2
#xiaorui.cc
url =  "http://10.10.10.61/api_jsonrpc.php"
header = { "Content-Type" "application/json" }
# request json
data = json.dumps(
{
     "jsonrpc" : "2.0" ,
     "method" : "host.create" ,
     "params" :{
         "host" "10.10.10.67" , "interfaces" :
         [{ "type" 1 , "main" 1 , "useip" 1 , "ip" "10.10.10.67" , "dns" "" , "port" "10050" }],
         "groups" : [{ "groupid" "2" }], "templates" : [{ "templateid" "10087" }]
         },
     "auth" : "dbcd2bd8abc0f0320fffab34c6d749d3" ,
     "id" : 1 ,
}
)
# create request object
request = urllib2.Request(url,data)
for  key  in  header:
     request.add_header(key,header[key])
get  host list
try :
     result = urllib2.urlopen(request)
except URLError  as  e:
     if  hasattr(e,  'reason' ):
         print  'We failed to reach a server.'
         print  'Reason: ' , e.reason
     elif hasattr(e,  'code' ):
         print  'The server could not fulfill the request.'
         print  'Error code: ' , e.code
else :
     response = json.loads(result.read())
     result.close()
     print  'ok' zai


原文: http://rfyiamcool.blog.51cto.com/1030776/1358792

我个人觉得zabbix的rest api难点在于key相关的认证,会了之后,再看官网的api文档就一目了然了。

啥时候用?

在我的集群平台下,我可以把暂时下线的服务器,在平台上去除,但是大家有没有想到,你要是吧主机删掉后,监控端会有一堆的通知发给你,所以,在处理主机的时候,顺便调用zabbix的接口,把该主机的监控项目给删掉。

    在我通过saltstack添加lvs后端主机的时候,我也同样可以调用接口,把后端的主机相应的监控都给加进去。


就先这样,有时间再丰富下该文章。


 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1358792,如需转载请自行联系原作者



相关文章
|
2月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
40 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
2月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
33 1
|
29天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
125 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
22 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
2月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 函数与内置函数
本文详细介绍了Python中的函数概念,包括自定义函数、参数传递、局部与全局变量,以及内置函数的使用,还扩展了匿名函数、return和yield、exec()、vars()、iter()、map()、zip()、reversed()和sorted()等高级函数和概念。
22 1
Python接口自动化测试框架(基础篇)-- 函数与内置函数
|
2月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
Python中的流程控制语句if条件控制,涵盖了比较运算符、成员运算符、身份运算符、逻辑运算符的使用,if语句的嵌套,以及如何使用input和print函数进行交互式编程练习。
20 1
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
|
2月前
|
监控 数据可视化 测试技术
Apifox 如何进行 API 自动化测试?经验之谈
选择 Apifox 来进行 API 自动化测试能够确保每次迭代的质量,避免引入新的 bug,还要实现自动化测试、定时测试、产品监控、可视化测试、持续集成等,帮助提高效率,通过设计和执行有针对性的测试用例,来全面验证产品功能,确保软件系统能够正常运行,减少上线后的问题。
Apifox 如何进行 API 自动化测试?经验之谈
|
2月前
|
存储 测试技术 数据库
Python接口自动化测试框架(练习篇)-- 函数编程(一)
本文通过实际的编程练习,讲解了面向过程编程的概念和应用,包括如何定义函数、处理文件读写以及实现用户注册功能,最终将这些过程封装成函数,体现了Python作为脚本语言的面向过程编程特性。
17 2
|
2月前
|
IDE Java 测试技术
Python接口自动化测试框架(基础篇)-- 基础语法(真的很基础)
这篇文章是关于Python编程语言的基础语法介绍,包括编码、标识符、注释、行和缩进、输入输出以及导包等基础知识点,旨在帮助初学者理解并掌握Python编程的基础。
21 2
|
2月前
|
测试技术 Python
Python接口自动化测试框架(练习篇)-- 函数编程(二)
本文通过具体的编程练习,深入探讨了Python中的函数编程,包括如何定义函数、使用参数和返回值,以及函数式编程的技巧和应用,如使用lambda表达式和递归函数解决实际问题。
19 1