---
title: Manage monitors · Cloudflare Load Balancing docs
description: Learn how to set up and maintain monitors for your load balancer.
lastUpdated: 2024-12-16T22:33:26.000Z
source_url:
  html: https://a74404c8.preview.developers.cloudflare.com/load-balancing/monitors/create-monitor/index.md
  md: https://a74404c8.preview.developers.cloudflare.com/load-balancing/monitors/create-monitor/
---

A monitor issues health monitor requests at regular intervals to evaluate the health of each endpoint within a [pool](https://developers.cloudflare.com/load-balancing/pools/).

When a pool [becomes unhealthy](https://developers.cloudflare.com/load-balancing/understand-basics/health-details/), your load balancer takes that pool out of the endpoint rotation.

For more details about monitors, refer to [Monitors](https://developers.cloudflare.com/load-balancing/monitors/).

***

## Create a monitor

* Dashboard

  **Set up the monitor**

  You can create a monitor within the [load balancer workflow](https://developers.cloudflare.com/load-balancing/load-balancers/create-load-balancer/) 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 endpoints.
       * 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**:

       * It is recommended to use the same zone in which the Load Balancer exists.
       * Changes the egress zone settings of a health monitor request to ensure compatibility with features like [authenticated origin pulls](https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/), [Argo Smart Routing](https://developers.cloudflare.com/argo-smart-routing/), and [Aegis](https://developers.cloudflare.com/aegis/).

     * **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 endpoints 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**.

  Note

  To increase confidence in pool status, you can also increase the `consecutive_up` and `consecutive_down` fields when [creating a monitor with the API](https://developers.cloudflare.com/api/resources/load_balancers/subresources/monitors/methods/create/).

  To become healthy or unhealthy, monitored endpoints must pass this health monitor request the consecutive number of times specified in these parameters.

  **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](https://www.cloudflare.com/ips).

  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](https://developers.cloudflare.com/load-balancing/pools/).

  Warning

  If you know that your endpoint is healthy but Load Balancing is reporting it as unhealthy, refer to our [Monitor troubleshooting guide](https://developers.cloudflare.com/load-balancing/troubleshooting/load-balancing-faq/#why-is-my-endpoint-or-pool-considered-unhealthy).

  **Attach the monitor to a pool**

  Once your monitor is created, you need to attach it to a 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](https://developers.cloudflare.com/load-balancing/monitors/#health-monitor-regions), 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.

* API

  **Set up the monitor**

  For a full list of monitor properties, refer to [Create Monitor](https://developers.cloudflare.com/api/resources/load_balancers/subresources/monitors/methods/create/). If you need help with API authentication, refer to [Cloudflare API documentation](https://developers.cloudflare.com/fundamentals/api/).

  ```bash
  curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/load_balancers/monitors" \
  --header "Authorization: Bearer <API_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
    "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.

  ```json
  {
    "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](https://www.cloudflare.com/ips).

  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](https://developers.cloudflare.com/load-balancing/pools/).

  Warning

  If you know that your endpoint is healthy but Load Balancing is reporting it as unhealthy, refer to our [Monitor troubleshooting guide](https://developers.cloudflare.com/load-balancing/troubleshooting/load-balancing-faq/#why-is-my-endpoint-or-pool-considered-unhealthy).

  **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](https://developers.cloudflare.com/load-balancing/pools/create-pool/#create-a-pool).

***

## Edit a monitor

* Dashboard

  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**.

* API

  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](https://developers.cloudflare.com/api/resources/load_balancers/subresources/monitors/methods/edit/) request. For broader changes, use a [PUT](https://developers.cloudflare.com/api/resources/load_balancers/subresources/monitors/methods/update/) request.

***

## Delete a monitor

* Dashboard

  To delete a monitor in the dashboard:

  1. Go to **Traffic** > **Load Balancing**.
  2. Select **Manage Monitors**.
  3. On a specific monitor, select **Delete**.

* API

  To delete a monitor using the API, send a [DELETE](https://developers.cloudflare.com/api/resources/load_balancers/subresources/monitors/methods/delete/) request.
