zabbix主动模式监控ProxmoxVE平台基础指标
zabbix主动模式监控PVE虚拟机
2025年3月10日
14:51
1、客户端为pve7.4环境,使用对应agent7.0版本(测试其他低版本获取不到数据)
zabbix agent客户端安装
zabbix-agent7.0官网指引地址 https://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=debian&os_version=11&components=agent&db=&ws=
# dpkg -i zabbix-release_7.0-2+debian11_all.deb
# apt update #必须更新安装包才能获取7.0版本
# apt install zabbix-agent
# systemctl restart zabbix-agent
# systemctl enable zabbix-agent
2、agent主动模式配置
在agent端的配置文件添加如下参数
模板化配置文件只确定如下参数:
ServerActive=xxxxx:30051 #服务端映射出来的10051端口(建议把10051和10050同时映射出来)
Hostname=192.168.100.11_myy01 #主机名称,主机名称必须跟web页面的名称一致
|
实际配置文件信息 root@myy01:/etc/zabbix# cat zabbix_agentd.conf | grep -v "^$\|^#" PidFile=/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=127.0.0.1 ServerActive=xxxxx:30051 Hostname=192.168.11.253_qh_fhcjf_myy01 Include=/etc/zabbix/zabbix_agentd.d/*.conf UserParameter=cpu.used,top -b -n1| awk 'NR==3' | awk '{print 100-$8}' UserParameter=mem.used,free -m | awk 'NR==2{printf "%.2f\n",100-$4/$2*100}' UserParameter=mem.top,free -g | awk 'NR==2{print$2}' UserParameter=swap.used,free -m | awk 'NR==3{printf "%.2f\n",$3/$2*100}' | sed 's/-nan/0/p' | head -1 UserParameter=os.uptime,cat /proc/uptime |awk '{days=int($1/86400); hours=int(($1%86400)/3600); minutes=int(($1%3600)/60); seconds=int($1%60); print days "天 " hours ":" minutes ":" seconds}' UserParameter=os.version,pveversion | awk -F '/' '{print$2}' UserParameter=vm.count,ls /etc/pve/qemu-server/| awk -F'.' '$1>1000' | wc -l UserParameter=temp.cpu0,sensors | grep "^Package id 0" | awk -F'+' '{print$2}' | awk -F'°C' '{print$1}' UserParameter=temp.cpu1,sensors | grep "^Package id 1" | awk -F'+' '{print$2}' | awk -F'°C' '{print$1}' UserParameter=temp.connect,sensors | grep "^temp1:" | awk -F'+' '{print$2}' | awk -F'°C' '{print$1}' UserParameter=clamscan.top,cat /etc/zabbix/scripts/clamscan/clamscan.log | awk '/Infected files:/{print$3}' UserParameter=clamscan.log,cat /etc/zabbix/scripts/clamscan/clamscan.log |
3、添加主机并套用做好的模板

4、模板信息
模板包含基础指标和自定义指标
基础指标如下,根据agent配置文件的UserParameter参数进行实现

自定义指标如下


5、自定义指标获取方式
目录结构

1)通过脚本获取本地需要的日志文件信息,日志文件格式必须首行为表头字段说明,其他行为数据行,首列为监控项名称,其他列为值
|
root@myy01:/etc/zabbix/scripts/pve_mv_status# cat vm_used.sh #!/bin/bash . /etc/profile
Os_used_logfile='/etc/zabbix/scripts/pve_mv_status/vm_used.log' Os_status_logfile='/etc/zabbix/scripts/pve_mv_status/vm_status.log' Vm_info_logfile='/etc/zabbix/scripts/pve_mv_status/pve_vm_info.log'
Datas=`qm list | awk '{print$1"\t"$2"\t"$3}' | awk '{if($1>1000)print}'` echo "${Datas}">${Os_status_logfile}
Vids=`echo "${Datas}" | awk 'NR>1{print$1}'`
echo -n "">${Os_used_logfile} for i in `echo "${Vids}"` do Cpu_used=`qm guest exec ${i} --timeout 30 wmic cpu get loadpercentage | grep 'out-data" :' | grep -o "[[:digit:]]*" | awk '{printf "%.2f\n",$1}'` if [ "${Cpu_used}a" = "a" ];then Cpu_used='0' fi Mem_used=`qm guest exec ${i} --timeout 30 wmic OS get FreePhysicalMemory, TotalVisibleMemorySize /format:list | grep 'out-data" :' | grep -o "[[:digit:]]*" | xargs echo | awk '{printf "%.2f\n",(1-$1/$2)*100}'` if [ "${Mem_used}a" = "a" ];then Mem_used='0' fi Disk_used=`qm guest exec ${i} --timeout 30 wmic logicaldisk get size,freespace,caption | grep 'out-data" :' | grep -o "[[:digit:]]*" | xargs echo | awk '{print "C "(1-$1/$2)*100" D "(1-$3/$4)*100}'` echo "${i} ${Cpu_used} ${Mem_used} ${Disk_used}">>${Os_used_logfile} done
printf "%-8s%-16s%-10s%-8s%-8s%-8s%-2s%-8s%-2s%-8s\n" Vid Name Status Used Cpu Mem C C_used D D_used >${Vm_info_logfile} for i in `echo "${Vids}"` do Os_used_data=`cat ${Os_used_logfile} | grep "^${i}" | awk '{$1=""; print}'` Os_status_data=`cat ${Os_status_logfile} | grep "^${i}"` echo "${Os_status_data} ${Os_used_data}">>${Vm_info_logfile} done root@myy01:/etc/zabbix/scripts/pve_mv_status# |
脚本获取的日志文件

2)zabbix自动发现规则所自定义的脚本
|
root@myy01:/etc/zabbix/scripts/pve_mv_status# cat pve_status_check.sh #!/bin/bash EQ_DATA="$2" ZBX_REQ_DATA_TAB="$1" SOURCE_DATA='/etc/zabbix/scripts/pve_mv_status/pve_vm_info.log' case $2 in Status) grep -E "^${ZBX_REQ_DATA_TAB}[[:blank:]]" ${SOURCE_DATA} | awk '{print $3}' ;; Cpu) grep -E "^${ZBX_REQ_DATA_TAB}[[:blank:]]" ${SOURCE_DATA} | awk '{print $4}' ;; Mem) grep -E "^${ZBX_REQ_DATA_TAB}[[:blank:]]" ${SOURCE_DATA} | awk '{print $5}' ;; Cdisk) grep -E "^${ZBX_REQ_DATA_TAB}[[:blank:]]" ${SOURCE_DATA} | awk '{print $7}' ;; Ddisk) grep -E "^${ZBX_REQ_DATA_TAB}[[:blank:]]" ${SOURCE_DATA} | awk '{print $9}' ;; *) echo $ERROR_WRONG_PARAM; exit 1;; esac exit 0 root@myy01:/etc/zabbix/scripts/pve_mv_status# |
|
root@myy01:/etc/zabbix/scripts/pve_mv_status# cat pve_status_discovery.sh #!/bin/bash
SPLEXPORT2=`cat /etc/zabbix/scripts/pve_mv_status/pve_vm_info.log | awk '{print $1}' | awk 'NR > 1{print}' | wc -l` if [ ${SPLEXPORT2} -ne 0 ];then SPLEXPORT=`cat /etc/zabbix/scripts/pve_mv_status/pve_vm_info.log | awk '{print $1}' | awk 'NR > 1{print}'` COUNT=`echo "${SPLEXPORT}" | wc -l` INDEX=0 echo '{"data":[' echo "${SPLEXPORT}" | while read LINE; do echo -n '{"{#SPLEXPORT}":"'${LINE}'"}' INDEX=`expr ${INDEX} + 1` if [ ${INDEX} -lt ${COUNT} ];then echo "," fi done echo ']}' fi |
3)zabbix 自定义监控项阈值参数
|
root@myy01:/etc/zabbix/scripts/pve_mv_status# cd /etc/zabbix/zabbix_agentd.d/ root@myy01:/etc/zabbix/zabbix_agentd.d# cat pve_status.conf UserParameter=pve.status.discovery, /bin/sh /etc/zabbix/scripts/pve_mv_status/pve_status_discovery.sh UserParameter=pve.status[*], /bin/sh /etc/zabbix/scripts/pve_mv_status/pve_status_check.sh $1 $2 |
4)配置计划任务,实现自动获取监控数据
|
root@myy03:/etc/zabbix/zabbix_agentd.d# crontab -l #zabbix */30 * * * * sh /etc/zabbix/scripts/pve_mv_status/vm_used.sh */5 * * * * sh /etc/zabbix/scripts/pve_sysfile_info/pve_sysfile_info.sh
|
6、配置zabbix模板
1)创建模板

2)创建自动发现规则

3)创建监控项

4)创建触发器

6、查看监监控项数据

7、查看告警信息


浙公网安备 33010602011771号