ZabbixからKVMホストを通じて、ゲストVMのNIC使用状況(bps)とリンク状態(up/down)を監視する構成を解説します。
1. ネットワーク使用率監視スクリプトの作成
送受信bpsを取得するスクリプト /etc/zabbix/scripts/monitor_vm_net_usage.sh を作成します。
#!/bin/bash
VM_NAME="$1"
INTERFACE="$2"
DIRECTION="$3" # tx または rx
TMP_FILE="/tmp/${VM_NAME}_${INTERFACE}_${DIRECTION}.net"
NOW=$(date +%s)
VALUE=$(virsh -c qemu:///system domifstat "$VM_NAME" "$INTERFACE" 2>/dev/null | awk -v dir="${DIRECTION}_bytes" '$2 == dir {print $3}')
if [[ -z "$VALUE" ]]; then
echo 0
exit 0
fi
if [[ -f "$TMP_FILE" ]]; then
read LAST_TIME LAST_VAL < "$TMP_FILE"
DIFF_TIME=$((NOW - LAST_TIME))
DIFF_VAL=$((VALUE - LAST_VAL))
if [[ $DIFF_TIME -gt 0 && $DIFF_VAL -ge 0 ]]; then
echo $((DIFF_VAL / DIFF_TIME))
else
echo 0
fi
else
echo 0
fi
echo "$NOW $VALUE" > "$TMP_FILE"
実行権限の付与:
chmod +x /etc/zabbix/scripts/monitor_vm_net_usage.sh
2. NICリンク状態確認スクリプトの作成
NICの状態(up/down)を取得するスクリプト /etc/zabbix/scripts/monitor_vm_net_status.sh を作成します。
#!/bin/bash
# 引数1: VM名(未使用)、引数2: インターフェース名(例: vnet0)
IFACE="$2"
LINK_STATE=$(ip link show "$IFACE" 2>/dev/null | grep "$IFACE" | grep -o 'state [A-Z]*' | awk '{print $2}')
if [[ "$LINK_STATE" == "UP" || "$LINK_STATE" == "UNKNOWN" ]]; then
echo 1
else
echo 0
fi
実行権限の付与:
chmod +x /etc/zabbix/scripts/monitor_vm_net_status.sh
3. Zabbixエージェント設定
/etc/zabbix/zabbix_agentd.conf に以下のUserParameterを追記します。
UserParameter=vm.net.usage[*],/etc/zabbix/scripts/monitor_vm_net_usage.sh $1 $2 $3
UserParameter=vm.net.status[*],/etc/zabbix/scripts/monitor_vm_net_status.sh $1 $2
設定後、Zabbixエージェントを再起動:
systemctl restart zabbix-agent
4. テスト実行
送信bps確認:
sudo -u zabbix /etc/zabbix/scripts/monitor_vm_net_usage.sh 【仮想マシン名】 vnet0 tx
NICリンク状態確認:
sudo -u zabbix /etc/zabbix/scripts/monitor_vm_net_status.sh 【仮想マシン名】 vnet0
リンク状態出力例:
1
→ 1 = 接続中(UPまたはUNKNOWN)、0 = リンクダウン
5. Zabbixアイテム設定(テンプレート/プロトタイプ)
- 名前: TX Bandwidth for {#VMNAME}:{#INTERFACE}
- キー:
vm.net.usage[{#VMNAME},{#INTERFACE},tx] - 単位: bps
- データ型: 数値(整数)
- 名前: NIC Link Status for {#VMNAME}:{#INTERFACE}
- キー:
vm.net.status[{#VMNAME},{#INTERFACE}] - データ型: 数値(整数)
- 値のマッピング(任意): 0=Down, 1=Up
6. トリガー例
NICがリンクダウンした場合に通知するトリガー:
{Template_VM:vm.net.status[{#VMNAME},{#INTERFACE}].last()}=0
補足
この方法を使えば、仮想マシン内にZabbixエージェントを導入せずとも、KVMホスト側からすべてのNIC状態・トラフィック状況を非侵襲的に監視可能です。
【整備済み品】NEC ノートパソコン 中古 VersaPro VKL 15.6型 第6世代Core i3-6006U/Windows11 Pro/MS Office2019搭載/WIFI内蔵/Webカメラ/DVD-ROM/テンキー/Bluetooth/HDMI (Corei3-6th/テンキー搭載, メモリ8GB,SSD256GB)
只今、価格を取得しています。
(2026年6月17日 14:00 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)CrazyLemon 適用 iPad Mini7 ケース (A17 Pro、2024) 360度回転 リング付き 縦置き 横置き スタンド機能 肩掛け ストラップ 付き 可愛い うさぎ デザイン 薄型 軽量 ピンク ソフト シリコーン アイパッド ミニ 第7世代 保護ケース カバー 衝撃吸収 女性/女の子 大人/子供 人気
只今、価格を取得しています。
(2026年6月17日 14:00 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)

コメント