Health Check

The SignServer Health Check service can be used for health monitoring and is useful for clusters, as it can be checked by load balancers to determine if a node should be active in the cluster (healthy), or taken out of the cluster (unhealthy).

The servlet is located at the URL: http://localhost:8080/signserver/healthcheck/signserverhealth and configured in signserver_deploy.properties.

Configuration Parameters

The following configuration parameters can be set to configure authorization and what the service checks:

Parameter

Description

healthcheck.authorizedips

A semicolon-delimited list of IP addresses authorized to access the healthcheck servlet. If the list contains the keyword "ANY", any IP address is authorized access. Defaults to 127.0.0.1.

healthcheck.minimumfreememory

Number of megabytes of memory that must be free before removing the node out of the cluster. Defaults to 1.

healthcheck.checkdbstring

String used to do a minimal check that the database is working. May differ between databases. Defaults to Select count(*) from signerconfigdata, the property is not used when running without database.

healthcheck.maintenancefile

The path to a file containing the maintenance state. This file is a standard Java property file and should have a property (by default named DOWN_FOR_MAINTENANCE"). If this property has the value true, none of the standard health checks will be performed, and instead the result will be a string of the form MAINT: DOWN_FOR_MAINTENANCE. If this property is not set (or an invalid file is given), the maintenance functionality is disabled.

healthcheck.maintenancepropertyname

The property name to be used in the maintenance file. This will also affect the error message returned when in maintenance mode (the part of the string after MAINT: defaults to DOWN_FOR_MAINTENANCE).

healthcheck.customerrormessage

If this is set to a non-empty value, the value is used for the error message instead of the details describing the errors (thus not exposing internal details).

healthcheck.sendservererror

If set to true (default), HTTP status 500 is returned with an error page containing the error message if health-monitoring fails. If set to false, a plain text result with HTTP status 200 is returned instead.

 Available tests and responses


  • No errors: If all tests passed the HTTP result code is "200 OK" and page contains only the text "ALLOK".

  • Down for maintenance: If the down for maintenance file indicates that the server is down for maintenance an HTTP response code in 5xx range is returned with an error page containing "MAINT: " followed of the name of the maintenance property as configured. No further checks are performed.

  • Database test: A test is performed that SignServer is able to query the database. When running without database a check is made that the configured directory is initialized correctly and is not empty. If anything failed one or more error messages are included in an error page returned with the HTTP response code in the 5xx range.

  • Memory test: Checks the available free memory. If anything failed, an error message is included in an error page returned with the HTTP response code in the 5xx range.

  • Workers test: Each (non-disabled) worker is checked for a number of things. If anything failed, one or more error messages are included in an error page returned with the HTTP response code in the 5xx range.

    • Token offline: Workers having a crypto token can be reported as offline
    • Worker status and errors: Each worker implementation can put different requirements on when it is status is considered to be offline.
    • Signer certificate: Signers requiring a certificate are checked that they have a certificate matching the configured key-pair and that the certificate is valid according to the certificate validity time and the configured minimum remaining validity time.
    • TimeStampSigner certificate missing EKU: If a TimeStampSigner certificate does not include the required EKU its status is set to offline.
    • TimeStampSigner certificate not included in certificate chain If a TimeStampSigner certificate chain property does not include the signer certificate its status is set to offline.
  • Disabled workers: Workers that are disabled by having the worker property DISABLED=true are not considered in the Health Check report.