ZabbixでKVMゲストVMのディスク使用量(GB)を監視する方法

インフラ

ZabbixからKVMホスト経由で、各ゲストVMのディスク使用量(GB)を取得し、可視化・監視する方法を紹介します。

ゲストOSにZabbixエージェントを入れずに、virt-dfコマンドを活用して監視します。


1. スクリプトの配置

以下の内容でスクリプト /etc/zabbix/scripts/monitor_vm_disk_used.sh を作成します。

#!/bin/bash

export LANG=C
export LIBGUESTFS_BACKEND=direct

DISK_PATH="$1"
TARGET_DEV="$2"

# virt-df 出力を1行に整形
output=$(virt-df -a "$DISK_PATH" 2>/dev/null | paste -d ' ' - -)
line=$(echo "$output" | grep "${DISK_PATH##*/}:$TARGET_DEV")

# 行が見つからなければ終了
[[ -z "$line" ]] && { echo "ZBX_NOTSUPPORTED"; exit 1; }

# 使用量(KB)抽出
used_kb=$(echo "$line" | awk '{print $(NF-3)}')
[[ ! "$used_kb" =~ ^[0-9]+$ ]] && { echo "ZBX_NOTSUPPORTED"; exit 1; }

# GBに変換して出力(小数2桁)
awk -v u="$used_kb" 'BEGIN { printf "%.2f", u / 1024 / 1024 }'

実行権限を付与:

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

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

/etc/zabbix/zabbix_agentd.conf に以下を追記:

UserParameter=vm.disk.used[*],/etc/zabbix/scripts/monitor_vm_disk_used.sh "$1" "$2"

設定を反映させるためにZabbixエージェントを再起動します:

systemctl restart zabbix-agent

3. 動作テスト

コマンドラインから以下を実行して確認します:

sudo -u zabbix /etc/zabbix/scripts/monitor_vm_disk_used.sh /var/lib/libvirt/images/VM名.qcow2 /dev/マウントポイント

出力例:

4.30

→ ゲストVMのディスク使用量(GB)が数値で表示されていれば成功です。


4. Zabbixアイテムの設定

  • 名前: Disk Used (GB) for {#VMNAME} [{#MOUNTPOINT}]
  • キー: vm.disk.used[{#DISKPATH},{#MOUNTPOINT}]
  • タイプ: Zabbixエージェント
  • データ型: 浮動小数
  • 単位: GB
  • 更新間隔: 300s(推奨)

補足

この方法は、Zabbixホスト(KVMホスト)から仮想ディスク(qcow2など)を直接参照し、ゲストOSに変更を加えることなくディスク使用量を監視できます。
LLD(ディスカバリ)と組み合わせることで、マウントポイントごとの自動監視にも対応可能です。

コメント

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