After 2016 CU15 unable to fix the unheathy status:
Server State Name TargetResource HealthSetName AlertValue ServerComponent
------ ----- ---- -------------- ------------- ---------- ---------------
Server1 NotApplicable MaintenanceFailureMonitor.OLS User Store - Query OLS User Store - Query Unhealthy None
>Get-ServerHealth -HealthSet "OLS User Store - Query" -Server Server1 | Format-List
RunspaceId : 522ba05e-d5f7-44cc-9022-593a22cee5d0
Server : Server1
CurrentHealthSetState : NotApplicable
Name : MaintenanceFailureMonitor.OLS User Store - Query
TargetResource :
HealthSetName : OLS User Store - Query
HealthGroupName : ServiceComponents
AlertValue : Unhealthy
FirstAlertObservedTime : 16.03.2020 12:27:52
Description :
IsHaImpacting : False
RecurranceInterval : 300
DefinitionCreatedTime : 16.03.2020 12:08:16
HealthSetDescription :
ServerComponentName : None
LastTransitionTime : 16.03.2020 12:27:52
LastExecutionTime : 16.03.2020 13:12:53
LastExecutionResult : Succeeded
ResultId : 482515544
WorkItemId : 2033339796
IsStale : False
Error :
Exception :
IsNotified : False
LastFailedProbeId : -274855559
LastFailedProbeResultId : 128480061
ServicePriority : 0
Identity : OLS User Store - Query\MaintenanceFailureMonitor.OLS User Store - Query\
IsValid : True
ObjectState : New
EVENT Viewer: Microsoft-Exchange-ManagedAvailability/Monitoring
Maintenance workitem "OlsQuery.Maintenance.Workitem" (ID: 2045954113) has failed. Health Manager has detected it is either set to run once and failed, or has been failing consistently. Maintenance workitem failure could cause monitoring gap and should be investigated.
The error message from the last result is:
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Double.Parse(String s)
at Microsoft.Office.Datacenter.Monitoring.ActiveMonitoring.Recovery.AttributeHelper.GetAttribute[T](Dictionary`2 attributes, String attributeName, Boolean isMandatory, T defaultValue, Func`2 parseMethod)
at Microsoft.Office.Datacenter.Monitoring.ActiveMonitoring.Recovery.AttributeHelper.GetAttribute[T](String attributeName, Boolean isMandatory, T defaultValue, Func`2 parseMethod)
at Microsoft.Office.Datacenter.Monitoring.ActiveMonitoring.Recovery.AttributeHelper.GetDouble(String attributeName, Boolean isMandatory, Double defaultValue, Nullable`1 minimum, Nullable`1 maximum)
at Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.OlsQuery.FailureRateProbeSettings..ctor(WorkDefinition workDefinition, String prefix)
at Microsoft.Exchange.Monitoring.ActiveMonitoring.Local.OlsQuery.FailureRateProbe.AddWorkDefinitions(MaintenanceWorkItem maintenanceWorkItem)
at Microsoft.Exchange.Monitoring.ActiveMonitoring.OlsQuery.OlsQueryDiscovery.CreateMonitoringContexts(LocalEndpointManager endpointManager)
at Microsoft.Exchange.Monitoring.ActiveMonitoring.OlsQuery.OlsQueryDiscovery.DoWork(CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Office.Datacenter.WorkerTaskFramework.WorkItem.<ExecuteAsync>d__b.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Office.Datacenter.WorkerTaskFramework.WorkItem.<StartExecutingAsync>d__7.MoveNext()