美文网首页
如何使用Zabbix API批量修正主机名称

如何使用Zabbix API批量修正主机名称

作者: 乐维_lwops | 来源:发表于2024-08-13 15:05 被阅读0次

    先说为什么要修正?

    这其实源自于Ansible安装zabbix agent的一个小Bug。有小伙伴发现,利用ansible批量安装zabbix agent后,zabbix系统上显示的主机名出错了,主机显示的名称都变成了操作系统的IP(如下图),这在一定程度增加了维护难度。

    如果一台一台去修改和校正主机名将会非常耗费时间,这时候就可以利用zabbix API批量修正主机名称。如下:

    1 环境准备

    1.1 基础环境:python3

    具体安装步骤参考网上教程。

    1.2 python3第三方库安装:

    pip install openpyxl requests

    2 获取主机清单

    2.1 示例代码

    import requests

    import json

    import openpyxl

    # Zabbix服务器的URL和认证信息

    zabbix_url = "http://zabbix_web访问IP电子地址/zabbix/api_jsonrpc.php" #Zabbix web 访问地址

    zabbix_username = "zabbix用户名称"

    zabbix_password = "zabbix用户密码"

    # 获取认证令牌

    def get_auth_token():

    payload = {

    "jsonrpc": "2.0",

    "method": "user.login",

    "params": {

    "user": zabbix_username,

    "password": zabbix_password

    },

    "id": 1,

    "auth": None

    }

    headers = {

    'Content-Type': 'application/json-rpc',

    }

    response = requests.post(zabbix_url, headers=headers, data=json.dumps(payload))

    result = response.json()

    if 'result' in result:

    return result['result']

    else:

    raise Exception(f"Error obtaining auth token: {result}")

    # 获取所有手动添加的主机对象(排除自动发现的主机)

    def get_manual_hosts(auth_token):

    payload = {

    "jsonrpc": "2.0",

    "method": "host.get",

    "params": {

    "output": ["hostid", "host", "name"],  # 只获取所需字段

    "filter": {

    "flags": "0"  # 只获取手动添加的主机

    }

    2.2 代码参数修改

    填写zabbix API地址,用户以及密码

    # Zabbix服务器的URL和认证信息

    zabbix_url = "http://zabbix_web访问IP电子地址/zabbix/api_jsonrpc.php" #Zabbix web 访问地址,如:http://192.168.1.1/zabbix/api_jsonrpc.php

    zabbix_username = "zabbix用户名称"

    zabbix_password = "zabbix用户密码"

    注:API地址为zabbix web访问地址,如采用分布式部署(即zabbix web与 zabbix server不在同一台服务器),请勿填写zabbix server服务器地址。

    2.3代码执行

    python3 zabbixApi_hosts.py

    #脚本执行完毕后会在同级目录生成一份excel表zabbix_hosts.xlsx

    3 更新主机可见的名称

    3.1 修改excel表中的可见的名称

    3.2 提交API更新数据

    修改脚本参数

    if __name__ == "__main__":

    #main1() #注释执行main1

    main2()  #mian2为从 zabbix_hosts.xlsx 文件读取更新后的信息并提交到 Zabbix API 进行更新。

    修改前:

    修改后

    这样我们就实现了利用Zabbix API 批量修改主机显示的名称。

    相关文章

      网友评论

          本文标题:如何使用Zabbix API批量修正主机名称

          本文链接:https://www.haomeiwen.com/subject/vorjkjtx.html