En brefCe guide vous montre comment ingérer les logs Cloudflare dans ClickStack à l’aide de ClickPipes. Cloudflare Logpush dépose les logs dans S3, et ClickPipes ingère en continu les nouveaux fichiers dans ClickHouse. Contrairement à la plupart des guides d’intégration ClickStack qui utilisent l’OpenTelemetry Collector, ce guide utilise ClickPipes pour récupérer directement les données depuis S3.Un jeu de données de démonstration est disponible si vous souhaitez explorer les tableaux de bord avant de configurer l’ingestion en production.
Vue d’ensemble
- Analyser le trafic edge, les performances du cache et les événements de sécurité avec le reste de vos données d’observabilité
- Interroger les logs avec ClickHouse SQL
- Conserver les logs au-delà de la période de rétention par défaut de Cloudflare
Alternative : ingestion HTTP directeCloudflare Logpush prend également en charge l’envoi direct des logs vers des points de terminaison HTTP. Comme Cloudflare exporte les logs au format JSON délimité par des retours à la ligne (NDJSON) et que ClickHouse accepte nativement ce format via Remplacez
JSONEachRow, vous pouvez pointer Logpush directement vers l’interface HTTP de votre ClickHouse Cloud en utilisant le format d’URL de point de terminaison suivant :YOUR_CLICKHOUSE_HOST par le nom d’hôte de votre ClickHouse Cloud et BASE64_CREDENTIALS par vos identifiants encodés en Base64 (echo -n 'default:YOUR_PASSWORD' | base64).Cette solution est plus simple à mettre en place (aucune configuration S3, SQS ou IAM n’est nécessaire), mais Cloudflare Logpush ne permet pas de faire un chargement historique des données en cas d’échec de livraison. Si ClickHouse est indisponible au moment de l’envoi, ces logs sont définitivement perdus.Intégration avec une configuration Cloudflare Logpush existante
Prérequis
- service ClickHouse Cloud en cours de fonctionnement (ClickPipes est une fonctionnalité disponible uniquement dans Cloud — non disponible dans ClickStack OSS)
- Cloudflare Logpush écrit activement des logs dans un bucket S3
- Nom du bucket S3 et région dans laquelle Cloudflare écrit les logs
Configurer l’authentification S3
ClickPipes a besoin d’une autorisation pour lire depuis votre bucket S3. Suivez le guide Accéder aux données S3 en toute sécurité pour configurer soit un accès IAM basé sur les rôles, soit un accès basé sur des identifiants.Pour tous les détails sur l’authentification S3 et les autorisations de ClickPipes, consultez la documentation de référence des S3 ClickPipes.Créer un job ClickPipes
- ClickHouse Cloud Console → Sources de données → Create ClickPipe
- Source : Amazon S3
- Chemin de fichier S3 : le chemin de votre bucket Cloudflare logs avec un caractère générique pour correspondre aux fichiers. Si vous avez activé des sous-dossiers quotidiens dans Logpush, utilisez
**pour faire correspondre les fichiers dans tous les sous-répertoires :- Sans sous-dossiers :
https://your-bucket.s3.us-east-1.amazonaws.com/logs/* - Sous-dossiers quotidiens :
https://your-bucket.s3.us-east-1.amazonaws.com/logs/**/*
- Sans sous-dossiers :
- Authentification : sélectionnez votre méthode d’authentification et fournissez les identifiants ou l’ARN du rôle IAM
- Activez Ingestion continue
- Ordre : ordre lexicographique
20250127/...), ce qui suit naturellement l’ordre lexicographique. ClickPipes recherche de nouveaux fichiers toutes les 30 secondes et ingère chaque fichier dont le nom est supérieur à celui du dernier fichier traité.Mappage du schéma :Cliquez sur Informations d’analyse. ClickPipes prélève un échantillon de vos fichiers de logs et détecte automatiquement le schéma. Vérifiez les colonnes mappées et ajustez les types si nécessaire. Définissez une Clé de tri pour la table de destination — pour les Cloudflare logs, un bon choix est (EdgeStartTimestamp, ClientCountry, EdgeResponseStatus).Cliquez sur Terminer la configuration.Lors de sa création, ClickPipes effectue un chargement initial de tous les fichiers existants dans le chemin spécifié avant de passer au polling continu. Si votre bucket contient un volume important de Cloudflare logs en attente, ce chargement initial peut prendre un certain temps.
Configurer la source de données HyperDX
ClickPipes ingère les logs Cloudflare dans une table plate avec les noms de champs natifs de Cloudflare. Pour afficher ces logs dans HyperDX, configurez une source de données personnalisée qui associe les colonnes Cloudflare à la vue des logs de HyperDX.- Ouvrez HyperDX → Team Settings → Sources
- Cliquez sur Add source et configurez les paramètres suivants. Cliquez sur Configure Optional Fields pour accéder à tous les champs :
| Paramètre | Valeur |
|---|---|
| Name | Cloudflare Logs |
| Source Data Type | Log |
| Database | default |
| Table | cloudflare_http_logs |
| Timestamp Column | toDateTime(EdgeStartTimestamp / 1000000000) |
| Default Select | EdgeStartTimestamp, ClientRequestMethod, ClientRequestURI, EdgeResponseStatus, ClientCountry |
| Service Name Expression | 'cloudflare' |
| Log Level Expression | multiIf(EdgeResponseStatus >= 500, 'ERROR', EdgeResponseStatus >= 400, 'WARN', 'INFO') |
| Body Expression | concat(ClientRequestMethod, ' ', ClientRequestURI, ' ', toString(EdgeResponseStatus)) |
| Log Attributes Expression | map('http.method', ClientRequestMethod, 'http.status_code', toString(EdgeResponseStatus), 'http.url', ClientRequestURI, 'client.country', ClientCountry, 'client.ip', ClientIP, 'cache.status', CacheCacheStatus, 'bot.score', toString(BotScore), 'cloudflare.ray_id', RayID, 'cloudflare.colo', EdgeColoCode) |
| Resource Attributes Expression | map('cloudflare.zone', ClientRequestHost) |
| Implicit Column Expression | concat(ClientRequestMethod, ' ', ClientRequestURI) |
- Cliquez sur Save Source
GET /api/v1/users 200, et tous les champs Cloudflare sont disponibles comme attributs de recherche.Vérifier les données dans HyperDX
Accédez à la vue Search et sélectionnez la source Cloudflare Logs. Définissez l’intervalle de temps de façon à inclure vos données. Vous devriez voir des entrées de logs avec :- Des résumés de requêtes dans la colonne Body (par ex. :
GET /api/v1/users 200) - Des niveaux de gravité codés par couleur selon le code HTTP (INFO pour les 2xx, WARN pour les 4xx, ERROR pour les 5xx)
- Des attributs sur lesquels vous pouvez effectuer des recherches, comme
http.status_code,client.country,cache.statusetbot.score
Jeu de données de démonstration
Démarrer ClickPipes avec le jeu de données de démonstration
- ClickHouse Cloud Console → Data Sources → Create ClickPipe
- Source : Amazon S3
- Authentication : Public
- S3 file path :
https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/cloudflare/cloudflare-http-logs.json - Cliquez sur Incoming data
- Sélectionnez JSON comme format
- Cliquez sur Parse information et vérifiez le schéma détecté
- Définissez le Table name sur
cloudflare_http_logs - Cliquez sur Complete Setup
Configurer la source de données HyperDX
Suivez les étapes de configuration de la source de données pour créer une source HyperDX pointant vers la tablecloudflare_http_logs. Si vous avez déjà configuré la source dans la section consacrée à l’intégration de production, cette étape n’est pas nécessaire.Vérifier les données de démonstration
Affichage du fuseau horaireHyperDX affiche les timestamps dans le fuseau horaire local de votre navigateur. Les données de démonstration couvrent 2026-02-24 00:00:00 - 2026-02-25 00:00:00 (UTC). Cette plage horaire étendue vous permet de voir les logs de démonstration quel que soit votre emplacement. Une fois les logs affichés, vous pouvez réduire la plage à une période de 24 heures pour obtenir des visualisations plus claires.
Tableaux de bord et visualisation
la configuration du tableau de bord
Importer un tableau de bord
- HyperDX → Dashboards → Import Dashboard
- Téléversez
cloudflare-logs-dashboard.json→ Finish Import
Afficher le tableau de bord
Pour le jeu de données de démonstration, réglez la plage horaire sur 2026-02-24 00:00:00 - 2026-02-25 00:00:00 (UTC) (à adapter à votre fuseau horaire local). Le tableau de bord importé n’inclut pas de plage horaire par défaut.
Dépannage
Les données n’apparaissent pas dans ClickHouse
Les logs n’apparaissent pas dans HyperDX
- Vérifiez qu’une source existe pour
cloudflare_http_logsdans HyperDX → Team Settings → Sources - Assurez-vous que Timestamp Column est définie sur
toDateTime(EdgeStartTimestamp / 1000000000)— les timestamps Cloudflare sont en nanosecondes et doivent être convertis - Vérifiez que la plage horaire définie dans HyperDX couvre bien les données. Pour le jeu de données de démonstration, utilisez 2026-02-23 00:00:00 - 2026-02-26 00:00:00
Étapes suivantes
- Configurez des alertes pour les événements de sécurité (blocages WAF, pics de trafic de bots, seuils de taux d’erreur)
- Optimisez les politiques de rétention en fonction de votre volume de données
- Créez des tableaux de bord supplémentaires pour des cas d’usage spécifiques (performances des API, optimisation du cache, analyse géographique du trafic)
Passer en production
**/* dans le motif de chemin ClickPipes pour inclure les sous-répertoires.
Consultez la documentation S3 ClickPipes pour découvrir les options de configuration avancées, notamment l’ingestion non ordonnée basée sur SQS, utile pour gérer les chargements historiques et les fichiers arrivant dans le désordre.