Health Endpoint Monitoring Pattern




Different forms of health checks, calling a method on the service domain or checking config value is present and correct. 




public ActionResult CoreServices()
    // Run a simple check to ensure the database is available.

    // Run a simple check on our external service.
  catch (Exception ex)
    Trace.TraceError("Exception in basic health check: {0}", ex.Message);

    // This can optionally return different status codes based on the exception.
    // Optionally it could return more details about the exception.
    // The additional information could be used by administrators who access the
    // endpoint with a browser, or using a ping utility that can display the
    // additional information.
    return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError);
  return new HttpStatusCodeResult((int)HttpStatusCode.OK);
The ObscurePath method shows how you can read a path from the application configuration and use it as the endpoint for tests. This example also shows how you can accept an ID as a parameter and use it to check for valid requests.
public ActionResult ObscurePath(string id)
  // The id could be used as a simple way to obscure or hide the endpoint.
  // The id to match could be retrieved from configuration and, if matched, 
  // perform a specific set of tests and return the result. It not matched it
  // could return a 404 Not Found status.

  // The obscure path can be set through configuration in order to hide the endpoint.
  var hiddenPathKey = CloudConfigurationManager.GetSetting("Test.ObscurePath");

  // If the value passed does not match that in configuration, return 403 "Not Found".
  if (!string.Equals(id, hiddenPathKey))
    return new HttpStatusCodeResult((int)HttpStatusCode.NotFound);

  // Else continue and run the tests...
  // Return results from the core services test.
  return this.CoreServices();
The TestResponseFromConfig method shows how you can expose an endpoint that performs a check for a specified configuration setting value.
public ActionResult TestResponseFromConfig()
  // Health check that returns a response code set in configuration for testing.
  var returnStatusCodeSetting = CloudConfigurationManager.GetSetting(

  int returnStatusCode;

  if (!int.TryParse(returnStatusCodeSetting, out returnStatusCode))
    returnStatusCode = (int)HttpStatusCode.OK;

  return new HttpStatusCodeResult(returnStatusCode);