ZabbixでKVMゲストVMの起動状態を監視する方法

LINUX

ZabbixからKVMホストを通じて、仮想マシン(ゲストVM)が 起動中か停止中か(running / shut off) を自動で監視する手順を紹介します。


 1. スクリプトの作成

以下の内容で、/etc/zabbix/scripts/monitor_vm_state.sh というスクリプトファイルを作成します。

#!/bin/bash

VM_NAME="$1"

# ロケールをCに強制して英語で状態を取得
STATE=$(LC_ALL=C virsh -c qemu:///system domstate "$VM_NAME" 2>/dev/null | tr -d '\r')

if [[ "$STATE" == "running" ]]; then
  echo 1
else
  echo 0
fi

実行権限を付与:

chmod +x /etc/zabbix/scripts/monitor_vm_state.sh

2. Zabbixエージェントの設定

/etc/zabbix/zabbix_agentd.conf に以下のUserParameterを追記します。

UserParameter=vm.state[*],/etc/zabbix/scripts/monitor_vm_state.sh $1

設定を反映するにはZabbixエージェントを再起動:

systemctl restart zabbix-agent

3. スクリプトの動作確認

コマンドラインから以下を実行します。

sudo -u zabbix /etc/zabbix/scripts/monitor_vm_state.sh 【仮想マシン名】

出力例:

1

→ 1: 起動中(running)、0: 停止中(shut off / paused など)


4. Zabbixアイテムの作成

  • 名前: VM State for {#VMNAME}
  • キー: vm.state[{#VMNAME}]
  • タイプ: Zabbixエージェント
  • データ型: 数値(整数)
  • 単位: なし
  • 更新間隔: 60s(推奨)
  • 値のマッピング: 0 = Shut off / 1 = Running(任意)

5. トリガー例(VMが停止したら通知)

{Template_VM:vm.state[{#VMNAME}].last()}=0

補足

このスクリプトはZabbixエージェントを通じて、ゲストVMが動作中かどうかを非侵襲的に監視できます。
Low-Level Discoveryと組み合わせることで、すべてのVMを自動監視対象に追加することも可能です。

コメント

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