通过ZABBIX API获取监控服务器的操作系统层信息
要通过 Zabbix API 获取监控服务器的操作系统层信息,您需要执行以下步骤:
API 身份验证:首先需要获取 Zabbix API 的认证令牌。通常这需要使用用户名和密码进行登录操作。
获取主机列表:通过调用主机相关的 API 方法(如
host.get
),来检索受监控的服务器(主机)。获取操作系统信息:Zabbix 通常使用名为 “system.uname” 的键来监控操作系统信息。您需要查看与“system.uname”相关的项(item)。
详细步骤
1. 身份验证
import requests
import json
ZABBIX_API_URL = 'http://your_zabbix_server/zabbix/api_jsonrpc.php'
USERNAME = 'your_username'
PASSWORD = 'your_password'
headers = {
'Content-Type': 'application/json-rpc',
}
# 认证请求
auth_payload = {
'jsonrpc': '2.0',
'method': 'user.login',
'params': {
'user': USERNAME,
'password': PASSWORD
},
'id': 1
}
response = requests.post(ZABBIX_API_URL, headers=headers, data=json.dumps(auth_payload))
auth_token = response.json().get('result')
print(f"Auth Token: {auth_token}")
2. 获取主机列表
if auth_token:
host_payload = {
'jsonrpc': '2.0',
'method': 'host.get',
'params': {
'output': ['hostid', 'name']
},
'auth': auth_token,
'id': 2
}
response = requests.post(ZABBIX_API_URL, headers=headers, data=json.dumps(host_payload))
hosts = response.json().get('result')
print("Hosts:")
for host in hosts:
print(f"ID: {host['hostid']} Name: {host['name']}")
3. 获取操作系统信息
if auth_token and hosts:
for host in hosts:
item_payload = {
'jsonrpc': '2.0',
'method': 'item.get',
'params': {
'output': ['itemid', 'name', 'key_', 'lastvalue'],
'hostids': host['hostid'],
'search': {
'key_': 'system.uname'
}
},
'auth': auth_token,
'id': 3
}
response = requests.post(ZABBIX_API_URL, headers=headers, data=json.dumps(item_payload))
items = response.json().get('result')
for item in items:
print(f"Host: {host['name']}, OS Info: {item['lastvalue']}")
注意事项
- 确保在运行此脚本之前,您的 Zabbix 服务器地址、用户名和密码是正确的。
- 此示例使用 Python 的
requests
库,请确保在运行前安装此库。 - 如果有防火墙或网络策略,请确保允许从您的机器到 Zabbix 服务器的 API 访问。
- 考虑到安全性,不要在生产代码中明文存储用户名和密码。可以使用环境变量或者更安全的秘钥管理系统。
- 确保 Zabbix API 被正确启用,并且您使用的用户拥有 API 访问权限。
通过这些步骤,您可以获取到每个已监控主机的操作系统层级信息(例如 uname 信息)。