安装 Zabbix-Agent(PVE 专用源)
·
一、安装 Zabbix-Agent(PVE 专用源)
PVE 是 Debian 系,和 CentOS 源不同,用下面的步骤:
1. 添加官方源(适配 PVE Debian 环境)
wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-4+debian11_all.deb
dpkg -i zabbix-release_6.0-4+debian11_all.deb
apt update
2. 安装客户端
apt install -y zabbix-agent
报错无法正确安装的解决办法
第一步:先卸载冲突的源(必须执行)
rm -f /etc/apt/sources.list.d/zabbix*.list
apt update
第二步:安装 PVE 原生源里的 zabbix-agent(绝对兼容)
apt install -y zabbix-agent
第三步:如果还是不行,执行这个(终极兜底)
wget https://packages.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-agent/zabbix-agent_6.0.30-1%2Bdeb12u1_amd64.deb
dpkg -i zabbix-agent_6.0.30-1+deb12u1_amd64.deb
apt -f install -y
二、修改配置文件
nano /etc/zabbix/zabbix_agentd.conf
修改 3 个核心参数(其余不动):
# 改成你的 Zabbix 服务端 IP
Server=你的Zabbix服务器IP
ServerActive=你的Zabbix服务器IP
# 本机唯一名称(建议写 pve9)
Hostname=pve9
保存退出(nano 里按 Ctrl+O 保存,Ctrl+X 退出)。
三、放行端口(PVE 防火墙)
- 命令行放行(直接生效):
ufw allow 10050/tcp - 也可以在 PVE Web 界面放行:
- 选中
pve9→ 防火墙 → 新建规则 - 方向:入站,协议:TCP,端口:
10050,动作:允许
- 选中
四、启动并设置开机自启
systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent
看到 active (running) 就是正常运行。
五、Zabbix 网页端添加主机
- 配置 → 主机 → 创建主机
- 主机名称:和配置文件里的
Hostname一致(pve9) - 群组:选择对应的分组(如
Linux 服务器) - IP 地址:填 PVE 的内网 IP,端口
10050 - 模板链接:选择
Linux by Zabbix agent - 保存,等待 3-5 分钟,监控图标变绿就是正常采集。
六、关键说明
- 该客户端只会监控 PVE 宿主机本身(CPU、内存、磁盘、系统),不会影响任何虚拟机
- 后续可以自定义监控项,监控宿主机上的虚拟机数量、存储池使用率等
一、PVE 虚拟机运行状态监控脚本
功能说明
- 自动统计:运行中 / 已停止的虚拟机数量
- 可监控指定 VMID 的状态(在线 / 离线)
- 异常状态可配置告警
1. 脚本文件 /etc/zabbix/scripts/pve_vm_status.sh
#!/bin/bash
# 用途:PVE 虚拟机运行状态监控
# 用法:./pve_vm_status.sh [--running|--stopped|--total|VMID]
case "$1" in
--running)
qm status | grep running | wc -l
;;
--stopped)
qm status | grep stopped | wc -l
;;
--total)
qm status | wc -l
;;
*)
if [[ $1 =~ ^[0-9]+$ ]]; then
qm status "$1" | awk '/status:/ {print $2}'
else
echo "Usage: $0 [--running|--stopped|--total|VMID]"
exit 1
fi
;;
esac
2. 设置权限与路径
mkdir -p /etc/zabbix/scripts
chmod 755 /etc/zabbix/scripts/pve_vm_status.sh
chown zabbix:zabbix /etc/zabbix/scripts/pve_vm_status.sh
3. Zabbix-Agent 配置
编辑 /etc/zabbix/zabbix_agentd.conf,添加:
UserParameter=pve.vm.running,/etc/zabbix/scripts/pve_vm_status.sh --running
UserParameter=pve.vm.stopped,/etc/zabbix/scripts/pve_vm_status.sh --stopped
UserParameter=pve.vm.total,/etc/zabbix/scripts/pve_vm_status.sh --total
# 如需监控特定 VMID(例如 100)
UserParameter=pve.vm.status[*],/etc/zabbix/scripts/pve_vm_status.sh $1
重启 agent:
systemctl restart zabbix-agent
4. Zabbix 服务端配置
- 创建监控项:键值
pve.vm.running、pve.vm.stopped - 创建触发器:当
pve.vm.stopped数量异常增加时告警 - 监控单台 VM:键值
pve.vm.status[100],触发器条件:last() <> "running"
二、LVM / 存储池使用率监控脚本
功能说明
- 监控 PVE 默认
local-lvm、自定义 LVM 卷使用率 - 监控目录存储池使用率
- 输出百分比,可直接配置告警阈值
1. 脚本文件 /etc/zabbix/scripts/pve_storage_usage.sh
#!/bin/bash
# 用途:PVE 存储池使用率监控
# 用法:./pve_storage_usage.sh [lvm|dir] <存储名称>
STORAGE_TYPE="$1"
STORAGE_NAME="$2"
case "$STORAGE_TYPE" in
lvm)
# 监控 LVM 卷使用率
lvs --noheadings --units g -o lv_name,lv_size,data_percent | awk -v name="$STORAGE_NAME" '$1 == name {print $3}'
;;
dir)
# 监控目录存储池使用率
MOUNT_POINT=$(pvesm status | awk -v name="$STORAGE_NAME" '$1 == name {print $4}')
if [ -n "$MOUNT_POINT" ]; then
df -P "$MOUNT_POINT" | awk 'NR==2 {print $5}' | sed 's/%//'
else
echo "0"
fi
;;
*)
echo "Usage: $0 [lvm|dir] <storage-name>"
exit 1
;;
esac
2. 设置权限
chmod 755 /etc/zabbix/scripts/pve_storage_usage.sh
chown zabbix:zabbix /etc/zabbix/scripts/pve_storage_usage.sh
3. Zabbix-Agent 配置
# LVM 存储(例如 local-lvm)
UserParameter=pve.storage.lvm[*],/etc/zabbix/scripts/pve_storage_usage.sh lvm $1
# 目录存储(例如 local)
UserParameter=pve.storage.dir[*],/etc/zabbix/scripts/pve_storage_usage.sh dir $1
重启 agent:
systemctl restart zabbix-agent
4. Zabbix 服务端配置
- 监控项:键值
pve.storage.lvm[local-lvm]、pve.storage.dir[local] - 触发器:使用率 > 80% 时告警,> 90% 严重告警
三、宿主机温度、硬件健康监控脚本
功能说明
- 监控 CPU 核心温度、主板温度
- 监控硬盘 SMART 健康状态
- 需安装依赖工具
lm-sensors、smartmontools
1. 安装依赖工具
apt install -y lm-sensors smartmontools
sensors-detect --auto
2. 脚本文件 /etc/zabbix/scripts/pve_hw_health.sh
#!/bin/bash
# 用途:PVE 宿主机硬件健康监控
# 用法:./pve_hw_health.sh [cpu_temp|disk_health|system_temp]
case "$1" in
cpu_temp)
# 获取 CPU 最高核心温度
sensors | awk '/Core/ {print $3}' | sed 's/+//;s/°C//' | sort -nr | head -1
;;
disk_health)
# 监控所有硬盘 SMART 状态(1=正常,0=异常)
for disk in /dev/sd[a-z]; do
if smartctl -H "$disk" 2>/dev/null | grep -q "PASSED"; then
echo 1
exit 0
fi
done
echo 0
;;
system_temp)
# 获取主板/系统温度(根据实际传感器调整)
sensors | awk '/System/ {print $2}' | sed 's/+//;s/°C//' | head -1
;;
*)
echo "Usage: $0 [cpu_temp|disk_health|system_temp]"
exit 1
;;
esac
3. 设置权限
chmod 755 /etc/zabbix/scripts/pve_hw_health.sh
chown zabbix:zabbix /etc/zabbix/scripts/pve_hw_health.sh
# 给 zabbix 用户授权 smartctl
echo "zabbix ALL=(ALL) NOPASSWD: /usr/sbin/smartctl" >> /etc/sudoers
4. Zabbix-Agent 配置
# CPU 最高温度
UserParameter=pve.hw.cpu_temp,/etc/zabbix/scripts/pve_hw_health.sh cpu_temp
# 硬盘健康状态(1=正常,0=异常)
UserParameter=pve.hw.disk_health,/usr/bin/sudo /etc/zabbix/scripts/pve_hw_health.sh disk_health
# 系统温度
UserParameter=pve.hw.system_temp,/etc/zabbix/scripts/pve_hw_health.sh system_temp
重启 agent:
systemctl restart zabbix-agent
5. Zabbix 服务端配置
- CPU 温度触发器:
last(pve.hw.cpu_temp) > 80告警 - 硬盘健康触发器:
last(pve.hw.disk_health) = 0告警(硬盘故障)
四、注意事项
- 权限问题:部分脚本(如 smartctl)需要 sudo 权限,必须在
/etc/sudoers中授权 zabbix 用户。 - 传感器适配:温度监控脚本需根据你的硬件传感器名称调整,可先运行
sensors查看实际输出。 - 测试脚本:配置完成后,先在命令行运行脚本,确认输出正确,再配置到 Zabbix。
- Zabbix 模板:可将以上监控项整合为一个「PVE 宿主机监控模板」,后续添加节点直接套用。
更多推荐



所有评论(0)