Python使用pyzabbix调用Zabbix API

Python使用pyzabbix调用Zabbix API

Zabbix是一个开源的提供分布式系统监视以及网络监视功能的解决方案。

Zabbix能监视各种网络参数,监控服务器系统的安全运营状况,并提供灵活的通知机制以让服务器管理员快速定位和解决存在的各种问题。

在使用Zabbix开始监控服务器后,Zabbix就会采集到服务器的各种网络参数,以及管理员自定义的各种各样的监控项数据。

Zabbix有开源的Web端给我们展示数据,包括图形,聚合图等,不过当我们需要批量获取一些数据时,我们在Web端逐个获取数据,效率是非常低的。

Zabbix为我们提供了API,我们可以通过调用API来获取我们想要的数据。

并且,Python中已经有写好的第三方库pyzabbix了,我们可以直接使用。

一、安装pyzabbix

pip install pyzabbix

二、通过pyzabbix调用Zabbix API获取数据

1.登录Zabbix服务器

from pyzabbix import ZabbixAPI


# 安装zabbix server的服务器ip
ZABBIX_SERVER = 'http://10.1.1.0/zabbix'

zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.login('Admin', 'zabbix')

将上面的ip换成自己的zabbix server的ip,然后输入用户名密码来登录Zabbix,获取一个zapi对象,然后就可以使用zapi对象来调用Zabbix的API了。

2.调用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",
)

通过zapi对象,我们可以获取不同的数据,如主机、触发器、监控项、应用、模板等数据。

在这些数据的get()方法中,如果我们没有传入参数,则会获取所有的数据,如果我们传入参数,则会根据参数返回对应的数据,如在item.get()中传入一个hostids来获取指定host的监控项数据。

3.我们也可以通过key_的方式来查询数据

# 通过key来帅选数据
item_list = zapi.item.get(
    hostids='',
    search={
        "key_": '',
    },
    output="extend",
)

在get()方法中,通过search参数来对数据进行筛选,search获取一个字典类型的参数,在search中我们指定需要获取数据的key_,返回的数据就是指定的内容。

具体在get()中怎么传入参数,可以传入哪些参数呢?可以参考Zabbix API文档,进入接口的详情说明页,里面列出了所有可以设置的参数和参数代表的含义,以及request和response的示例。

Zabbix Documentation: https://www.zabbix.com/documentation/4.0/zh/manual/api

三、调用Zabbix API进行其他操作

使用Zabbix API除了可以在Zabbix上获取数据,也可以向Zabbix添加数据,如添加监控项、导入模板等.

在Github上,可以找到pyzabbix相关的代码案例,我们可以使用这些案例或参考这些案例来开发自己的需求。

pyzabbix examples: https://github.com/lukecyca/pyzabbix/tree/master/examples

四、pyzabbix与py-zabbix

在Python中,除了pyzabbix外,还有另一个库叫py-zabbix,中间有一个横杠,所以在安装和使用的时候不要弄混了。

py-zabbix功能与pyzabbix的功能是有差异的,通常我们会使用它的sender模块下的ZabbixMetric和ZabbixSender来将数据发送到Zabbix上。

用法也比较简单,先pip install py-zabbix安装,然后使用:

from pyzabbix.sender import ZabbixMetric, ZabbixSender


packet = [
  ZabbixMetric('hostname', 'test[system_status]', "OK"),
]

result = ZabbixSender(zabbix_server='zabbix_host', zabbix_port=10051).send(packet)

注意:在Python中导包时py-zabbix中间的横杠要去掉。

在代码中,我们先通过ZabbixMetric()来构建发送的数据包packet,ZabbixMetric()中传入Zabbix上创建的主机,监控项的key,以及需要发送到监控项的数据。然后使用ZabbixSender来将数据包发送到Zabbix平台,ZabbixSender中传入Zabbix服务器的ip和port,然后在send()方法中传入数据包packet,这样数据就会添加到Zabbix监控项了。

 

 

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Python调用Zabbix API批量查询主机的信息,您需要进行以下步骤: 1. 安装 `zabbix-api` 模块:您可以使用 `pip` 命令安装该模块,例如:`pip install zabbix-api` 2. 导入必要的库和模块: ```python from pyzabbix import ZabbixAPI import json ``` 3. 创建 `ZabbixAPI` 对象并登录: ```python zabbix_server = "http://zabbix.example.com" zabbix_user = "username" zabbix_password = "password" zapi = ZabbixAPI(url=zabbix_server, user=zabbix_user, password=zabbix_password) zapi.login() ``` 4. 使用 `host.get` 方法批量查询主机信息: ```python hosts = zapi.host.get(output=['hostid', 'host', 'name', 'status', 'ip']) ``` 此时,变量 `hosts` 将包含所有主机的信息。在这个示例中,我们查询了每个主机的 `hostid`、`host`、`name`、`status` 和 `ip` 信息。 5. 处理查询结果: ```python for host in hosts: print("Host ID:", host['hostid']) print("Host Name:", host['name']) print("Host Status:", host['status']) print("Host IP:", host['ip']) print("------------------------") ``` 以上代码将遍历每个主机,并打印出其 ID、名称、状态和 IP 地址。 完整代码示例: ```python from pyzabbix import ZabbixAPI import json zabbix_server = "http://zabbix.example.com" zabbix_user = "username" zabbix_password = "password" zapi = ZabbixAPI(url=zabbix_server, user=zabbix_user, password=zabbix_password) zapi.login() hosts = zapi.host.get(output=['hostid', 'host', 'name', 'status', 'ip']) for host in hosts: print("Host ID:", host['hostid']) print("Host Name:", host['name']) print("Host Status:", host['status']) print("Host IP:", host['ip']) print("------------------------") ``` 注意:在实际使用中,您可能需要根据具体情况修改查询的参数和返回结果的处理方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小斌哥ge

非常感谢,祝你一切顺利。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值