ZabbixでKVMゲストVMのメモリ使用率を監視する方法

インフラ

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自動監視も可能です。

コメント

タイトルとURLをコピーしました