GET | /healthcheck | The request for getting health check information. | Depending on the execution mode, you can determine different states of the server. |
---|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using ExtremeReach.Diagnostics.App.Types;
namespace ExtremeReach.Diagnostics.App.Types
{
public enum ExecutionMode
{
Basic = 1,
Standard = 2,
Advanced = 3,
}
public partial class HealthCheckRequest
{
///<summary>
///The mode used to determine what level of health check to perform.
///</summary>
[ApiMember(DataType="ExecutionMode", Description="The mode used to determine what level of health check to perform.", IsRequired=true, ParameterType="query")]
public virtual ExecutionMode ExecutionMode { get; set; }
///<summary>
///The type of server that will be used to determine which monitors will be run.
///</summary>
[ApiMember(DataType="ServerType", Description="The type of server that will be used to determine which monitors will be run.", IsRequired=true, ParameterType="query")]
public virtual ServerType ServerType { get; set; }
///<summary>
///Indicates whether or not to include server state information in the response.
///</summary>
[ApiMember(DataType="boolean", Description="Indicates whether or not to include server state information in the response.", ParameterType="query")]
public virtual bool IncludeServerStateInformation { get; set; }
///<summary>
///Indicates whether or not to suppress returning error codes. This will always return a 200 code to the caller, which is required for PRTG to process the JSON response properly.
///</summary>
[ApiMember(DataType="boolean", Description="Indicates whether or not to suppress returning error codes. This will always return a 200 code to the caller, which is required for PRTG to process the JSON response properly.", ParameterType="query")]
public virtual bool SuppressErrorCodes { get; set; }
///<summary>
///Indicates whether or not to suppress deployment-related errors.
///</summary>
[ApiMember(DataType="boolean", Description="Indicates whether or not to suppress deployment-related errors.", ParameterType="query")]
public virtual bool SuppressDeploymentErrors { get; set; }
}
public partial class HealthCheckResponse
{
public HealthCheckResponse()
{
MonitorSummaries = new List<MonitorSummary>{};
}
public virtual ServerState ServerState { get; set; }
public virtual MonitoringStatus Status { get; set; }
public virtual string StatusMessage { get; set; }
public virtual string CorrelationId { get; set; }
public virtual int FailedMonitorCount { get; set; }
public virtual List<MonitorSummary> MonitorSummaries { get; set; }
public virtual MonitorExecutionMetrics ExecutionMetrics { get; set; }
}
public partial class MonitorExecutionMetrics
{
public virtual DateTime StartDateTime { get; set; }
public virtual DateTime EndDateTime { get; set; }
public virtual TimeSpan Duration { get; set; }
}
public partial class MonitoringResult
{
public MonitoringResult()
{
ErrorMessages = new List<string>{};
}
public virtual string MonitoringName { get; set; }
public virtual MonitoringStatus Status { get; set; }
public virtual string StatusMessage { get; set; }
public virtual List<string> ErrorMessages { get; set; }
}
public enum MonitoringStatus
{
Success = 1,
Failure = 2,
}
public partial class MonitorSummary
{
public MonitorSummary()
{
Results = new List<MonitoringResult>{};
ErrorMessages = new List<string>{};
}
public virtual string MonitorName { get; set; }
public virtual MonitoringStatus Status { get; set; }
public virtual List<MonitoringResult> Results { get; set; }
public virtual List<string> ErrorMessages { get; set; }
}
public partial class ServerState
{
public virtual string ServerName { get; set; }
public virtual decimal? TotalRamInMb { get; set; }
public virtual decimal? AvailableRamInMb { get; set; }
public virtual decimal? UsedCpuPercent { get; set; }
}
public enum ServerType
{
App = 1,
Sql = 2,
FtpApi = 3,
Ftp = 4,
Batch = 5,
Identity = 6,
Qc = 7,
XcodeV = 8,
XcodeC = 9,
MsgVast = 10,
AsgVast = 11,
Mongo = 12,
Agents = 13,
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /healthcheck HTTP/1.1 Host: apps-50.tclclouds.com Accept: application/xml
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <HealthCheckResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ExtremeReach.Diagnostics.App.Types"> <CorrelationId>String</CorrelationId> <ExecutionMetrics> <Duration>PT0S</Duration> <EndDateTime>0001-01-01T00:00:00</EndDateTime> <StartDateTime>0001-01-01T00:00:00</StartDateTime> </ExecutionMetrics> <FailedMonitorCount>0</FailedMonitorCount> <MonitorSummaries> <MonitorSummary> <ErrorMessages xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d4p1:string>String</d4p1:string> </ErrorMessages> <MonitorName>String</MonitorName> <Results> <MonitoringResult> <ErrorMessages xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d6p1:string>String</d6p1:string> </ErrorMessages> <MonitoringName>String</MonitoringName> <Status>Success</Status> <StatusMessage>String</StatusMessage> </MonitoringResult> </Results> <Status>Success</Status> </MonitorSummary> </MonitorSummaries> <ServerState> <AvailableRamInMb>0</AvailableRamInMb> <ServerName>String</ServerName> <TotalRamInMb>0</TotalRamInMb> <UsedCpuPercent>0</UsedCpuPercent> </ServerState> <Status>Success</Status> <StatusMessage>String</StatusMessage> </HealthCheckResponse>