HI All,
My organization having 10 + Vcenters. I need script like triggered alarms information. We have many alerts host disconnections, Data store full, network connection lose,
Out put like Vcenter Name, Object(host,datastore,vm), Status , Alarm Name and triggered date.
Thanks for Advanced.
There seems to be some strange characters in the script you are running.
Can you attach the script, redact out all confidential information, to this thread ?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
It seems you had a continuation character on the start of the 2nd line.
Try the attached file.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Does this make a difference ?
foreach($dc in (Get-Datacenter | where {$_.ExtensionData.triggeredAlarmState})){
$dc.ExtensionData.TriggeredAlarmState |
Select @{N='vCenter';E={$vcenter = $dc.Uid.Split('@:')[1]; $vcenter}},
@{N="Entity";E={Get-View $_.Entity -Server $vcenter | Select -ExpandProperty Name}},
@{N="Alarm";E={Get-View $_.Alarm -Server $vcenter | %{$_.Info.Name}}},
Time,OverallStatus |
Where-object{$_.Alarm -notmatch 'Virtual machine cpu usage' -and
$_.Alarm -notmatch 'Host IPMI System Event Log status*'}
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
No difference lucd,
Still showing mixed data on Alarm column.
Just to make sure, if you display the output directly on the console (no Export-Csv), do you see the same behavior ?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
yes. its showing same behavior on console and .csv too.
Sorry, can't seem to be able to reproduce the issues you are seeing.
Works correctly for me when connected to 2 vCenters.
As a final check, can you attach the script as you are running it ?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Hi 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.csv
___________________________________________________________________
Hi Srinuvas,
Thanks It's really cool. i add little more in Script.(where-object ,html & sent Mail).
i required little modification in html block script.
If status is in yellow, that column should show yellow color .
If status is Red, that column should show Red color.
============================================================
============================================================
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|
Where-object{$_.Alarm -notmatch 'Virtual machine' -and
$_.Alarm -notmatch 'Host IPMI System*' -and
$_.Alarm -notmatch 'Host memory usage' -and
$_.Alarm -notmatch 'Host CPU usage' -and
$_.Alarm -notmatch 'SIOC-enabled'}
}
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
}
$Header = @"
<style>
BODY {background-color: #a3dbe7;}
TABLE {border-width:1px; border-style:solid; border-color:black; border-collapse:collapse;}
TH, TD {border-width:1px; padding:0px; border-style:solid; border-color:black;}
</style>
<title>
Title of my Report
</title>
"@
$sMail = @{
From = "mymailid@mail.com"
To = "mymailid@mail.com"
Subject = 'Vcenter Tiggered Alarms Information.'
BodyAsHtml = $true
Body = $alarms | ConvertTo-HTML -Head $Header| Out-String
SmtpServer = 'smtp server'
}
Send-MailMessage @sMail