Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
Exchange 2013 Server Health
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
In Exchange 2013, Microsoft has in-built monitoring of most of the services and components behind the scenes, and the status of these components and services can be polled using the Get-ServerHealth commandlet.
I have developed a powershell/plugin for Nagios to poll the in-built Exchange 2013 monitoring to return the result.
This plugin can monitor any of the following Exchange 2013 Components:
ActiveSync
ActiveSync.Protocol
ActiveSync.Proxy
AD
Antimalware
AntiSpam
Autodiscover
Autodiscover.Protocol
Autodiscover.Proxy
Classification
DAL
Datamining
DataProtection
ECP
ECP.Proxy
EDS
EventAssistants
EWS
EWS.Protocol
EWS.Proxy
FfoQuarantine
FfoTransport
FIPS
FrontendTransport
HubTransport
IMAP.Protocol
MailboxMigration
MailboxTransport
MessageTracing
Monitoring
MRS
MSExchangeCertificateDeployment
Network
OAB
OAB.Proxy
Outlook
Outlook.Protocol
Outlook.Proxy
OWA
OWA.Protocol
OWA.Protocol.Dep
OWA.Proxy
POP.Protocol
ProcessIsolation
Provisioning
PublicFolders
RemoteMonitoring
RMS
RPS
RPS.Proxy
RWS.Proxy
Search
Security
SiteMailbox
Store
Transport
TransportSync
UM.CallRouter
UM.Protocol
UserThrottling
Set up your command in NSClient++ like this:
exchange_serverhealth=exchange/exchange-serverhealth.ps1 -HealthSet $ARG1$
And utilise by setting up a service like this (Replace COMPONENTNAME with any of the components above):
define service{
use generic-service
host_name EX2013-TST-SVR1
service_description COMPONENTNAME HealthSet
check_command check_nrpe!exchange_serverhealth!COMPONENTNAME
}
I have developed a powershell/plugin for Nagios to poll the in-built Exchange 2013 monitoring to return the result.
This plugin can monitor any of the following Exchange 2013 Components:
ActiveSync
ActiveSync.Protocol
ActiveSync.Proxy
AD
Antimalware
AntiSpam
Autodiscover
Autodiscover.Protocol
Autodiscover.Proxy
Classification
DAL
Datamining
DataProtection
ECP
ECP.Proxy
EDS
EventAssistants
EWS
EWS.Protocol
EWS.Proxy
FfoQuarantine
FfoTransport
FIPS
FrontendTransport
HubTransport
IMAP.Protocol
MailboxMigration
MailboxTransport
MessageTracing
Monitoring
MRS
MSExchangeCertificateDeployment
Network
OAB
OAB.Proxy
Outlook
Outlook.Protocol
Outlook.Proxy
OWA
OWA.Protocol
OWA.Protocol.Dep
OWA.Proxy
POP.Protocol
ProcessIsolation
Provisioning
PublicFolders
RemoteMonitoring
RMS
RPS
RPS.Proxy
RWS.Proxy
Search
Security
SiteMailbox
Store
Transport
TransportSync
UM.CallRouter
UM.Protocol
UserThrottling
Set up your command in NSClient++ like this:
exchange_serverhealth=exchange/exchange-serverhealth.ps1 -HealthSet $ARG1$
And utilise by setting up a service like this (Replace COMPONENTNAME with any of the components above):
define service{
use generic-service
host_name EX2013-TST-SVR1
service_description COMPONENTNAME HealthSet
check_command check_nrpe!exchange_serverhealth!COMPONENTNAME
}
Reviews (5)
byjohannes, November 8, 2017
I wanted to provoke an error by shutting down some services. The script still tells me everything is ok , for example on OWA. 19 checks OK.
Any ideas?
Any ideas?
byMathewthegreat, August 2, 2016
I had to modify line 28 and add '-Identity SERVERNAME' to get it to work for me. There may be an easier way to do this, but this may be of use to someone:
$HealthSetResult = (get-serverhealth -Identity SERVERNAME | Where-Object {$_.HealthSetName -eq $HealthSet})
$HealthSetResult = (get-serverhealth -Identity SERVERNAME | Where-Object {$_.HealthSetName -eq $HealthSet})
bybladezz, April 13, 2016
I couldn't get this working in Nagios xi I get the error
:NSClient++.cpp:1195: No handler for command: 'exchange-serverhealth'
2016-04-13 13:58:04: message:include\NSCHelper.cpp:238: No handler for command 'exchange-serverhealth'.
2016-04-13 13:58:58: message:NSClient++.cpp:1195: No handler for command: 'exchange-serverhealth'
2016-04-13 13:58:58: message:include\NSCHelper.cpp:238: No handler for command 'exchange-serverhealth
:NSClient++.cpp:1195: No handler for command: 'exchange-serverhealth'
2016-04-13 13:58:04: message:include\NSCHelper.cpp:238: No handler for command 'exchange-serverhealth'.
2016-04-13 13:58:58: message:NSClient++.cpp:1195: No handler for command: 'exchange-serverhealth'
2016-04-13 13:58:58: message:include\NSCHelper.cpp:238: No handler for command 'exchange-serverhealth
byGalipoli, March 11, 2016
The plugin is good but has some problems which are easy to fix.
I changed line 42 and 58 to
$desc = "$desc" + $healthCheck.Name +","
Without this i only get the Powershell object in output text.
Changed line 40 to
foreach($healthCheck in DegradedHealthChecks) {
and line 56 to
foreach($healthCheck in $OKHealthChecks) {
to get the correct counting of OK and Degraded Checks.
Very Important with this and all other Checks is that you use the 64bit verion of NSClient. Without you get an error that it cant load the needed Powershell commands.
Took me some time to figure this out ...
I changed line 42 and 58 to
$desc = "$desc" + $healthCheck.Name +","
Without this i only get the Powershell object in output text.
Changed line 40 to
foreach($healthCheck in DegradedHealthChecks) {
and line 56 to
foreach($healthCheck in $OKHealthChecks) {
to get the correct counting of OK and Degraded Checks.
Very Important with this and all other Checks is that you use the 64bit verion of NSClient. Without you get an error that it cant load the needed Powershell commands.
Took me some time to figure this out ...
byshree.srikant, January 7, 2014
To utilise, add the following to your nsclient.ini file:
[/settings/external scripts/wrapped scripts]
exchange_serverhealth=exchange/exchange-serverhealth.ps1 -HealthSet $ARG1$
[/settings/external scripts/wrapped scripts]
exchange_serverhealth=exchange/exchange-serverhealth.ps1 -HealthSet $ARG1$