VM の アラームを PowerCLI で見てみる。

VM の アラームを PowerCLI で見てみる。

VM に対してトリガーされている vCenter アラームを、

PowerCLI で見てみようと思います。


vSphere Client ではこのように見えていて、

vm-alarm-01.png


Web Client ではこのように見えているものです。

※例では2つのVM に(vm02 と vm05)アラームがトリガーされています。

vm-alarm-02.png

今回は、下記の 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 で見てみる話でした。

Version history
Revision #:
1 of 1
Last update:
‎04-13-2014 07:42 AM
Updated by: