Cloudflare

Présentation

Associez Datadog à votre compte Cloudflare pour consulter vos métriques relatives au DNS et au trafic Web.

Configuration

Avant de commencer, vous avez besoin d’un compte Datadog doté d’une clé API. Vous devez également avoir accès à Cloudflare Logpush, ce qui nécessite un compte Enterprise.

Lorsque vous utilisez un token d’API Cloudflare, assurez-vous qu’il dispose des autorisations Zone > Zone > Read et Zone > Analytics > Read.

Installation

Installez l’intégration avec le carré d’intégration Cloudflare de Datadog.

Configuration

  1. Accédez à l’onglet Configuration dans le carré d’intégration Cloudflare de Datadog.
  2. Saisissez les adresses e-mail et les clés ou tokens d’API des comptes que vous souhaitez surveiller. Pour obtenir vos clés et tokens d’API, accédez à votre compte Cloudflare, puis à My profile > Api Tokens.
  3. Nommez le compte. Ce nom est arbitraire. Il est utilisé dans le tag account de vos métriques.

Collecte de logs

Grâce à son service Logpush, Cloudflare vous permet de transmettre des logs directement à Datadog. Vous pouvez gérer la tâche Logpush avec l’API Cloudflare ou le dashboard Cloudflare.

API Cloudflare

  1. Créez une tâche Logpush en envoyant une requête POST à l’endpoint des tâches Logpush. Renseignez les champs suivants :

    • name (facultatif) : indiquez votre nom de domaine.
    • destination_conf : une destination pour les logs caractérisée par les paramètres suivants :
      • <DATADOG_ENDPOINT_URL> : l’endpoint d’admission des logs HTTP Datadog. Votre endpoint est http-intake.logs./v1/input.
      • <DATADOG_API_KEY> : votre clé d’API Datadog.
      • ddsource : définissez ce paramètre sur cloudflare.
      • service (facultatif) : indiquez le nom du service.
      • host (facultatif) : indiquez le nom du host.
      • ddtags (facultatif) : indiquez des tags.
    • dataset : la catégorie des logs que vous souhaitez recevoir. Consultez la section Champs de log de la documentation Cloudflare (en anglais) pour découvrir la liste des ensembles de données pris en charge.
    • logpull_options (facultatif) : pour configurer les champs, le taux d’échantillonnage et le format des timestamps, consultez la section Options de la documentation sur l’API Logpush (en anglais).

    Exemple de requête :

    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"
    }'
    

    Exemple de réponse :

    {
     "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
    }
    

    Notez la valeur d’id. Dans l’exemple précédent, elle est de 100.

  2. Activez la tâche. Utilisez l’ID de tâche renvoyé dans la réponse et envoyez {"enabled": true} dans le corps de la requête.

    Exemple de requête :

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

    Exemple de réponse :

    {
      "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 Cloudflare

  1. Une fois que vous avez connecté un service à la section Logpush du dashboard Cloudflare, sélectionnez l’ensemble de données, les champs de données, puis la destination Datadog.

  2. Sous Enter destination information, saisissez l’endpoint d’URL Datadog :

    http-intake.logs./v1/input?ddsource=cloudflare
    

    Remarque : ddsource=cloudflare est requis. Pour différencier les logs, vous pouvez également ajouter les paramètres facultatifs service, host et ddtags.

    Exemple :

    http-intake.logs./v1/input?service=<SERVICE>&host=<HOST>&ddsource=cloudflare
    
  3. Saisissez la clé d’API Datadog que vous avez utilisée pour configurer votre intégration Datadog/Cloudflare dans le carré dédié.

  4. Une fois l’accès validé, le message « Ready to push! » s’affiche sous Prove ownership. Cliquez sur Push pour terminer l’opération.

Données collectées

Métriques

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

Autorisations

Vérifiez que votre token d’API Cloudflare dispose des autorisations suivantes :

ScopeAutorisationStatut
CompteAccount AnalyticsRead
CompteAccount SettingRead
CompteWorker ScriptsRead
ZoneZoneRead
ZoneAnalyticsRead
ZoneItinéraires de workersRead
ZoneLoad BalancersRead

Événements

L’intégration Cloudflare n’inclut aucun événement.

Checks de service

L’intégration Cloudflare n’inclut aucun check de service.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.