PowerCLI で vCenter Server のトリガー済みアラームを取得

Share on:

Table of contents

はじめに

vCenter Server の各インベントリオブジェクトのトリガー済みアラームは公式の PowerCLI サンプルスクリプトにもあるように $entity.ExtensionData.TriggeredAlarmState で取得できます。

今回は以下のような vCenter Server オブジェクトに表示される全トリガー済みアラームを取得してみます。

インベントリ階層とデータセンターフォルダ

vCenter Server のインベントリ階層は以下のVMware社ドキュメントに記載があります。

以下の図は上記ドキュメントからの引用です。

アラームのターゲットタイプのうち階層の最上位のタイプは “vCenter Server” ですが、これは実際は図の上から3番目の「データセンターフォルダ」に対応しています。トリガー済みアラーム画面でオブジェクトタイプをよく見ると vCenter Server は「フォルダ」扱いになっていることが分かります。

トリガー済みアラームの一覧を取得する

データセンターフォルダは名前が「Datacenters」または ID が「Folder-group-d1」なので、Get-Folder でこれらを指定すれば取得できます。

PowerCLI サンプルスクリプトからコードを拝借し、少しカスタマイズした PowerShell 関数が以下です。

 1function Get-AllTriggeredAlarm {
 2
 3  $alarmOutput = @()
 4
 5  # Get the folder named "Datacenters", which is the root of the inventory tree.
 6  $entity = Get-Folder -Name "Datacenters"
 7
 8  if ($entity.ExtensionData.TriggeredAlarmState -ne "") {
 9      foreach ($alarm in $entity.ExtensionData.TriggeredAlarmState) {
10          $tempObj = "" | Select-Object -Property Alarm, Entity, EntityMoRef, AlarmStatus, Time, AlarmMoRef
11          $tempObj.Entity = Get-View $alarm.Entity | Select-Object -ExpandProperty Name
12          $tempObj.Alarm = Get-View $alarm.Alarm | Select-Object -ExpandProperty Info | Select-Object -ExpandProperty Name
13          $tempObj.AlarmStatus = $alarm.OverallStatus
14          $tempObj.AlarmMoRef = $alarm.Alarm
15          $tempObj.EntityMoRef = $alarm.Entity
16          $tempObj.Time = $alarm.Time
17          $alarmOutput += $tempObj
18      }
19  }
20
21  return $alarmOutput
22
23}

この関数を実行すると以下のように vCenter Server に定義が存在するトリガー済みアラームも取得できます。