So, it might be useful to know what's going on your servers, specially when you apply a new MP, or change any other configuration.
In my particular case i just found out that a bunch of gateway servers went to it's limit in Unix/Linux monitoring.
So, i made this Powershell script that retrieves me :
Management Server | Service Name | Service Status | Service PID | CPU Time | Private Bytes
Basically i just make some WMI queries to each MS i've got and put all the info i retrieve in a fancy HTML table.
Well, the output :
And the most important, the code:
Import-Module OperationsManager
New-SCOMManagementGroupConnection -ComputerName $env:computername
$managementServers = (Get-SCOMManagementServer).DisplayName
$Head = "<style>"
$Head +="BODY{background-color:White;font-family:Verdana,sans-serif; font-size: x-small;}"
$Head +="TABLE{font-family: verdana,arial,sans-serif; font-size:9px; color:#333333; border-width: 1px; border-color: #666666; border-collapse: collapse;}"
$Head +="TH{border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;}"
$Head +="TD{border-width: 1px; padding: 8px; border-style: solid;}"
$Head +="</style>"
$myStatus = "<br><br>"
# Your logo (if any) goes here :)
$myStatus += "<img src='.\images\logo' height='12%' width='12%'>"
$myStatus += "<center><h1 style=color:#999999>.: (OpsMgr) Management Servers - Services Status :.</center>"
$myStatus += "<table>"
$myStatus += "<tr>"
$myStatus += "<td>Management Server</td>"
$myStatus += "<td>Service</td>"
$myStatus += "<td>Status</td>"
$myStatus += "<td>PID</td>"
$myStatus += "<td>Processor Time</td>"
$myStatus += "<td>Private Bytes (in MB)</td>"
$myStatus += "</tr>"
foreach ( $ms in $managementServers ) {
$perflist = (get-wmiobject Win32_PerfFormattedData_PerfProc_Process -ComputerName $ms)
$services = @("HealthService","OMSDK","cshost")
foreach ($service in $services) {
$mypid = Get-WmiObject win32_service -ComputerName $ms | ?{$_.Name -like "$service" } | select -ExpandProperty ProcessId
$procStatus = (Get-Service -ComputerName $ms -Name $service).Status
$cpuCon = ($perflist | ? {$_.IDProcess -eq "$mypid" }).PercentProcessorTime
$privBytes = [math]::Round((($perflist | ? {$_.IDProcess -eq "$mypid" }).PrivateBytes / 1MB))
$myStatus += "<tr>"
$myStatus += "<td>$ms</td>"
$myStatus += "<td>$service</td>"
$myStatus += "<td>$procStatus</td>"
$myStatus += "<td>$mypid</td>"
$myStatus += "<td>$cpuCon</td>"
$myStatus += "<td>$privBytes</td>"
$myStatus += "</tr>"
}
}
$myStatus += "</table>"
$HTML = ConvertTo-Html -Head $head -Body $myStatus
$HTML > 1.html
Cheers,
No comments:
Post a Comment