Python使用pyzabbix调用Zabbix API
Zabbix是一个开源的提供分布式系统监视以及网络监视功能的解决方案。
Zabbix能监视各种网络参数,监控服务器系统的安全运营状况,并提供灵活的通知机制以让服务器管理员快速定位和解决存在的各种问题。
在使用Zabbix开始监控服务器后,Zabbix就会采集到服务器的各种网络参数,以及管理员自定义的各种各样的监控项数据。
Zabbix有开源的Web端给我们展示数据,包括图形,聚合图等,不过当我们需要批量获取一些数据时,我们在Web端逐个获取数据,效率是非常低的。
Zabbix为我们提供了API,我们可以通过调用API来获取我们想要的数据。
并且,Python中已经有写好的第三方库pyzabbix了,我们可以直接使用。
安装pyzabbix
pip install pyzabbix
通过pyzabbix调用Zabbix API获取数据
登录Zabbix服务器
from pyzabbix import ZabbixAPI
# 安装zabbix server的服务器ip
ZABBIX_SERVER = 'http://example.com'
zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.login('Admin', 'zabbix')
调用API获取数据
# 获取主机
host_list = zapi.host.get(
output="extend",
)
# 获取触发器
triggers = zapi.trigger.get(
output="extend",
selectHosts=['host'],
)
# 获取应用
application_list = zapi.application.get(
hostids='',
output="extend",
)
# 获取监控项
item_list = zapi.item.get(
hostids='',
applicationids='',
output="extend",
)
# 获取模板
template = zapi.template.get(
output="extend",
)
自助查询相关api
最主要的就是官网给出的api
https://www.zabbix.com/documentation/6.0/zh/manual/api/reference
或者 参考库的例子(暂未测试成功)
https://github.com/lukecyca/pyzabbix/tree/master/examples
例子
from pyzabbix import ZabbixAPI
from datetime import datetime
import time
import pprint
# 安装zabbix server的服务器ip
ZABBIX_SERVER = 'http://192.168.1.5'
zapi = ZabbixAPI(ZABBIX_SERVER)
# 登录
zapi.login('Admin', 'zabbix')
# 获取主机的主机ID和主机名
hosts = zapi.host.get(
# 获取所有字段
# output="extend",
# 只获取特定字段
output=[
"hostid",
"host"
],
# 过滤特定字段的特定值
filter={
"host": [
"Zabbix server",
]
}
)
pprint.pprint(hosts)
if len(hosts) > 0:
# 如果获取到了主机,就取出hostid字段
item_list = zapi.item.get(
hostids=hosts[0]["hostid"],
applicationids='',
filter={
"name": [
# 然后查询名称叫做 /: Free inodes in % 的字段的查询项
"/: Free inodes in %",
]
},
output="extend",
)
pprint.pprint(item_list)
if len(item_list) > 0:
# 如果查询项找到了,就取出查询项的ID
item_id = item_list[0]["itemid"]
# 然后根据查询项的ID取出历史记录
historys = zapi.history.get(
# 查询项的ID
itemids=item_id,
history=0,
sortfield="clock",
sortorder="DESC",
limit=10,
output="extend",
)
pprint.pprint(historys)
最后查询历史记录的字段解释:
- history 0表示浮点数
其他可选项
1 - 字符;
2 - 日志;
3 - 无符号数;
4 - 文本。
默认: 3. - sortfield 按给定的属性对结果进行排序。
可能的取值: itemid 和 clock
字段ID或者按时间排序 - sortorder 排序方法 DESC表示倒序
- limit 取出的格数
- output 表示输出的数据 extend表示所有扩展字段 或者设置成特定字段
如何参考
这里以获取历史记录为例
地址 https://www.zabbix.com/documentation/6.0/zh/manual/api/reference/history/get
这个就是方法,使用的话
zapi.history.get()
参数
就是这些参数
或者也可以参考下面的示例,看可以传什么样的参数
可以仿照 示例中 params
的传参方式
放回数据与示例相同
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17715304.html
分类:
Python
, 监控 / zabbix
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构