VM に対してトリガーされている vCenter アラームを、
PowerCLI で見てみようと思います。
vSphere Client ではこのように見えていて、
Web Client ではこのように見えているものです。
※例では2つのVM に(vm02 と vm05)アラームがトリガーされています。
今回は、下記の VM のアラームを確認します。
PowerCLI> Get-Cluster cluster02 | Get-VM
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
vm05 PoweredOn 1 0.250
vm03 PoweredOn 1 0.250
vm06 PoweredOn 1 0.250
vm04 PoweredOn 1 0.250
vm07 PoweredOff 1 0.250
vm02 PoweredOn 1 0.250
vm01 PoweredOn 1 0.250
GUI で表示されていたとおり、vm02 と vm05 が「yellow」(警告)になっています。
PowerCLI> Get-Cluster cluster02 | Get-VM | select Name,{$_.ExtensionData.OverallStatus} | ft -AutoSize
Name $_.ExtensionData.OverallStatus
---- ------------------------------
vm05 yellow
vm03 green
vm06 green
vm04 green
vm07 green
vm02 yellow
vm01 green
vm05 のアラームの内容は、下記のように確認することができます。
VM の「TriggeredAlarmState」 を見ると、
トリガーされたアラームの ID (下記では「Alarm : Alarm-alarm-51」)がわかるので・・・
PowerCLI> Get-VM vm05 | % {$_.ExtensionData.TriggeredAlarmState}
Key : alarm-51.vm-87
Entity : VirtualMachine-vm-87
Alarm : Alarm-alarm-51
OverallStatus : yellow
Time : 2014/04/12 0:12:56
Acknowledged : False
AcknowledgedByUser :
AcknowledgedTime :
LinkedView :
DynamicType :
DynamicProperty :
それをもとに、アラームの定義を調べます。
「Name」や、「Description」などから、何のアラームなのかがわかります。
PowerCLI C:\> Get-AlarmDefinition -Id Alarm-alarm-51 | fl
Entity : Datacenters
Description : Default alarm to alert when vSphere HA reset a virtual machine
Enabled : True
Name : vSphere HA virtual machine monitoring action
ExtensionData : VMware.Vim.Alarm
ActionRepeatMinutes : 0
Id : Alarm-alarm-51
Uid : /VIServer=vmad\administrator@vcenter55-2.vmad.local:443/Alarm=Alarm-alarm-51/
コマンドラインが長くなりますが、下記のようにすると見やすくなります。
※それぞれの VM の、直近のアラームを1つだけ表示しています。
PowerCLI> Get-Cluster cluster02 | Get-VM | select Name,@{N="Status";E={$_.ExtensionData.OverallStatus}},@{N="Alarm";E={(Get-AlarmDefinition -Id ($_.ExtensionData.TriggeredAlarmState | sort Time -Descending | select -First 1).Alarm).Name}} | sort Name | ft -AutoSize
Name Status Alarm
---- ------ -----
vm01 green
vm02 yellow vSphere HA virtual machine monitoring action
vm03 green
vm04 green
vm05 yellow vSphere HA virtual machine monitoring action
vm06 green
vm07 green
そして、上記のコマンドラインをもとに、スクリプトを作ってみました。
get_vm_status.ps1
$vms = $args[0]
$vms | % {
$vm =$_
$alarm = $vm.ExtensionData.TriggeredAlarmState | sort Time -Descending | select -First 1
$alarm_id = $alarm.Alarm
$alarm_name = if($alarm_id -ne $null){Get-AlarmDefinition -Id $alarm_id}
$vm | select `
Name,
@{N="Status";E={$_.ExtensionData.OverallStatus}},
@{N="Alarm";E={$alarm_name}}
} | sort Name | ft -AutoSize
下記のように実行すると、同様の結果が表示できます。
※スクリプトには「(Get-VM <VM名>)」など、VM の集合になるものを引数として指定します。
※今回の例では、cluster02 クラスタ に含まれる VM のアラームを表示ししています。
PowerCLI> .\get_vm_status.ps1 (Get-Cluster cluster02 | Get-VM)
Name Status Alarm
---- ------ -----
vm01 green
vm02 yellow vSphere HA virtual machine monitoring action
vm03 green
vm04 green
vm05 yellow vSphere HA virtual machine monitoring action
vm06 green
vm07 green
VM にトリガーされたアラームは GUI からでも確認できますが、
PowerCLI でうまく表示することができれば
サーバ稼働状態のレポート作成などで便利かもしれません。
以上、VM のトリガーされたアラームを PowerCLI で見てみる話でした。