关于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,如需转载请自行联系原作者



相关文章
|
8月前
|
监控 算法 API
拼多多API团购活动自动化:拼单成功率暴涨的幕后技术解析
本方案通过API自动化引擎破解传统团购效率低、响应慢、数据分散等问题,实现库存、价格、成团的实时联动。实战数据显示,成团时效提升74%,拼单成功率高达92%,人力成本下降80%。某生鲜商家接入后,月GMV突破500万元,成团率高达98.3%。API赋能团购,开启电商效率新纪元。
338 0
|
9月前
|
存储 安全 API
订单处理效率提升80%?揭秘电商API自动化操作的隐藏技巧
本文全面解析电商API的使用方法,涵盖基础概念、实战操作与高级技巧,助力从业者从入门到精通掌握这一关键技术。内容包括API核心功能、接入流程、安全优化及多个业务创新案例,帮助提升电商运营效率与创新能力。
|
9月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
6月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
1497 5
|
7月前
|
缓存 运维 监控
API 别乱跑:自动化运维里的流量管理秘籍
API 别乱跑:自动化运维里的流量管理秘籍
266 9
|
7月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
854 11
|
7月前
|
JSON 监控 测试技术
亚马逊:调用订单退款API自动化处理售后请求,缩短用户等待时间
在电商运营中,售后效率直接影响用户体验与平台声誉。亚马逊订单退款API为卖家提供自动化工具,通过编程方式高效处理退款请求,显著缩短用户等待时间。本文详解如何集成该API,实现退款流程自动化,提升响应速度与用户满意度。
265 0
|
8月前
|
JSON 缓存 供应链
API 接口驱动 1688 采购自动化:从商品获取到下单支付的全流程贯通
在B2B电商采购中,1688开放平台通过API实现商品筛选、比价、下单、支付及物流跟踪的全流程自动化,大幅提升采购效率,降低人工成本与错误率。企业可无缝对接ERP系统,实现数据驱动决策,显著优化采购周期、成本与风险管控,助力数字化转型。
|
9月前
|
JSON JavaScript 安全
抖音电商API自动化直播订单,告别手动处理烦恼!
抖音直播带货订单处理繁琐?本文教你利用抖音电商API实现自动化,省时高效、减少错误,提升运营效率。含Python代码示例,助你轻松上手!
662 0
|
9月前
|
供应链 搜索推荐 安全
淘宝/京东/亚马逊API实战:中小商家的自动化生存指南
电商API是连接电商平台、商家、支付与物流系统的技术桥梁,具备商品管理、订单处理、用户服务、营销支持等功能,助力业务自动化与数据驱动决策,成为电商生态中提升效率与创新的关键基础设施。

热门文章

最新文章

推荐镜像

更多