https://blog.csdn.net/JReno/article/details/96349837
https://www.zabbix.com/documentation/current/manual/api
https://blog.csdn.net/weixin_43790276/article/details/90664236
from pyzabbix import ZabbixAPI
ZABBIX_SERVER = 'http://zabbix.com'
zapi = ZabbixAPI(ZABBIX_SERVER)
zapi.login('Admin', 'zabbix')
host_list = zapi.host.get(
output=["host"], # kv形式。extend表示所有,主键是默认带的。可以先选择extend,然后看具体要哪个字段
selectInterfaces=["ip"]
)
for host in host_list:
hostid = host['hostid']
hostname = host['host']
hostip = host['interfaces'][0]['ip']
cpu_num = zapi.item.get(
hostids=hostid,
output=["lastvalue"],
search={"key_": "system.cpu.num"}
)[0]['lastvalue']
cpu_idle = zapi.item.get(
hostids=hostid,
output=["lastvalue"],
search={"key_": "system.cpu.util[,idle]"}
)[0]['lastvalue']
mem_total = zapi.item.get(
hostids=hostid,
output=["lastvalue"],
search={"key_": "vm.memory.size[total]"}
)[0]['lastvalue']
mem_free = zapi.item.get(
hostids=hostid,
output=["lastvalue"],
search={"key_": "vm.memory.size[available]"}
)[0]['lastvalue']
disk_total = zapi.item.get(
hostids=hostid,
output=["lastvalue"],
search={"key_": "vfs.fs.size[/,total]"}
)[0]['lastvalue']
disk_used = zapi.item.get(
hostids=hostid,
output=["lastvalue"],
search={"key_": "vfs.fs.size[/,used]"}
)[0]['lastvalue']
print('hostname:{0:45} ip:{1:16} cpu:{2:4} cpu_idle:{3:7}% mem_total:{4:5} MB mem_free:{5:5} MB disk_total:{6:3} GB disk_free:{7:3} GB'.
format(hostname, hostip,
cpu_num, cpu_idle,
int(int(mem_total) / 1000 ** 2), int(int(mem_free) / 1000 ** 2),
int(int(disk_total) / 1000 ** 3), int(int(disk_total) / 1000 ** 3) - int(int(disk_used) / 1000 ** 3)
)
)