以下是一个使用 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()

脚本说明:

  1. 连接到 Zabbix 服务器:通过 connect_to_zabbix 函数使用 pyzabbix 库连接到 Zabbix 服务器。
  2. 获取主机信息get_all_hosts 函数获取所有主机的名称和状态。
  3. 获取告警信息get_triggers 函数获取所有触发的告警信息,包括告警描述、优先级和所属主机。
  4. 获取监控项信息get_items 函数获取指定主机的所有监控项信息,包括监控项名称、键和最新值。
  5. 主函数main 函数调用上述函数,依次获取主机信息、告警信息和部分主机的监控项信息,并记录巡检时间。

使用方法:

  1. ZABBIX_SERVERZABBIX_USERZABBIX_PASSWORD 替换为你的 Zabbix 服务器地址、用户名和密码。
  2. 运行脚本:python zabbix_inspection.py

扩展功能:

  • 可以将巡检结果保存到文件中,方便后续查看和分析。
  • 可以根据告警优先级进行不同的处理,例如发送邮件或短信通知。
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-02-06 09:57:58

results matching ""

    No results matching ""