Home > Blogs > VMware PowerCLI Blog

Managing vSphere Alarms with PowerCLI

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




23 thoughts on “Managing vSphere Alarms with PowerCLI

  1. Carter Shanklin

    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!

  2. Angel Evrov

    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

  3. JM

    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

  4. Angel Evrov

    Thanks JM, we’ll fix this.

  5. JM

    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.

  6. JM

    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.

  7. Colin Johnson

    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?

  8. Jamie Skone

    I agree with Colin. We would really like to modify the subject of the alarm emails so they are more meaningful. Is this possible?

  9. Angel Evrov

    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

    1. Jeff T

      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?

      Jeff 🙂

  10. /

    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 (/)

  11. Stephen Wheet

    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.


  12. Govind Gupta


    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.


  13. choices stories you play free hacking

    Hi there, I wish for to subscribe for this website to get hottest updates, so where can i
    do it please help out.

  14. judi deposit pulsa

    hello I really like to read your blog which contains calm managing vsphere, where this is very good every article that is interesting and good from many sides

  15. prediksi togel

    terima kasih atas informasi yang telah diberikan kepada kami, kami senang bisa membaca semua artikel dari kalian. jangan lupa untuk berkunjung kedalam halaman kami. kunjungi situs kami : https://syairtogelpedia.com/prediksi-togel

  16. Link Alternatif Hokicash

    Dapatkan hadiah harian dan mingguan dari HOKICASH dan Komisi Refferal seumur hidup dari agen bola terpercaya dengan total jutaan untuk member HOKICASH. Tentu saja, dengan bermain melalui ponsel Anda dapat bermain game judi online seperti Poker Online, Bandar Blackjack Online, Bandar Ceme Online, Capsa Susun Online, Sam Gong Online, Domino Kiu Kiu, mancing ikan, Slot games, Sportbook dan live casino kapan saja dan di mana saja.

  17. dewatogelz

    Can i share this article to facebook? This is awesome and helpful for data sidney people who need it.

  18. alternatiflink

    Situs Poker Memberikan List Link Alternatif Poker Online Yang Terpercaya Serta Terbesar Di Indonesia.


  19. Apartemen Fatmawati One

    Apartemen Fatmawati One, Persis depan MRT Cipete Raya, Info lebih lanjut klik https://www.fatmawatione.com/

  20. Indoxxi

    I am really enjoying the theme/design of your web site. Do you ever run into any internet browser compatibility issues? A number of my blog visitors have complained about my site not operating correctly in Explorer but looks great in Opera. Do you have any solutions to help fix this problem?

  21. nggrandong

    Awesome, very helpfull, increase my knowledge, now I can set the alarm for admin. Muchas Gracias

  22. https://togelpedia.pro

    togelpedia adalah website togel online terbaik dan terpercaya yang akan selalu menjadi bandar togel terbonafit karena selalu memberikan minimal deposit yang murah cuman 10rb saja, selain dari itu juga ada bonus dan promo yang besar untuk setiap orang yang ingin bermain togel online disitus kami https://togelpedia.pro


Leave a Reply

Your email address will not be published. Required fields are marked *