详解如何调用zabbix API获取主机
前言
zabbix 作为企业级的系统和网络监控方案,对于中小型公司来说基本可以很好的满足对机器的监控需求,因为其部署方便,操作简单深受现在各个互联网公司喜爱,所以现在基本的互联网公司监控用zabbix的非常多,当你安装好zabbix服务端 后,如果启动自动注册功能,在所有客户机安装后会自动在zabbix平台上被监控到,但这里有个问题,如果你机器数量非常少,如果还能数的过来那基本没什么问题,但如果你机器上千台了,这个时候那些机器被监控中,那些没被监控,查起来就没那么方便了,所以日常运维中经常发现的问题就是某台机器故障了但没报警,经查发现这台机器zabbix客户端因为某种原因导致没有被服务端监控到,像这种问题怎么办呢?其实最简单的方案就是从zabbix里获取所有被监控的服务器列表,然后跟运维资产数据库去比对,如果数量一致,那说明监控没漏机器,如果比对不上,就把对不上的IP发出来再报个警就可以了,整体逻辑就是这样。
Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】。
Zabbix API提供两项主要功能:
- 远程管理Zabbix配置
- 远程检索配置和历史数据
我们今天用zabbix api获取被监控的所有机器列表
代码如下
#!/usr/bin/evn python import requests import json ZABIX_ROOT = 'http://10.0.1.29/zabbix' url = ZABIX_ROOT + '/api_jsonrpc.php' # user.login 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() # host.get 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就不做太多解释了。
总结
以上就是关于调用zabbix API获取主机的全部内容了,喜欢的小伙伴可以在此基础上修改成合适自己业务的脚本,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
- Zabbix 2.4.5自带MySQL监控的配置使用教程
- ubuntu系统下部署zabbix服务器监控的方法教程
- zabbix v3.0安装部署全过程详解
- python批量添加zabbix Screens的两个脚本分享
- 解决zabbix server is running | No.的方法
- zabbix利用python脚本发送报警邮件的方法
- CentOS 7.2安装Zabbix 3.2教程详解
- zabbix 2.2安装步骤详细介绍
- Zabbix添加Node.js监控的方法
- Zabbix实现微信报警功能
- 微信报警 zabbix实现详解
- Windows 安装配置 Zabbix Agentd
- 使用zabbix监控mongodb的方法
- 安装配置Zabbix来监控MySQL的基本教程
- zabbix进行数据库备份以及表分区的方法
- Zabbix邮件报警设置方法
- Zabbix监控交换机设置方法
- Mysql优化之Zabbix分区优化
- python调用zabbix api 实现主机添加等功能
- OpenDayLight 氢版本 RestAPI 调用实例(2)-主机信息获取(Python)
- Zabbix 调用API 批量添加主机 (读取Excel)
- 如何获取youtobe中的视频的缩略图等相关信息(调用API返回)?
- Zabbix 调用API 批量添加主机等
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- Java通过调用API获取zabbix监控
- 免费PM2.5数据如何获取之PM25.in网站API调用JSON数据处理方法
- 探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
- zabbix 二次开发之调用api接口获取历史数据
- 利用zabbix api 带入 组ID 和 监控项目键值 获取所有主机的值
- Java通过调用API获取zabbix监控
- python通过zabbix api获取主机
- 如何采用Python zabbix_api 获取性能数据
- 如何调用FindWindow API获取主窗体
- OpenDayLight 氢版本 RestAPI 调用实例(2)-主机信息获取(Java)
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
- 探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
- Zabbix 调用API 批量添加主机到主机组中 (读取Excel)
- 如何使用python3调用openstack keystone identity REST api接口获取X-AUTH-TOKEN