반응형
zabbix server version 5.4
HTTP API를 사용하는 방식이 아닌 zabbix agent를 이용한 pvesh로 값을 얻어오는 방식이다.
API 자세한 내용 참조 : https://pve.proxmox.com/pve-docs/api-viewer/
간단하게 vmid를 discovery로 얻어오게 만들고 vm name을 item으로 하는 template을 만든다.
PVE Zabbix Agent 작업
zabbix agent config
- pve.qemu.discovery 이름으로 pvesh_qemu.py 를 실행하여 VMID json 출력
- $1 = node name (pvesh get /nodes)
- pve.qemu.vm.name 은 discovery item
- $1 = node name (pvesh get /nodes)
- $2 = vmid
> cat /etc/zabbix/zabbix_agentd.conf.d/pvesh_qemu.conf
UserParameter=pve.qemu.vm.count[*], /usr/bin/pvesh get /nodes/"$1"/qemu --output-format json | jq '. | length'
UserParameter=pve.qemu.discovery[*], /usr/bin/python3 /etc/zabbix/zabbix_agentd.conf.d/pvesh_qemu.py $1
UserParameter=pve.qemu.vm.name[*], /usr/bin/pvesh get /nodes/"$1"/qemu/"$2"/config --output-format json | jq -r .name
pvesh_qemu.py
#!/usr/bin/python3
import sys
import os
import subprocess
import json
node = sys.argv[1]
cmd = "/usr/bin/pvesh get /nodes/{a}/qemu --output-format json | jq '.[] | .vmid'".format(a=node)
result = subprocess.check_output(cmd, shell=True, universal_newlines=True).split('\n')
data = [{}]
for i in range(0,len(result)):
if result[i]:
if i == 0:
data[i]['{#VMID}'] = int(result[i])
else:
data.append({"{#VMID}":int(result[i])})
print(json.dumps(data))
zabbix server
Macros
discovery
discovery item
반응형
'Monitoring Tools > Zabbix' 카테고리의 다른 글
[zabbix] smart template PVE(proxmox)에 적용하기 (0) | 2023.11.20 |
---|---|
[zabbix] out of memory 로 인한 무한 시작반복 에러 (0) | 2022.12.21 |
zabbix | Slack Webhook을 이용하여 알람 보내기(그래프 포함) (9) | 2022.10.19 |
zabbix | windows process 모니터링 템플릿 만들기 (0) | 2022.09.16 |
[Zabbix] mssql 템플릿 적용 (0) | 2022.05.12 |