New announcements for Serverless, Network, RUM, and more from Dash! New announcements from Dash!

HTTP Check

Agent Check Agent Check

Supported OS: Linux Mac OS Windows

Overview

Monitor the up/down status of local or remote HTTP endpoints. The HTTP check can detect bad response codes (e.g. 404), identify soon-to-expire SSL certificates, search responses for specific text, and much more. The check also submits HTTP response times as a metric.

Setup

Follow the instructions below to install and configure this check for an Agent running on a host. For containerized environments, see the Autodiscovery Integration Templates for guidance on applying these instructions.

Installation

The HTTP check is included in the Datadog Agent package, so you don’t need to install anything else on the servers from which you will probe your HTTP sites. Though many metrics-oriented checks are best run on the same host(s) as the monitored service, you may want to run this status-oriented check from hosts that do not run the monitored sites.

Configuration

Edit the http_check.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory. See the sample http_check.d/conf.yaml for all available configuration options:

init_config:

instances:
  - name: Example website
    url: https://example.com/
    # disable_ssl_validation: false      # default is true, so set false to check SSL validation
    # ca_certs: /path/to/ca/file         # e.g. /etc/ssl/certs/ca-certificates.crt
    # check_certificate_expiration: true # default is true
    # days_warning: 28                   # default 14
    # days_critical: 14                  # default 7
    # timeout: 3                         # in seconds. Default is 10.
  - name: Example website (staging)
    url: http://staging.example.com/

The HTTP check has more configuration options than many checks - many more than are shown above. Most options are opt-in, e.g. the Agent will not check SSL validation unless you configure the requisite options. Notably, the Agent will check for soon-to-expire SSL certificates by default.

This check runs on every run of the Agent collector, which defaults to every 15 seconds. To set a custom run frequency for this check, refer to the collection interval section of the custom check documentation.

See the sample http_check.d/conf.yaml for a full list and description of available options, here is a list of them:

SettingDescription
nameThe name associated with this instance/URL. This will be presented as a tag on Service Checks. Note: This name tag will have any spaces or dashes converted to underscores.
urlThe URL to test.
timeoutThe time in seconds to allow for a response.
methodThe HTTP method. This setting defaults to GET, though many other HTTP methods are supported, including POST and PUT.
dataThe data option is only available when using the POST method. Data should be included as key-value pairs and will be sent in the body of the request.
content_matchA string or Python regular expression. The HTTP check will search for this value in the response and will report as DOWN if the string or expression is not found.
reverse_content_matchWhen true, reverses the behavior of the content_match option, i.e. the HTTP check will report as DOWN if the string or expression in content_match IS found. (default is false)
username & passwordIf your service uses basic authentication, you can provide the username and password here.
http_response_status_codeA string or Python regular expression for an HTTP status code. This check will report DOWN for any status code that does not match. This defaults to 1xx, 2xx and 3xx HTTP status codes. For example: 401 or 4\d\d.
include_contentWhen set to true, the check will include the first 200 characters of the HTTP response body in notifications. The default value is false.
collect_response_timeBy default, the check will collect the response time (in seconds) as the metric network.http.response_time. To disable, set this value to false.
disable_ssl_validationThis setting will skip SSL certificate validation and is enabled by default. If you require SSL certificate validation, set this to false. This option is only used when gathering the response time/aliveness from the specified endpoint. Note this setting doesn’t apply to the check_certificate_expiration option.
ignore_ssl_warningWhen SSL certificate validation is enabled (see setting above), this setting will allow you to disable security warnings.
ca_certsThis setting will allow you to override the default certificate path as specified in init_config
check_certificate_expirationWhen check_certificate_expiration is enabled, the service check will check the expiration date of the SSL certificate. Note that this will cause the SSL certificate to be validated, regardless of the value of the disable_ssl_validation setting.
days_warning & days_criticalWhen check_certificate_expiration is enabled, these settings will raise a warning or critical alert when the SSL certificate is within the specified number of days from expiration.
check_hostnameWhen check_certificate_expiration is enabled, this setting will raise a warning if the hostname on the SSL certificate does not match the host of the given URL.
ssl_server_nameWhen check_certificate_expiration is enabled, this setting specifies the hostname of the service to connect to and it also overrides the host to match with if check_hostname is enabled.
headersThis parameter allows you to send additional headers with the request. See the example YAML file for additional information and caveats.
skip_proxyIf set, the check will bypass proxy settings and attempt to reach the check url directly. This defaults to false.
allow_redirectsThis setting allows the service check to follow HTTP redirects and defaults to true.
tagsA list of arbitrary tags that will be associated with the check. For more information about tags, see our Guide to tagging and blog post, The power of tagged metrics

When you have finished configuring http_check.d/conf.yaml, restart the Agent to begin sending HTTP service checks and response times to Datadog.

Validation

Run the Agent’s status subcommand and look for http_check under the Checks section.

Data Collected

Metrics

network.http.response_time
(gauge)
The response time of an HTTP request to a given url, tagged by url, e.g. 'url:http://example.com'.
shown as second
network.http.can_connect
(gauge)
Whether the check can connect, 1 if true, 0 otherwise. Tagged by url, e.g. 'url:http://example.com'.
network.http.cant_connect
(gauge)
Whether the check failed to connect, 1 if true, 0 otherwise. Tagged by url, e.g. 'url:http://example.com'.
http.ssl.days_left
(gauge)
Days until SSL certificate expiration
shown as day
http.ssl.seconds_left
(gauge)
Seconds until SSL certificate expiration
shown as second

Events

The HTTP check does not include any events.

Service Checks

To create alert conditions on these service checks in Datadog, select ‘Network’ on the Create Monitor page, not ‘Integration’.

http.can_connect:

Returns DOWN when any of the following occur:

  • the request to uri times out
  • the response code is 4xx/5xx, or it doesn’t match the pattern provided in the http_response_status_code
  • the response body does not contain the pattern in content_match
  • reverse_content_match is true and the response body does contain the pattern in content_match
  • uri contains https and disable_ssl_validation is false, and the SSL connection cannot be validated

Otherwise, returns UP.

http.ssl_cert:

The check returns:

  • DOWN if the uri’s certificate has already expired
  • CRITICAL if the uri’s certificate expires in less than days_critical days
  • WARNING if the uri’s certificate expires in less than days_warning days

Otherwise, returns UP.

To disable this check, set check_certificate_expiration to false.

Troubleshooting

Need help? Contact Datadog support.


Mistake in the docs? Feel free to contribute!