Cloudflare

Información general

Integra con Cloudflare para obtener las métricas de tu zona, incluido el tráfico web, las consultas de DNS y la información sobre amenazas. La integración se basa en la API de análisis de Cloudflare. Obtén más información sobre qué recursos corresponden a qué métricas en nuestra documentación.

Log Collection: además de estas métricas, Cloudflare permite a los clientes enviar logs directamente a Datadog mediante Cloudflare Logpush. Estos logs detallados contienen metadatos generados por los productos de Cloudflare y son útiles para la depuración y la creación de análisis, especialmente cuando se combinan con logs de otras fuentes. Habilita la recopilación de logs de Cloudflare en combinación con estas métricas para obtener una visibilidad completa de tu entorno de Cloudflare.

El dashboard listo para usar mejora la seguridad y el rendimiento de tus aplicaciones. Este panel único te brinda visibilidad de:

  • amenazas a la seguridad
  • volumen de solicitudes HTTP y tasas de error
  • balanceo de carga, incluido el tiempo de ida y vuelta y cualquier cambio en el flujo de tráfico
  • problemas de rendimiento en los scripts de workers

Con logs enriquecidos y métricas detalladas que te brindan una visión profunda de tu infraestructura de Cloudflare, puedes crear el contexto que necesitas para resolver problemas.

La integración funciona con Datadog Cloud SIEM para proporcionar detección de amenazas lista para usar para:

  • viaje imposible
  • errores de configuración peligrosos
  • ataques DDoS

Mitiga las amenazas de seguridad más rápidamente con los planes de automatización de flujo de trabajo incluidos, como bloquear una dirección IP o crear un caso en Datadog.

Configuración

Antes de comenzar, necesitas una cuenta de Datadog, con una clave de API y acceso a Cloudflare Logpush, que requiere un plan de cuenta Enterprise.

Al utilizar un token de API de Cloudflare, asegúrate de que tenga los permisos Zone > Zone > Read y Zone > Analytics > Read.

Instalación

Instala la integración con el cuadro de la integración de Cloudflare en Datadog.

Configuración

  1. Ve a la pestaña Configure dentro del cuadro de la integración de Cloudflare en Datadog.
  2. Ingresa las direcciones de correo electrónico y las claves o los tokens de API de las cuentas que deseas monitorizar. Tu clave de API y token de API de Cloudflare están disponibles en tu cuenta de Cloudflare en My profile > Api Tokens.
  3. Añade un nombre para la cuenta. Este nombre es arbitrario y se utiliza en la etiqueta account en tus métricas.

Recopilación de logs

Cloudflare permite a los clientes enviar logs directamente a Datadog mediante Cloudflare Logpush. Puedes gestionar el trabajo de Logpush con la API de Cloudflare o directamente dentro de tu dashboard de Cloudflare.

Si instalas el pipeline de la integración de Cloudflare, se reasignarán automáticamente determinados atributos. Para ver qué atributos se reasignaron:

  1. Ve a Pipelines de logs.
  2. Haz clic en Browse Pipeline Library en el margen superior derecho.
  3. Ingresa Cloudflare en la barra de búsqueda.
  4. Haz clic en Cloudflare para ver la lista de reasignadores y otros procesadores que están instalados.

API de Cloudflare

  1. Crea un trabajo de Logpush realizando una solicitud POST al endpoint de trabajos de Logpush. Incluye los siguientes campos:

    • name (opcional): usa tu nombre de dominio como nombre del trabajo.
    • destination_conf: un destino de logs que consta de los siguientes parámetros:
      • <DATADOG_ENDPOINT_URL>: el endpoint de entrada de logs HTTP de Datadog, que puede ser cualquiera de los que se indican a continuación. Puedes encontrar la diferencia en la Referencia de API de Datadog.
        • v1: http-intake.logs./v1/input
        • v2 (última): http-intake.logs./api/v2/logs
      • <DATADOG_API_KEY>: tu clave de API de Datadog.
      • ddsource: se debe establecer en cloudflare.
      • service (opcional): especifica el nombre del servicio.
      • host (opcional): especifica el nombre del host.
      • ddtags (opcional): especifica las etiquetas.
    • dataset: la categoría de logs que deseas recibir. Consulta los campos de log de Cloudflare para obtener una lista de los conjuntos de datos admitidos.
    • logpull_options (opcional): para configurar los campos, la frecuencia de muestreo y el formato de la marca de tiempo, consulta las opciones de la API de Logpush. Datadog exige el uso del formato RFC 3339 para marcas de tiempo de Cloudflare, que es la opción predeterminada que utiliza Cloudflare.

    Example request:

    curl -s -X POST 'https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logpush/jobs' \
    --header 'X-Auth-Key: <CLOUDFLARE_AUTH_KEY>' \
    --header 'X-Auth-Email: <CLOUDFLARE_AUTH_EMAIL>' \
    --header 'Content-Type: application/json' \
    --data-raw '{
       "name": "<NAME>",
       "destination_conf": "datadog://<DATADOG_ENDPOINT_URL>?header_DD-API-KEY=<DATADOG_API_KEY>&ddsource=cloudflare&service=cloudflare&ddtags=env:dev",
       "logpull_options": "fields=RayID,EdgeStartTimestamp&timestamps=rfc3339",
       "dataset": "http_requests"
    }'
    

    Ejemplo de respuesta:

    {
     "errors": [],
     "messages": [],
     "result": {
       "id": 100,
       "dataset": "http_requests",
       "enabled": false,
       "name": "<DOMAIN_NAME>",
       "logpull_options": "fields=RayID,EdgeStartTimestamp&timestamps=rfc3339",
       "destination_conf": "datadog://http-intake.logs./v1/input?header_DD-API-KEY=<DD-API-KEY>&ddsource=cloudflare&service=cloudflare&ddtags=env:dev",
       "last_complete": null,
       "last_error": null,
       "error_message": null
     },
     "success": true
    }
    

    Toma nota del valor de id. En el ejemplo anterior, es 100.

  2. Habilita el trabajo. Utiliza el ID de trabajo devuelto en la respuesta y envía {"enabled": true} en el cuerpo de la solicitud.

    Example request:

    curl -s -X PUT \
    https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/logpush/jobs/<JOB_ID> -d'{"enabled":true}' | jq .
    

    Example response:

    {
      "errors": [],
      "messages": [],
      "result": {
        "id": 100,
        "dataset": "http_requests",
        "enabled": true,
        "name": "<DOMAIN_NAME>",
        "logpull_options": "fields=RayID,EdgeStartTimestamp&timestamps=rfc3339",
        "destination_conf": "datadog://?header_DD-API-KEY=<DATADOG-API-KEY>",
        "last_complete": null,
        "last_error": null,
        "error_message": null
      },
      "success": true
    }
    

Dashboard de Cloudflare

  1. Una vez que hayas conectado un servicio con la sección Logpush del dashboard de Cloudflare, selecciona el conjunto de datos y los campos de datos, y luego, en Select destination, elige Datadog.

  2. En Enter destination information, ingresa el endpoint de la URL de Datadog:

    http-intake.logs./api/v2/logs?ddsource=cloudflare
    

    Nota: ddsource=cloudflare es obligatorio. Para diferenciar entre logs, también puedes añadir los parámetros opcionales de service, host y ddtags.

    Example:

    http-intake.logs./api/v2/logs?service=<SERVICE>&host=<HOST>&ddsource=cloudflare
    
  3. ingresa la clave de API de Datadog que utilizaste para configurar el cuadro de la integración de Cloudflare en Datadog.

  4. Después de validar el acceso, debería aparecer el mensaje “Ready to push!” en Prove ownership. Haz clic en Push para finalizar.

Datos recopilados

Métricas

cloudflare.requests.all
(count)
Total request count
Shown as request
cloudflare.requests.cached
(count)
Cached requests count
Shown as request
cloudflare.requests.uncached
(count)
Uncached requests count
Shown as request
cloudflare.requests.ssl.encrypted
(count)
SSL encrypted requests count
Shown as request
cloudflare.requests.ssl.unencrypted
(count)
Unencrypted requests count
Shown as request
cloudflare.requests.country
(count)
Request count, tagged by IATA country code
Shown as request
cloudflare.requests.status
(count)
Request count, tagged by HTTP response code
Shown as request
cloudflare.requests.content_type
(count)
Request count, tagged by Content-Type
Shown as request
cloudflare.requests.ip_class
(count)
Request count, tagged by IP class
Shown as request
cloudflare.requests.cross_zone_sub_requests.avg
(gauge)
The proportion of requests that were inititiated by a Cloudflare Worker on another zone
Shown as request
cloudflare.requests.edge_dns_response_time.avg
(gauge)
Average edge dns response time in milliseconds
Shown as millisecond
cloudflare.requests.edge_time_to_first_byte.avg
(gauge)
Average time to first byte in milliseconds
Shown as millisecond
cloudflare.requests.origin_response_duration.avg
(gauge)
The average originResponseDuration in milliseconds excluding 0 values (i.e. cached ones)
Shown as millisecond
cloudflare.bandwidth.all
(count)
Total bandwidth
Shown as byte
cloudflare.bandwidth.cached
(count)
Cached bandwidth
Shown as byte
cloudflare.bandwidth.uncached
(count)
Uncached bandwidth
Shown as byte
cloudflare.bandwidth.ssl.encrypted
(count)
SSL encrypted bandwidth
Shown as byte
cloudflare.bandwidth.ssl.unencrypted
(count)
Unencrypted bandwidth
Shown as byte
cloudflare.bandwidth.country
(count)
Bandwidth tagged by IATA country code
Shown as byte
cloudflare.bandwidth.content_type
(count)
Bandwidth tagged by Content-Type
Shown as byte
cloudflare.threats.all
(count)
Total threats
Shown as operation
cloudflare.threats.type
(count)
Threats tagged by type
Shown as operation
cloudflare.threats.country
(count)
Threats tagged by IATA country code
Shown as operation
cloudflare.pageviews.all
(count)
Total page views
Shown as page
cloudflare.pageviews.search_engine
(count)
Page views tagged by search engine
Shown as page
cloudflare.uniques.all
(count)
Unique visitors count
Shown as connection
cloudflare.dns.query.all
(count)
DNS query count
Shown as request
cloudflare.dns.query.uncached
(count)
Uncached DNS query count
Shown as request
cloudflare.dns.query.stale
(count)
Stale DNS query count
Shown as request
cloudflare.dns.response_time.avg
(gauge)
DNS query average response time
Shown as millisecond
cloudflare.dns.response_time.median
(gauge)
DNS query median response time
Shown as millisecond
cloudflare.dns.response_time.90p
(gauge)
DNS query response time to the 90th percentile
Shown as millisecond
cloudflare.dns.response_time.99p
(gauge)
DNS query response time to the 99th percentile
Shown as millisecond
cloudflare.workers.requests.all
(count)
The request count to the worker script (metrics may not show without enabled API Key permissions)
Shown as request
cloudflare.workers.requests.errors
(count)
The error count to the worker script (metrics may not show without enabled API Key permissions)
Shown as request
cloudflare.workers.requests.subrequests
(count)
The subrequest count to the worker script (metrics may not show without enabled API Key permissions)
Shown as request
cloudflare.workers.response_time.75p
(gauge)
The worker response time to the 75th percentile (metrics may not show without enabled API Key permissions)
Shown as microsecond
cloudflare.workers.response_time.99p
(gauge)
The worker response time to the 99th percentile (metrics may not show without enabled API Key permissions)
Shown as microsecond
cloudflare.load_balancer.pool.round_trip_time.average
(gauge)
The average round trip time to reach the load balancer pool
Shown as millisecond
cloudflare.load_balancer.pool.health.status
(count)
The load balancer pool health status
Shown as request

Categorías de métricas

La tabla siguiente describe los tipos de métricas recopilados y sus prefijos de métrica asociados.

TipoDescripciónPrefijos de métricas recopilados
Análisis webMétricas relacionadas con el tráfico web y el rendimiento.cloudflare.requests.all
cloudflare.requests.cached
cloudflare.requests.uncached
cloudflare.requests.ssl.encrypted
cloudflare.requests.ssl.unencrypted
cloudflare.requests.country
cloudflare.requests.status
cloudflare.requests.content_type
cloudflare.requests.ip_class
cloudflare.bandwidth.all
cloudflare.bandwidth.cached
cloudflare.bandwidth.uncached
cloudflare.bandwidth.ssl.encrypted
cloudflare.bandwidth.ssl.unencrypted
cloudflare.bandwidth.country
cloudflare.bandwidth.content_type
cloudflare.threats.all
cloudflare.threats.type
cloudflare.threats.country
cloudflare.pageviews.all
cloudflare.pageviews.search_engine
cloudflare.uniques.all
cloudflare.requests.cross_zone_sub_requests.avg
cloudflare.requests.edge_dns_response_time.avg
cloudflare.requests.edge_time_to_first_byte.avg
cloudflare.requests.origin_response_duration.avg
DNSMétricas relacionadas con las consultas DNS y los tiempos de respuesta.cloudflare.dns.query.all
cloudflare.dns.query.uncached
cloudflare.dns.query.stale
cloudflare.dns.response_time.avg
cloudflare.dns.response_time.median
cloudflare.dns.response_time.90p
cloudflare.dns.response_time.99p
Balanceador de cargaMétricas relacionadas con los grupos de balanceo de carga.cloudflare.load_balancer.pool.round_trip_time.average
cloudflare.load_balancer.pool.health.status
Script de WorkersMétricas relacionadas con los scripts de Cloudflare Workers.cloudflare.workers.requests.all
cloudflare.workers.requests.errors
cloudflare.workers.requests.subrequests
cloudflare.workers.response_time.75p
cloudflare.workers.response_time.99p

Permisos

Verifica que tu token de API de Cloudflare tenga estos permisos habilitados:

ContextoPermisoEstado
CuentaAccount AnalyticsRead
CuentaAccount SettingRead
CuentaWorker ScriptsRead
ZonaZoneRead
ZonaAnalyticsRead
ZonaWorker RoutesRead
ZonaLoad BalancersRead

Eventos

La integración de Cloudflare no incluye eventos.

Checks de servicio

La integración de Cloudflare no incluye ningún check de servicio.

Solucionar problemas

¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.