Writing Virtual Life

仮想化(VMware)などについて、重箱の隅をつつくタイプのブログ。

vCenterアラーム作成スクリプトのサンプル

コミュニティで間違った情報を出してしまったので、反省を込めて記事にしてみました(結構前ですが)
PowerCLIでvCenterアラーム作成するスクリプトのサンプルです。
 
どうやらvCenter アラームの作成はコマンドレット一つで簡単に作成することはできないらしく、代わりにスクリプトを作成し必要なパラメータを仕込んでいくことになります。
 
今回以下のブログ記事のスクリプトを丸写しさせていただきました。
修正ポイントとしては、すぐ試せるようVMware HOLで実行できるように指定ホスト名などをいじった点と、一部スクリプトの補足を追記した点になります。
 
 LucD notes Alarm Expressions
 
アラームの概要:
・ネットワーク関連のアラーム。受信平均が規定値に引っかかった時にメールを送信する。
・今回はホストに割り当てるため、esxNameで指定。
・黄->赤や赤->黄の時の条件を加えるべく、StartStateやFinalStateを設定している。
 
=============================
$esxName = “esx-01a.corp.local;"
$mailTo = “test@example.com"
 
$alarmMgr = Get-View AlarmManager
$entity = Get-VmHost $esxName | Get-View
 
# AlarmSpec
$alarm = New-Object VMware.Vim.AlarmSpec
$alarm.Name = "Net received rate"
$alarm.Description = "Testing network related alarms"
$alarm.Enabled = $TRUE
 
# Action - Send email
$alarm.action = New-Object VMware.Vim.GroupAlarmAction
 
$trigger = New-Object VMware.Vim.AlarmTriggeringAction
$trigger.action = New-Object VMware.Vim.SendEmailAction
$trigger.action.ToList = $mailTo
$trigger.action.Subject = "Net received alarm"
$trigger.Action.CcList = ""
$trigger.Action.Body = ""
 
# Transition a - yellow --> red
$transa = New-Object VMware.Vim.AlarmTriggeringActionTransitionSpec
$transa.StartState = "yellow"
$transa.FinalState = "red"
 
# Transition b - red --> yellow
$transb = New-Object VMware.Vim.AlarmTriggeringActionTransitionSpec
$transb.StartState = "red"
$transb.FinalState = "yellow"
 
$trigger.TransitionSpecs += $transa
$trigger.TransitionSpecs += $transb
 
$alarm.action.action += $trigger
 
# Expression - Network data receive rate
$expression = New-Object VMware.Vim.MetricAlarmExpression
$expression.Metric = New-Object VMware.Vim.PerfMetricId
$expression.Metric.CounterId = 102
$expression.Metric.Instance = ""
$expression.Operator = "isAbove"
$expression.Red = 300
$expression.Yellow = 150
$expression.Type = "HostSystem"
 
$alarm.expression = New-Object VMware.Vim.OrAlarmExpression
$alarm.expression.expression += $expression
 
$alarm.setting = New-Object VMware.Vim.AlarmSetting
$alarm.setting.reportingFrequency = 0
$alarm.setting.toleranceRange = 0
 
# Create alarm.
$alarmMgr.CreateAlarm($entity.MoRef, $alarm)
=============================
補足:
$alarm.Enabled = $TRUE
・アラームの有効化にチェック
$alarm.setting.toleranceRange = 0
・許容範囲。設定した基準値の変動分。
$alarm.setting.reportingFrequency = 0
・vCenterアラームは、重要でないアラーム及びそのアクションの実行が繰り返しになることを防ぐために、5分の報告頻度を持つように設定されています。
 これは即時発動できるよう値を0に変更しています。単位:秒。
 How to modify alarm Reporting frequency in vSphere 6.x using PowerCLI (57315)