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 .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /healthcheck HTTP/1.1 Host: 54.235.149.200 Accept: text/jsv
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { ServerState: { ServerName: String, TotalRamInMb: 0, AvailableRamInMb: 0, UsedCpuPercent: 0 }, Status: Success, StatusMessage: String, CorrelationId: String, FailedMonitorCount: 0, MonitorSummaries: [ { MonitorName: String, Status: Success, Results: [ { MonitoringName: String, Status: Success, StatusMessage: String, ErrorMessages: [ String ] } ], ErrorMessages: [ String ] } ], ExecutionMetrics: { StartDateTime: 0001-01-01, EndDateTime: 0001-01-01, Duration: PT0S } }