Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。这篇文章主要介绍了如何调用zabbix API获取主机。
前言
zabbix 作为企业级的系统和网络监控方案,对于中小型公司来说基本可以很好的满足对机器的监控需求,因为其部署方便,操作简单深受现在各个互联网公司喜爱,所以现在基本的互联网公司监控用zabbix的非常多,当你安装好zabbix服务端 后,如果启动自动注册功能,在所有客户机安装后会自动在zabbix平台上被监控到,但这里有个问题,如果你机器数量非常少,如果还能数的过来那基本没什么问题,但如果你机器上千台了,这个时候那些机器被监控中,那些没被监控,查起来就没那么方便了,所以日常运维中经常发现的问题就是某台机器故障了但没报警,经查发现这台机器zabbix客户端因为某种原因导致没有被服务端监控到,像这种问题怎么办呢?其实最简单的方案就是从zabbix里获取所有被监控的服务器列表,然后跟运维资产数据库去比对,如果数量一致,那说明监控没漏机器,如果比对不上,就把对不上的IP发出来再报个警就可以了,整体逻辑就是这样。
Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】。
Zabbix API提供两项主要功能:
我们今天用zabbix api获取被监控的所有机器列表
代码如下
mportant; outline: 0px !important; word-break: break-all !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; overflow: visible !important; position: static !important; vertical-align: baseline !important; box-sizing: content-box !important; font-size: 1em !important; min-height: auto !important; color: rgb(175, 175, 175) !important;" width="NaN" height="NaN"> 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 40 41 42 43 | import requests
import json
ZABIX_ROOT = 'http://10.0.1.29/zabbix'
url = ZABIX_ROOT + '/api_jsonrpc.php'
payload = {
"jsonrpc" : "2.0" ,
"method" : "user.login" ,
"params" : {
'user' : 'Admin' ,
'password' :'',
},
"auth" : None ,
"id" : 0 ,
}
headers = {
'content-type' : 'application/json' ,
}
req = requests.post(url, json = payload, headers = headers)
auth = req.json()
payload = {
"jsonrpc" : "2.0" ,
"method" : "host.get" ,
"params" : {
'output' : [
'hostid' ,
'name' ],
},
"auth" : auth[ 'result' ],
"id" : 2 ,
}
res2 = requests.post(url, data = json.dumps(payload), headers = headers)
res2 = res2.json()
for host in res2[ 'result' ]:
with open ( 'host.txt' , 'a+' ) as f:
f.write(host[ 'name' ] + '\n)
|
脚本一共分二部分,第一部分是用户登录,登录后然后获取主机列表,最后写到一个文件里去,所以脚本运行的结果是生成一个所有被监控的IP列表,通过这个列表你就可以去跟你的资产库信息去对比了,还有这个脚本用的requests,所以看起来要清爽很多,代码比较简单,就是二个post就不做太多解释了。
打赏支付宝微信扫一扫,打赏作者吧~
本文链接:https://www.kinber.cn/post/2596.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:
您阅读本篇文章共花了: