ZabbixからKVMホスト経由で、各ゲストVMのメモリ使用率(%)を取得し、可視化・監視する方法を紹介します。
ゲストOSにZabbixエージェントを入れずに、ホストのlibvirt経由で取得します。
1. スクリプトの配置
以下の内容でスクリプト /etc/zabbix/scripts/monitor_vm_mem_usage.sh を作成します。
#!/bin/bash
VM_NAME="$1"
MEM_STATS=$(virsh -c qemu:///system dommemstat "$VM_NAME" 2>/dev/null)
TOTAL=$(echo "$MEM_STATS" | awk '/actual/ {print $2}')
USED=$(echo "$MEM_STATS" | awk '/rss/ {print $2}')
if [[ -z "$TOTAL" || -z "$USED" || "$TOTAL" -eq 0 ]]; then
echo 0
else
echo "scale=2; $USED / $TOTAL * 100" | bc
fi
実行権限の付与:
chmod +x /etc/zabbix/scripts/monitor_vm_mem_usage.sh
2. Zabbixエージェントの設定
/etc/zabbix/zabbix_agentd.conf に以下を追記:
UserParameter=vm.mem.usage[*],/etc/zabbix/scripts/monitor_vm_mem_usage.sh $1
設定後、Zabbixエージェントを再起動します:
systemctl restart zabbix-agent
3. 動作テスト
以下のようにコマンドラインで動作確認ができます。
sudo -u zabbix /etc/zabbix/scripts/monitor_vm_mem_usage.sh 【仮想マシン名】
出力例:
23.75
→ ゲストVMのメモリ使用率がパーセントで表示されていれば成功です。
4. Zabbixアイテムの設定
- 名前: Memory Usage for {#VMNAME}
- キー:
vm.mem.usage[{#VMNAME}] - タイプ: Zabbixエージェント
- データ型: 浮動小数
- 単位: %
- 更新間隔: 60s(推奨)
補足
この構成では、Zabbixホスト(KVMホスト)からVMのメモリ状態を非侵襲的に監視できます。ディスカバリー対応で全VM自動監視も可能です。

コメント