Greetings to all vSphere administrators out there! We are now going to take a look at a new functionality introduced in PowerCLI 4.1 Update 1 – namely vSphere alarms management. We assume that you are already familiar with the vSphere alarms functionality. For those of you who are not, here are some resources on the topic: vSphere Datacenter Administration Guide (see Chapter 13 “Working with Alarms”).
Here’s an excerpt from the VMware documentation – “Alarms are notifications that occur in response to selected events, conditions, and states that occur with objects in the inventory. … The vCenter Server system is configured with a set of predefined alarms that monitor clusters, hosts, datacenters, datastores, networks, and virtual machines.” The current PowerCLI 4.1 Update 1 release supports only modifying the predefined alarms that come with the installation of vCenter Server.
The new cmdlets are:
- Get-AlarmDefinition
- Set-AlarmDefinition
- New-AlarmAction
- Get-AlarmAction
- Remove-AlarmAction
- New-AlarmActionTrigger
- Get-AlarmActionTrigger
- Remove-AlarmActionTrigger
With the new cmdlets, you can modify: the alarm actions, the interval on which alarm actions repeat (if repeatable), the alarm names, the alarm descriptions, and whether the alarm is enabled or not. We’ll look at some examples of how we can use these alarm management cmdlets.
Get-AlarmDefinition is a typical PowerCLI getter. It returns all the alarms defined on the vCenter Servers you’re connected to. There are also some optional parameters which allow you to filter the results by name, by the inventory object on which the alarm is defined, and by its state (enabled or disabled).
Here are some examples:
Get-AlarmDefinition # This will return all the defined alarms on the servers you’re connected to
Get-AlarmDefinition -Name "virtual machine*" -Enabled $false # This will return all the disabled alarm definitions with names starting with “virtual machine”
Get-VMHost hostname | Get-AlarmDefinition # This will return all alarms that apply to the host “hostname”. This includes alarms defined on this host and alarms inherited from the parent entity, or from any ancestors in the inventory hierarchy.
Here’s how you can modify an alarm definition:
Get-AlarmDefinition "Host memory status" | Set-AlarmDefinition -Name "Host memory" -Enabled $false # This will rename the alarm to “Host memory” and disable it
The main part of the alarm definitions you can manage is an alarm’s actions configuration. You can create an alarm action this way:
Get-AlarmDefinition "Host storage status" | New-AlarmAction -Email -To “me@mycompany.com” -Subject "Host storage shortage" # This will create a send email action which will be triggered once when the alarm state changes from warning (yellow) to alert (red)
Here is how you can add another action trigger, which will fire earlier – when the alarm state changes from normal (green) to alert (yellow):
$action = Get-AlarmDefinition "Host storage status" | Get-AlarmAction -ActionType SendEmail # Get the action we previously created
$action | New-AlarmActionTrigger -StartStatus Green -EndStatus Yellow –Repeat # Add a new repeating trigger to the action
You can also set the interval at which the action is repeated:
Set-AlarmDefinition "Host storage status" -ActionRepeatMinutes (60 * 24) # This will configure the send email action to repeat once a day (as long as the alarm is in the yellow state)
Finally you may want to remove certain alarm actions. You can do it this way:
$action = Get-AlarmDefinition "Host storage status" | Get-AlarmAction -ActionType SendEmail
Remove-AlarmAction -AlarmAction $action
This is what you can do with the newly introduced cmdlets. The PowerCLI team has decided that the rest of the alarm functionality will not be reconfigured often enough to add cmdlets for the task. However you can always gain full control over the situation through the alarm’s View object. Here’s how you can change alarm configuration that is not available to change through the cmdlets:
# Get the alarm’s view
$alarmDefinition = Get-AlarmDefinition "Host storage status"
$alarmSpecification = $alarmDefinition. ExtensionData
# Make the desired alarm configuration changes
$alarmSpecification. Description="advanced-set description…..”
# Some other changes to the alarm configuration specification (for questions see the vSphere API Reference)
…
# Update the alarm
$alarmView = Get-View $alarmSpecification.Alarm
$alarmView.ReconfigureAlarm( $alarmSpecification )
Best regards,
-Angel Evrov, MTS at VMware
This is perfect for anyone who needs to build a whole lot of identical vCenter servers.
Great work guys on another huge and useful update!
this information is very helpful for everyone. thank you very much
Speaking of identical vCenter servers – I’ve written a script that can export alarm definitions form on vCenter in a file and then import them on another vCenter, thus mirroring the alarms.
Here’s the thread: http://communities.vmware.com/message/1618000#1618000
Documentation for Set-AlarmAction* is missing from http://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/index.html whereas there are links in http://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-AlarmDefinition.html
this information is very helpful for everyone. thank you very much. http://bursaefekjakarta.web.id/
Thanks JM, we’ll fix this.
Uh, never mind.
It seems this function doesn’t exist at all (yet).
But if you include it someday, please also include New-AlarmDefinition etc. I’m having a hard time without this.
In fact there should simply be Get, Set, New and Delete methods for every element (AlarmDefinition, AlarmAction, AlarmTrigger).
Not sure why some have been implemented and others not.
It depends on the people to judge which ones are useful to them. 🙂
That would make copying/moving Alarms between vcenter server a hell of a lot easier.
Thank You, Good Artikel By The Way… you can visit me here… http://tempatwisata.biz/
Please note that the export/import alarms issue is also adressed here: http://communities.vmware.com/thread/284908
Especially http://communities.vmware.com/message/1667994#1667994 that I just implemented uses the new methods introduced here combined with some API magic to copy alarm items from one vcenter to the other.
I’m wondering if it is possible to add variables to the subject and body text for email alarm actions.
I’d like to have some sort of format like
Subject: $hostname cpu load is $cpu
And something similar for the body text. Ideally I’d like to create shorter body text so that I can send the alarms as SMS.
Can this be done?
I agree with Colin. We would really like to modify the subject of the alarm emails so they are more meaningful. Is this possible?
I Agree i guess it really helpfull http://yukuliner.net/
Hi Colin and Jamie,
Yes, the content of to email can be customized to some extent. Although, the customization is rather limited.
Here are the variables that can be used in the email action fields, that get populated at runtime (taken from the vSphere Api Reference):
alarm -The object of the triggering alarm.
alarmName – The name of the triggering alarm.
declaringSummary – A summary of declarations made during the triggering of the alarm.
eventDescription – The event description.
newStatus – The status after the alarm is triggered.
oldStatus – The status prior to the alarm being triggered.
target – The object of the entity where the alarm is assocaited.
targetName – The name of the entity where the alarm is triggered.
triggeringSummary – A summary of information involved in triggering the alarm.
Here is how you can create an alarm action that sends an email mentioning the name of the object that triggered it:
> Get-AlarmDefinition EmailTestAlarm | New-AlarmAction -Email -Subject “VM {targetName} has powered on” -To me@mycompany.com
Regards,
-Angel
Have there been any updates to the list of email action fields? Are there any additional parameters or variables that can be used in the -subject and/or -body of the email?
Regards,
Jeff 🙂
Between all of the practice sessions, qualifying and racing, the vast
majority of your time will be spent massaging the dual
shock’s triggers. This game console unit can cost around $280 dollars and you can also
receive special discount if you purchase bundle deals.
Sony has made the Play – Station 3 into a multi-purpose
entertainment system.
Also visit my homepage: Playstation 3 Controller Battery
Status (/)
It looks like the Get-AlarmAction only the first alarm rather then getting them all. I’m trying to do the following
Get-AlarmDefinition | Get-AlarmAction | Remove-AlarmAction -Confirm:$false
In hopes that it would delete them all. It only deletes the first.
I also tried the following thinking it was a syntax error or something:
Get-AlarmDefinition | Get-AlarmAction | %{ $_ | Remove-AlarmAction -Confirm:$false}
it gave me the same result. I’m running PS4.0 and PCLI 5.5.0-1295336. Looks like a bug in the cmdlet.
Stephen
Hello,
I am looking for a powercli command to set an alarm “Datastore disk usage alarm” for a specific set of datastores. Can anyone help me with the powercli command to setup this alarm for a specific datastore OR any command which can exclude some datastores from this alarm.
Govind
Hi there, I wish for to subscribe for this website to get hottest updates, so where can i
do it please help out.
tes
thank you for the article that you shared, very good
http://alexis4play.web.id/
your post very interesting, i hope you can post more again
http://otomotifcom.web.id/
Thank you, for various information. I really like the information you provided, hopefully in the future you can provide more new information to us all.
Check my site: http://bursaotomotifsunter.web.id/
Hallo, I am really glad I have found this info. Nowadays bloggers publish just about gossip and internet stuff and this is really irritating. A good site with interesting content, that’s what I need. Thank you for making this site, and I will be visiting again.http://fashionweeks.web.id/
your site very good
Very informative article. Thanks for the article.
https://www.comfortdrive.in/
Nice information here dude!
thanks for sharing
Any way to extract Alarm Definitions where Alarm Action is set to send e-mail to a specific e-mail address?
We have tons of Alarm Definitions and its hard to go through all of them.
Get-AlarmDefinition | Get-AlarmAction | Select-Object -Property To,ActionType,AlarmDefinition | format-table -autosize -wrap
Is already helpful but I don’t know the syntax to add a filter for the “to” property
nice information dude, and thank you
indo7poker
Super Post
P650 Compliant Packaging