以下是一个使用 Python 编写的 Zabbix 自动巡检脚本示例,该脚本可以实现获取 Zabbix 中的主机信息、监控项信息以及告警信息等功能。在运行此脚本前,你需要安装 pyzabbix
库,可以使用 pip install pyzabbix
进行安装。
from pyzabbix import ZabbixAPI
import datetime
# Zabbix 服务器信息
ZABBIX_SERVER = "http://your_zabbix_server/zabbix"
ZABBIX_USER = "your_username"
ZABBIX_PASSWORD = "your_password"
def connect_to_zabbix():
"""
连接到 Zabbix 服务器
"""
zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.login(ZABBIX_USER, ZABBIX_PASSWORD)
print(f"Connected to Zabbix API Version {zapi.api_version()}")
return zapi
def get_all_hosts(zapi):
"""
获取所有主机信息
"""
hosts = zapi.host.get(output=["host", "status"])
return hosts
def get_triggers(zapi):
"""
获取所有触发的告警信息
"""
triggers = zapi.trigger.get(
output=["description", "priority", "value"],
filter={"value": 1}, # 只获取触发的告警
expandDescription=1,
selectHosts=["host"]
)
return triggers
def get_items(zapi, hostid):
"""
获取指定主机的所有监控项信息
"""
items = zapi.item.get(
output=["name", "key_", "lastvalue"],
hostids=hostid
)
return items
def main():
# 连接到 Zabbix 服务器
zapi = connect_to_zabbix()
# 获取所有主机信息
hosts = get_all_hosts(zapi)
print("\n### 主机信息 ###")
for host in hosts:
print(f"主机名: {host['host']}, 状态: {'启用' if host['status'] == '0' else '禁用'}")
# 获取所有触发的告警信息
triggers = get_triggers(zapi)
print("\n### 告警信息 ###")
if triggers:
for trigger in triggers:
host_name = trigger["hosts"][0]["host"]
print(f"主机: {host_name}, 告警描述: {trigger['description']}, 优先级: {trigger['priority']}")
else:
print("当前没有触发的告警。")
# 获取部分主机的监控项信息(这里只获取前 2 个主机)
print("\n### 监控项信息 ###")
for host in hosts[:2]:
hostid = host["hostid"]
items = get_items(zapi, hostid)
print(f"\n主机: {host['host']}")
for item in items:
print(f"监控项名称: {item['name']}, 监控项键: {item['key_']}, 最新值: {item['lastvalue']}")
# 记录巡检时间
now = datetime.datetime.now()
print(f"\n巡检时间: {now.strftime('%Y-%m-%d %H:%M:%S')}")
if __name__ == "__main__":
main()
脚本说明:
- 连接到 Zabbix 服务器:通过
connect_to_zabbix
函数使用pyzabbix
库连接到 Zabbix 服务器。 - 获取主机信息:
get_all_hosts
函数获取所有主机的名称和状态。 - 获取告警信息:
get_triggers
函数获取所有触发的告警信息,包括告警描述、优先级和所属主机。 - 获取监控项信息:
get_items
函数获取指定主机的所有监控项信息,包括监控项名称、键和最新值。 - 主函数:
main
函数调用上述函数,依次获取主机信息、告警信息和部分主机的监控项信息,并记录巡检时间。
使用方法:
- 将
ZABBIX_SERVER
、ZABBIX_USER
和ZABBIX_PASSWORD
替换为你的 Zabbix 服务器地址、用户名和密码。 - 运行脚本:
python zabbix_inspection.py
。
扩展功能:
- 可以将巡检结果保存到文件中,方便后续查看和分析。
- 可以根据告警优先级进行不同的处理,例如发送邮件或短信通知。