vSphere Alarms とメール通知の設定:ESXi の CPU・RAM・Datastore が閾値を超えたとき SysAdmin へ自動アラートを送る方法

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

ESXi 監視の3つのアプローチ — ネイティブアラームを最初に選んだ理由

最初の ESXi クラスターを担当したとき、「どうせ自動化されているから追加設定は要らない」と思い込んでアラームを後回しにしていた。結果、ある月曜日の朝、メール通知ではなく上司からの電話で叩き起こされた。前夜からデータストアが満杯になっていて、3台の VM がデータを書き込めない状態になっていたのだ。それ以来、アラームの設定をオプションとは思わなくなった。

ESXi の CPU・RAM・Datastore を監視してタイムリーに通知を受け取るには、主に3つのアプローチがある。

アプローチ 1:vSphere ネイティブアラーム(vCenter 組み込み)

vCenter Server に標準搭載されており、追加インストール不要。条件を定義してアクション(メール送信・SNMP トラップ・スクリプト実行)を設定するだけ。セットアップは 15 分で完了する。

アプローチ 2:サードパーティ監視スタック(Zabbix / Prometheus)

Zabbix には VMware テンプレートが用意されており、Prometheus は vmware_exporter でメトリクスを収集できる。ダッシュボードの視認性は大幅に優れており、アラートルールの柔軟性も高い。ただし別途監視サーバーを構築する必要があり、既存の ESXi 環境と並行してメンテナンスし続けることになる。

アプローチ 3:PowerCLI スクリプト + Windows タスクスケジューラー

PowerCLI で定期的にメトリクスを取得し、閾値と比較してアラートを送信する — メール、Slack、Teams など任意の手段で。完全なカスタマイズが可能。代償として、コードをゼロから書いて VMware が API を変更するたびに自分でメンテナンスする必要がある。

実際の比較:環境に応じたアプローチの選び方

  • vSphere ネイティブアラーム:15 分で完了、追加のサーバーやソフトウェアは不要。20 台未満のホストを管理していて専用監視スタックがないチームに最適。弱点:通知メールはプレーンテキスト、ダッシュボードなし、長期的なメトリクス保存なし。
  • Zabbix / Prometheus:直感的なダッシュボード、6〜12 ヶ月分のメトリクス保存によるトレンド分析、アラートルールの柔軟なカスタマイズが可能。大規模な本番環境への投資価値は十分ある。ただし初期セットアップに 2〜3 日かかり、並行してメンテナンスできる担当者も必要になる。
  • PowerCLI スクリプト:Slack でアラートを受けたい、レポートのフォーマットを自由に設定したい場合はこれ一択。トレードオフ:PowerShell の知識が必要で、VMware が API を変更したら自分で更新が必要。

個人のラボ環境を VMware から Proxmox に移行した際、興味深い違いに気づいた。Proxmox のビルトインアラートシステムはかなり基本的で、vSphere Alarms ほど細かい設定はできない。一方で Grafana/Prometheus との連携は最初からスムーズだった。プラットフォームごとにそれぞれトレードオフがある。

実践的なアドバイス:チームが新しく環境規模も中程度なら、まず vSphere ネイティブアラームから始めよう。すぐに動作し、Zabbix 専用サーバーが別途必要な理由を上司に説明する手間も省ける。規模が大きくなってから専用の監視スタックへ移行すれば十分だ。

vSphere アラームの実践的なセットアップ — SMTP 設定から最初の受信メールまで

ステップ 1:vCenter の SMTP 設定

メールサーバーを設定しなければ、vCenter はメールを送れない。これが最もよく見落とされるステップで、アラームが発火してもメールボックスが静まり返ったままになる最大の原因でもある。

vSphere Client にログインし、インベントリの vCenter Server をクリック → Configure タブ → SettingsGeneralEdit ボタン。Mail セクションまでスクロールダウン:

  • SMTP Server:メールサーバーのアドレス(例:smtp.gmail.com または社内 Exchange の IP)
  • SMTP Port:TLS は 587、SSL は 465、暗号化なしリレーは 25
  • Sender account:送信元メールアドレス(例:[email protected]

Gmail を使う場合は追加手順が必要になる。まず 2FA を有効にしてから、myaccount.google.com → セキュリティ → アプリパスワード で vCenter 専用のパスワードを生成する。社内 Exchange の場合はよりシンプルで、メールサーバーの IP とリレーポートを入力するだけで追加認証は不要だ。

ステップ 2:ESXi ホストの CPU 使用率アラームを作成する

vSphere Client で Hosts and Clusters タブに切り替える。ESXi ホストを右クリック(またはデータセンター/クラスターをクリックして配下の全ホストにアラームを適用)→ AlarmsNew Alarm Definition

General タブ:

  • Alarm nameESXi CPU Usage High
  • MonitorHost を選択
  • Monitor forSpecific conditions or state を選択

Triggers タブ → Add をクリック:

  • Trigger TypeHost CPU Usage (%)
  • OperatorIs Above
  • Warning (Yellow)80
  • Critical (Red)90
  • Tolerance5(使用率が閾値付近で変動した際のフラッピングを防ぐ)
  • Condition length5 minutes(10 秒の CPU スパイクではなく、継続的な高負荷状態のみでトリガー)

Actions タブ → Add をクリック:

  • ActionSend a notification email
  • To[email protected](個人のメールアドレスではなく共有メールボックスを推奨)
  • Repeat this action:警告状態が続く間、30 分ごとにリマインダーを受け取りたい場合はチェックを入れる

OK をクリックして保存。

ステップ 3:RAM 使用率アラームを作成する

手順は CPU と同じ。トリガーの種類と閾値のみ変更する:

  • Alarm nameESXi Memory Usage High
  • Trigger TypeHost Memory Usage (%)
  • Warning85% | Critical95%

RAM の閾値は CPU より高めに設定することが多い。ESXi にはバルーンドライバーとメモリスワップがあるため、RAM 88% で稼働しているホストは CPU 88% が継続する状況よりはるかに安定している。vSphere のパフォーマンスグラフでバルーンメモリも確認しよう。それが継続的に高い場合、85% が適切な警告閾値となる。

ステップ 4:Datastore アラームを作成する

重要な違いがある:データストアのアラームはホストではなく Datastore オブジェクトに対して作成する必要がある。vSphere Client で Storage タブに切り替え → データストアを右クリック → AlarmsNew Alarm Definition

  • Alarm nameDatastore Disk Usage High
  • MonitorDatastore
  • Trigger TypeDatastore Disk Usage (%)
  • Warning75% | Critical85%

データストアの満杯は最悪のシナリオで、自動回復の仕組みはない。書き込み中の VM はその場でクラッシュする。そのため CPU・RAM より低い閾値を設定する。75% の時点で早めに警告を受け取り、危険な 85% に達する前にストレージのクリーンアップや拡張に十分な時間を確保する。

ステップ 5:本番稼働前にテストする

実際に問題が起きるまでアラームが動作するか分からない、という状態は避けよう。最もシンプルな方法:閾値を一時的に下げてすぐアラームをトリガーさせる。

作成したアラームを → Edit → Warning 閾値を 10% に変更 → 5〜10 分待つ → メールを確認。件名は [vCenter Alarm] ESXi CPU Usage High on esxi01 - Warning のような形式になる。受信できれば、SMTP とアラームの両方が正常に機能している。確認後は元の閾値に戻す。

PowerCLI を使ってアクティブなアラームの一覧を取得することもできる — 多数のホストを管理する際に便利だ:

# vCenter に接続
Connect-VIServer -Server vcenter.company.com -User [email protected] -Password "YourPassword"

# 有効な全アラーム定義を確認
Get-AlarmDefinition | Where-Object { $_.Enabled -eq $true } | Select-Object Name, Entity, Enabled | Format-Table -AutoSize

# Warning または Critical 状態のアラームを確認
Get-VMHost | Get-AlarmAction | Where-Object { $_.Alarm.AlarmState -ne "Green" }

# 特定ホストのトリガー済みアラームを確認
$vmhost = Get-VMHost "esxi01.company.com"
$alarmMgr = Get-View AlarmManager
$alarmMgr.GetAlarmState($vmhost.ExtensionData.MoRef) | Where-Object { $_.OverallStatus -ne "green" }

ステップ 6:アラート疲れを防ぐためのチューニング

以前、常時 75〜80% で稼働している本番サーバーに CPU アラームを 70% で設定して、1 日に 200 件以上のメールを受け取ったことがある。メールボックスがアラームで溢れ、読まずに既読にするようになった。これが最悪のシナリオだ。監視が足りないのではなく、多すぎて誰も気にしなくなる状態である。

1〜2 週間分の実データが集まったら見直しを行おう:

  • ベースラインに基づいて閾値を調整する — サーバーが通常 75% で稼働しているなら Warning を 80% ではなく 90% に設定する
  • アラームは個人のメールに直接送らず、共有メールボックスや Slack/Teams チャンネルに送る
  • 問題が解決したことを把握するため「green」アクションも設定する — アラームが自動でクリアされたかどうか確認するために重要
  • 5 台以上のホストを管理している場合:クラスターまたはデータセンターレベルでアラームを作成することを検討する — 一度の設定で配下の全ホストに適用される

本番稼働前のチェックリスト

  • SMTP の設定が完了し、テストメールを少なくとも 1 件受信済み
  • CPU アラーム:Warning 80%、Critical 90%、Tolerance 5%、Condition length 5 分
  • RAM アラーム:Warning 85%、Critical 95%
  • Datastore アラーム:Warning 75%、Critical 85%(データストアごとに個別作成)
  • 通知先は共有メールボックスまたはチームチャンネル
  • 問題解決時の通知のための「green」アクションを設定済み
  • 1 週間の観測後、実際のベースラインに基づいて閾値を見直し済み

Share: