Cloudflare Docs
Load Balancing
Load Balancing
Edit this page on GitHub
Set theme to dark (⇧+D)

Manage monitors

A monitor issues health monitor requests at regular intervals to evaluate the health of each server within an origin pool.

When a pool becomes unhealthy, your load balancer takes that pool out of the server rotation.

For more details about monitors, refer to Monitors.


​​ Create a monitor

Set up the monitor

You can create a monitor within the load balancer workflow or in the Monitors section of the dashboard:

  1. Go to Traffic > Load Balancing.

  2. Select Manage Monitors.

  3. Select Create.

  4. Add the following information:

    • Type: The protocol to use for health monitors
      • Non-enterprise customers: Choose HTTP, HTTPS, or TCP.
      • Enterprise customers: Choose HTTP, HTTPS, TCP, UDP ICMP, ICMP Ping, or SMTP.
    • Path: The endpoint path to run health monitor requests against
    • Port: The destination port for health monitors
  5. For additional settings, select Advanced health monitor settings:

    • Interval:
      • By increasing the default, you can improve failover time, but you may also increase load on your servers.
      • Minimum time in seconds is 60 (Pro), 15 (Business), and 10 (Enterprise).
    • Timeout and Retries:
      • The health monitor request will return unhealthy if it exceeds the duration specified in Timeout (and exceeds this duration more times than the specified number of Retries).
    • Expected Code(s): The expected HTTP response codes listed individually (200, 302) or as a range (for example, entering 2xx would cover all response codes in the 200 range).
    • Response Body:
      • Looks for a case-insensitive substring in the response body.
      • Make sure that the value is relatively static and within the first 100 MB of the HTML page.
    • Simulate Zone:
      • Pushes a request from Cloudflare Health Monitors through the Cloudflare stack as if it were a real visitor request to help analyze behavior or validate a configuration using the zone specified.
      • It is recommended to use the same zone in which the Load Balancer exists.
      • Ensures health monitor requests are compatible with features like authenticated origin pulls and Argo Smart Routing.
    • Follow Redirects:
      • Instead of reporting a 301 or 302 code as unhealthy, the health monitor request follows redirects to the final endpoint.
    • Configure Request Header(s):
      • Useful if your servers are expecting specific incoming headers.
    • Header:
      • The HTTP request headers to send in the health monitor. It is recommended that you set a Host header by default. The User-Agent header cannot be overridden. This parameter is only valid for HTTP and HTTPS monitors.
  6. Select Save.

Prepare your servers

Make sure that your firewall or web server does not block or rate limit your configured health monitors or requests associated with Cloudflare IP addresses.

Each health monitor has the HTTP user-agent of "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/; pool-id: $poolid)", where the $poolid is the first 16 characters of the associated pool.

Attach the monitor to a pool

Once your monitor is created, you need to attach it to an origin pool:

  1. Go to Traffic > Load Balancing.

  2. Select Manage Pools.

  3. On a specific pool, select Edit.

  4. Update the following information:

    • Monitor: Select your monitor.
    • Health Monitor Regions: Specifies geographic regions from which Cloudflare should send health monitor requests. Because of how monitors check pool health, selecting multiple regions could increase the load on your servers.
    • Notification E-mail: Contains email addresses that receive notifications (individual, mailing list address, PagerDuty address).
  5. Select Save. The status of your health monitor will be unknown until the results of the first check are available.

Set up the monitor

For a full list of monitor properties, refer to Create Monitor. If you need help with API authentication, refer to Cloudflare API documentation.

Request
curl -X POST \
-H "X-Auth-Email: [email protected]" \
-H "X-Auth-Key: REDACTED" \
"https://api.cloudflare.com/client/v4/accounts/:account_id/load-balancers/monitors" \
-H "Content-Type: application/json" \
-d '{
"type":"https",
"description":"Login page monitor",
"method":"GET",
"path":"/health",
"header": {
"Host":["example.com"],
"X-App-ID":["abc123"]
},
"port":8080,
"timeout":3,
"retries":0,
"interval":90,
"expected_body":"alive",
"expected_codes":"2xx",
"follow_redirects":true,
"allow_insecure":true,
"consecutive_up":3,
"consecutive_down":2,
"probe_zone":"example.com"
}'

The response contains the complete definition of the new monitor.

Response
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": ":monitor-id",
"created_on": "2021-01-01T05:20:00.12345Z",
"modified_on": "2021-01-01T05:20:00.12345Z",
"type": "https",
"description": "Login page monitor",
"method": "GET",
"path": "/health",
"header": {
"Host": [
"example.com"
],
"X-App-ID": [
"abc123"
]
},
"port": 8080,
"timeout": 3,
"retries": 0,
"interval": 90,
"expected_body": "alive",
"expected_codes": "2xx",
"follow_redirects": true,
"allow_insecure": true,
"consecutive_up": 3,
"consecutive_down": 2,
"probe_zone": "example.com"
}
}

Prepare your servers

Make sure that your firewall or web server does not block or rate limit your configured health monitors or requests associated with Cloudflare IP addresses.

Each health monitor has the HTTP user-agent of "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/; pool-id: $poolid)", where the $poolid is the first 16 characters of the associated pool.

Attach the monitor to a pool

Once your monitor is created, save its id property. Include this value in the monitor parameter when creating your pool.


​​ Edit a monitor

To edit a monitor in the dashboard:

  1. Go to Traffic > Load Balancing.
  2. Select Manage Monitors.
  3. On a specific monitor, select Edit.
  4. Update settings as needed.
  5. Select Save.

When you edit a monitor with the API, your request type depends on how much you want to edit.

To update specific settings without having to resubmit the entire configuration, use a PATCH request. For broader changes, use a PUT request.


​​ Delete a monitor

To delete a monitor in the dashboard:

  1. Go to Traffic > Load Balancing.
  2. Select Manage Monitors.
  3. On a specific monitor, select Delete.
To delete a monitor using the API, send a DELETE request.