VMware Cloud Community
Srinivasu13
Enthusiast
Enthusiast
Jump to solution

Triggered Alarms export from multiple VC's.

Hi Team,

I am looking for script to collect "Triggered Alarms" from 4 VC's in a single report. We are using ESXi 4.1 Ver in all VC's.

Is it possible to collect all Triggered Alarms from 4 VC's in a sigle report and automatically through mail with Excel report.

Thank You,

Regards,

Srinivasu

------------------------------------------------------------------------------- If you found this or any other answer helpful, please consider to award points. (use Correct or Helpful buttons) Regards, Srini
0 Kudos
1 Solution

Accepted Solutions
Srinivasu13
Enthusiast
Enthusiast
Jump to solution

Finally the below script helped for my requirement.

Try below script to collect triggered alarms from multiple vCenters:

How to run this scripts: .\Get-TriggeredAlarms -vCenters vc001,vc002 vc03

Output file location: c:\temp\alarms.csv

Script:

______________________________________________________________________________

param (

    [String[]]$vCenters

)

Function Get-TriggeredAlarms {

    param (

        $vCenter = $(throw "A vCenter must be specified."),

        [System.Management.Automation.PSCredential]$credential

    )

    if ($credential) {

        $vc = Connect-VIServer $vCenter -Credential $credential

    }

    else {

        $vc = Connect-VIServer $vCenter

    }

    if (!$vc) {

        Write-Host "Failure connecting to the vCenter $vCenter."

        exit

    }

    $rootFolder = Get-Folder -Server $vc "Datacenters"

    foreach ($ta in $rootFolder.ExtensionData.TriggeredAlarmState) {

        $alarm = "" | Select-Object VC, EntityType, Alarm, Entity, Status, Time, Acknowledged, AckBy, AckTime

        $alarm.VC = $vCenter

        $alarm.Alarm = (Get-View -Server $vc $ta.Alarm).Info.Name

        $entity = Get-View -Server $vc $ta.Entity

        $alarm.Entity = (Get-View -Server $vc $ta.Entity).Name

        $alarm.EntityType = (Get-View -Server $vc $ta.Entity).GetType().Name   

        $alarm.Status = $ta.OverallStatus

        $alarm.Time = $ta.Time

        $alarm.Acknowledged = $ta.Acknowledged

        $alarm.AckBy = $ta.AcknowledgedByUser

        $alarm.AckTime = $ta.AcknowledgedTime       

        $alarm

    }

    Disconnect-VIServer $vCenter -Confirm:$false

}

Write-Host ("Getting the alarms from {0} vCenters." -f $vCenters.Length)

$alarms = @()

foreach ($vCenter in $vCenters) {

    Write-Host "Getting alarms from $vCenter."

    $alarms += Get-TriggeredAlarms $vCenter

}

$alarms | export-csv c:\temp\alarms.

------------------------------------------------------------------------------- If you found this or any other answer helpful, please consider to award points. (use Correct or Helpful buttons) Regards, Srini

View solution in original post

0 Kudos
2 Replies
scott28tt
VMware Employee
VMware Employee
Jump to solution

Moderator note: Moved to the vCenter Server forum area.


-------------------------------------------------------------------------------------------------------------------------------------------------------------

Although I am a VMware employee I contribute to VMware Communities voluntarily (ie. not in any official capacity)
VMware Training & Certification blog
0 Kudos
Srinivasu13
Enthusiast
Enthusiast
Jump to solution

Finally the below script helped for my requirement.

Try below script to collect triggered alarms from multiple vCenters:

How to run this scripts: .\Get-TriggeredAlarms -vCenters vc001,vc002 vc03

Output file location: c:\temp\alarms.csv

Script:

______________________________________________________________________________

param (

    [String[]]$vCenters

)

Function Get-TriggeredAlarms {

    param (

        $vCenter = $(throw "A vCenter must be specified."),

        [System.Management.Automation.PSCredential]$credential

    )

    if ($credential) {

        $vc = Connect-VIServer $vCenter -Credential $credential

    }

    else {

        $vc = Connect-VIServer $vCenter

    }

    if (!$vc) {

        Write-Host "Failure connecting to the vCenter $vCenter."

        exit

    }

    $rootFolder = Get-Folder -Server $vc "Datacenters"

    foreach ($ta in $rootFolder.ExtensionData.TriggeredAlarmState) {

        $alarm = "" | Select-Object VC, EntityType, Alarm, Entity, Status, Time, Acknowledged, AckBy, AckTime

        $alarm.VC = $vCenter

        $alarm.Alarm = (Get-View -Server $vc $ta.Alarm).Info.Name

        $entity = Get-View -Server $vc $ta.Entity

        $alarm.Entity = (Get-View -Server $vc $ta.Entity).Name

        $alarm.EntityType = (Get-View -Server $vc $ta.Entity).GetType().Name   

        $alarm.Status = $ta.OverallStatus

        $alarm.Time = $ta.Time

        $alarm.Acknowledged = $ta.Acknowledged

        $alarm.AckBy = $ta.AcknowledgedByUser

        $alarm.AckTime = $ta.AcknowledgedTime       

        $alarm

    }

    Disconnect-VIServer $vCenter -Confirm:$false

}

Write-Host ("Getting the alarms from {0} vCenters." -f $vCenters.Length)

$alarms = @()

foreach ($vCenter in $vCenters) {

    Write-Host "Getting alarms from $vCenter."

    $alarms += Get-TriggeredAlarms $vCenter

}

$alarms | export-csv c:\temp\alarms.

------------------------------------------------------------------------------- If you found this or any other answer helpful, please consider to award points. (use Correct or Helpful buttons) Regards, Srini
0 Kudos