VMware ESXiおよびvCenterでのSNMP設定ガイド:ZabbixやPRTGによるハードウェア・仮想マシンの包括的監視

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

背景とSNMP監視が必要な理由

本番環境でVMware vSphereの仮想化インフラを運用する際、最も恐ろしいシナリオは、オンコール担当者が気付かない夜間にRAMの接触不良やRAIDのデグレード、あるいはサーバーファンの停止が発生することです。仮想マシン(VM)がダウンしたりvCenterがクラッシュを報告したりする段階になってしまっては、すでに大規模なサービス停止へと発展してしまいます。

運用管理を始めたばかりの頃は、vCenter Clientを開いて確認するだけで十分だと考えがちです。しかし実際には、ホストの数が数十ノードに達した場合、SNMP(Simple Network Management Protocol)を設定してZabbixやPRTGなどの統合監視システムにメトリクスやトラップを送信することは必須のステップとなります。SNMPを利用することで、ハードウェアセンサーの状態(IPMI/CIMセンサー経由のHardware Health)、ハイパーバイザーのCPU/RAM負荷、vSwitchのネットワークトラフィック、Datastoreの容量などをリアルタイムに直接取得できます。

個人ラボの環境をVMwareからProxmoxへ移行した際、いくつか興味深い違いに気づきました。ProxmoxではWeb UIから直接InfluxDBやPrometheusへのメトリクス送信を自然に設定できます。一方、vSphereは昔ながらのエンタープライズアーキテクチャを踏襲しており、極めて高信頼である反面、踏み込んだ監視の最適化を行いたい場合は管理者がCLIからSNMPを設定する必要があります。

事前準備

コマンドを実行する前に、インフラ環境で以下のネットワークおよびサービス情報を確認・準備しておきます:

  • コミュニティストリングの設計: デフォルトのpublicの使用は極力避け、内部ネットワークのセキュリティを確保するためにitfromzero-snmp-roのような複雑な文字列を設定します。
  • サービスポートの開放: 監視サーバーと各ESXiホスト/vCenter間のファイアウォールで、UDP 161(SNMP Polling)およびUDP 162(SNMP Traps)を開放します。
  • ESXiでのSSH有効化: vSphere Clientにログイン > 対象ホストを選択 > [設定](Configure) > [サービス](Services) > SSHサービスを有効化(開始)します。

設定手順の詳細

1. esxcliを使用したVMware ESXiでのSNMP設定

デフォルトでは、ESXi上のSNMPエージェントサービスは無効化されています。迅速に設定でき、UIの不具合も回避できるため、ホストにSSHで直接ログインしてesxcli system snmpコマンド群を使用することをおすすめします。

# 1. コミュニティストリングの設定(Read-Only)
esxcli system snmp set --communities itfromzero-snmp-ro

# 2. 管理者連絡先およびサーバー設置場所の登録
esxcli system snmp set --syscontact "[email protected]" --syslocation "DC-Hanoi-Rack05"

# 3. ESXi内部ファイアウォールでSNMPサービスのポートを開放
esxcli network firewall ruleset set --ruleset-id snmp --allowed-all true
esxcli network firewall ruleset set --ruleset-id snmp --enabled true

# (高度なオプション)SNMPアクセスを許可する監視サーバーのIPを制限
# esxcli network firewall ruleset set --ruleset-id snmp --allowed-all false
# esxcli network firewall ruleset allowedip add --ruleset-id snmp --ip-address 192.168.10.15/32

# 4. SNMPサービスの有効化
esxcli system snmp set --enable true

# 5. 設定を反映するためsnmpdサービスを再起動
/etc/init.d/snmpd restart

設定したすべてのパラメータを以下のコマンドで確認します:

esxcli system snmp get

2. vCenter Server Appliance(VCSA)でのSNMP設定

クラスタ全体、全体リソース、vCenterのコアサービスの状態を監視したい場合は、Appliance ShellからVCSA上で直接SNMPを追加設定します:

# rootアカウントでVCSAにSSHログイン
# コミュニティストリングを設定
snmp.set --communities itfromzero-snmp-ro

# 連絡先情報の設定
snmp.set --syscontact "[email protected]"

# SNMPの有効化
snmp.enable

# vCenter上のSNMPサービスの実行状態を確認
snmp.get

動作確認と統合監視

1. 監視サーバーからのsnmpwalkによる応答確認

管理ネットワーク内のZabbixサーバーまたはLinuxワークステーションからsnmpwalkコマンドを実行し、ESXiホストからデータが正常に返されるかをテストします:

# 基本システムOIDのクエリ
snmpwalk -v 2c -c itfromzero-snmp-ro 192.168.10.51 1.3.6.1.2.1.1.1

# VMware専用ハードウェアMIBツリーのクエリ(Enterprise OID 6876)
snmpwalk -v 2c -c itfromzero-snmp-ro 192.168.10.51 1.3.6.1.4.1.6876.1

画面にVMware ESXi 7.0.3 ...といった識別文字列が出力されれば、UDP 161番ポートの疎通が取れており、エージェントが正常に応答していることを示しています。

2. Zabbixとの統合監視

ZabbixにはVMware監視用の強力なテンプレートが標準で用意されています:

  1. テンプレートの適用: Zabbix Serverの管理画面で、ESXiホストのIPを指定して新規ホストを追加します。そのホストにVMware ESXi via SNMPまたはVMware Hypervisor by SNMPテンプレートをリンクします。
  2. マクロの設定: [マクロ](Macros)タブに移動し、マクロ{$SNMP_COMMUNITY}を追加して、先ほど設定した値itfromzero-snmp-roを入力します。
  3. データ収集: ディスカバリの実行サイクル(通常5〜10分程度)を経て、Zabbixはハードウェアセンサーの状態(電源ユニット、ファン回転数、CPU温度、RAIDコントローラ)や物理ネットワークカード(vmnic)の情報を自動的に取得・分類します。

3. PRTG Network Monitorとの統合監視

PRTGを使用している場合の構成手順は以下の通りです:

  • [Add Device] を選択 > ESXiホストのIPを入力 > [Credentials for SNMP Devices] でSNMP v2cを選択し、コミュニティストリングを入力します。
  • SNMP VMware Host Hardware Sensor を追加します。このセンサーはESXi上のCIM/IPMIプロバイダーに属するOIDを自動的にクエリします。
  • SNMP Traffic センサーを追加して、vSwitchアップリンクの帯域幅グラフを描画します。

現場での運用経験から得られた重要な注意点として、ハードウェアセンサーのポーリング間隔を短くしすぎない(30秒未満にしない)ことが挙げられます。VMwareのハードウェアMIBツリーはCIMプロバイダー層へのバックグラウンド問い合わせを伴うため処理負荷が高く、頻繁にポーリングを行うとESXi上のhostdやsfcbdプロセスのCPU使用率が跳ね上がる原因になります。推奨される設定間隔は、Network Trafficが60秒、Hardware Health Sensorが300秒(5分)です。

Share: