Microsoft Exchange Server 2013 introduced new monitoring of the Exchange subsystem, which was also improved by the release of CU1. This feature is known as Managed Availability. A good description of this feature can be found on the Exchange Team blog in this post – http://blogs.technet.com/b/exchange/archive/2012/09/21/lessons-from-the-datacenter-managed-availability.aspx. What my blog post concentrates on is how to access this information and make it useable to the Exchange Admin/Engineer.
In the RTM version of Exchange 2013 the commands get-serverhealth and get-healthreport were connected more closely with one piping into the other. CU1 for Exchange 2013 now allows these PowerShell commands to be run independently of each other.
Get-HealthReport provides the relative health of various components in Exchange and what state it is in – online, partially online, offline, sidelined, functional, or unavailable. The healthsets available are:
Autodiscover.Protocol, ActiveSync, ActiveSync.Protocol, Autodiscover, Autodiscover.Proxy, ActiveSync.Proxy, ECP.Proxy, EWS.Proxy, OAB.Proxy, OWA.Proxy, RPS.Proxy, RWS.Proxy, Outlook.Proxy, Antimalware, AD, ECP, Ediscovery.Protocol, EDS, EventAssistants, EWS.Protocol, DataProtection, EWS, FIPS, FrontendTransport, HubTransport, HDPhoto, Monitoring, Clustering, DiskController, AntiSpam, FfoQuarantine, MailboxTransport, MSExchangeCertificateDeployment, OWA.Protocol.Dep, MailboxSpace, MailboxMigration, MRS, Network, Search, OWA.Protocol, OWA, PublicFolders, Transport, RPS, SiteMailbox, Outlook, Outlook.Protocol, Store, UM.CallRouter, UM.Protocol, UserThrottling, DAL, Security, IMAP.Protocol, Datamining, Provisioning, POP.Protocol, ProcessIsolation, TransportSync, MessageTracing, CentralAdmin, OAB, Calendaring, PushNotifications.Protocol and RemoteMonitoring.
Now let’s take a look at the output of the command:
What does this report tell us?
The report gives the admin or engineer a quick view of the Exchange 2013’s relative health. In the sample report that was attached you can see that there were several Health Sets that show as Unhealthy. However, we don’t know exactly know what that means. Let’s dig a bit deeper into each health set that shows healthy. First, let’s get just that subset of Health Sets. Just run this command:
get-healthreport -server ds-l1-e2k13-01 | where {$_.alertvalue -ne “healthy”} | ft -auto
Let’s go a step further and get more information on each of these Health Sets and which tests triggered the non-Healthy state:
$test = get-healthreport -server ds-l1-e2k13-01 | where {$_.alertvalue -ne “healthy”}
foreach ($line in $test) {$line.entries | where {$_.alertvalue -ne “healthy”} | ft -auto}
Now we have more information to work with, but still we don’t know why these tests failed. How do we get this information?
Now that we have all the information we can squeeze out of the Get-HealthReport command, the next step would be to see why any of these fail. I would begin typical Exchange troubleshooting by looking at event logs as well as turning up diagnostic logging.
Related Information
Get-HealthReport
Get-ServerHealth
Technet article 1
Technet article 2
Reblogged this on Copy Paste Repeat.