باختصاريوضّح هذا الدليل كيفية إدخال سجلات Cloudflare إلى ClickStack باستخدام ClickPipes. يكتب Cloudflare Logpush السجلات إلى S3، وتقوم ClickPipes بإدخال الملفات الجديدة إلى ClickHouse بشكل مستمر. وعلى عكس معظم أدلة تكامل ClickStack التي تستخدم OpenTelemetry Collector، يستخدم هذا الدليل ClickPipes لسحب البيانات مباشرةً من S3.تتوفر مجموعة بيانات تجريبية إذا كنت تريد استكشاف لوحات المعلومات قبل إعداد إدخال البيانات في بيئة الإنتاج.
نظرة عامة
- تحليل حركة المرور على الحافة، وأداء ذاكرة التخزين المؤقت، وأحداث الأمان، إلى جانب بيانات observability الأخرى لديك
- الاستعلام عن السجلات باستخدام ClickHouse SQL
- الاحتفاظ بالسجلات لمدة تتجاوز مدة الاحتفاظ الافتراضية في Cloudflare
بديل: الإدخال المباشر عبر HTTPيدعم Cloudflare Logpush أيضًا دفع السجلات مباشرةً إلى نقاط نهاية HTTP. ونظرًا لأن Cloudflare يصدّر السجلات بتنسيق newline-delimited JSON (NDJSON)، ولأن ClickHouse يقبل هذا التنسيق أصلًا عبر استبدل
JSONEachRow، يمكنك توجيه Logpush مباشرةً إلى واجهة HTTP الخاصة بـ ClickHouse Cloud باستخدام تنسيق عنوان URL لنقطة النهاية التالي:YOUR_CLICKHOUSE_HOST باسم المضيف الخاص بـ ClickHouse Cloud، وBASE64_CREDENTIALS ببيانات الاعتماد المرمّزة بصيغة Base64 (echo -n 'default:YOUR_PASSWORD' | base64).هذا الإعداد أبسط (من دون الحاجة إلى إعداد S3 أو SQS أو IAM)، لكن Cloudflare Logpush لا يمكنه إجراء backfill للبيانات التاريخية إذا فشل التسليم — لذا إذا لم يكن ClickHouse متاحًا أثناء عملية الدفع، فستُفقد تلك السجلات نهائيًا.التكامل مع Cloudflare Logpush الحالي
المتطلبات الأساسية
- ClickHouse Cloud service قيد التشغيل (ClickPipes ميزة متاحة في Cloud فقط — وغير متوفرة في ClickStack OSS)
- يقوم Cloudflare Logpush بكتابة السجلات بشكل نشط إلى حاوية S3
- اسم حاوية S3 والمنطقة التي يكتب فيها Cloudflare السجلات
تهيئة المصادقة على S3
تحتاج ClickPipes إلى إذن قراءة من حاوية S3 الخاصة بك. اتبع دليل الوصول إلى بيانات S3 بأمان لتهيئة الوصول المستند إلى أدوار IAM أو الوصول المستند إلى بيانات الاعتماد.للاطلاع على التفاصيل الكاملة حول مصادقة S3 والأذونات في ClickPipes، راجع الوثائق المرجعية لـ S3 ClickPipes.إنشاء مهمة ClickPipes
- ClickHouse Cloud Console → مصادر البيانات → Create ClickPipe
- المصدر: Amazon S3
- مسار ملف S3: مسار bucket سجلات Cloudflare لديك مع حرف بدل لمطابقة الملفات. إذا فعّلت المجلدات الفرعية اليومية في Logpush، فاستخدم
**للمطابقة عبر المجلدات الفرعية:- بدون مجلدات فرعية:
https://your-bucket.s3.us-east-1.amazonaws.com/logs/* - مجلدات فرعية يومية:
https://your-bucket.s3.us-east-1.amazonaws.com/logs/**/*
- بدون مجلدات فرعية:
- المصادقة: اختر طريقة المصادقة وقدّم بيانات الاعتماد أو IAM Role ARN
- فعّل الإدخال المستمر
- الترتيب: الترتيب المعجمي
20250127/...)، وهذا يتوافق طبيعيًا مع الترتيب المعجمي. ويتحقق ClickPipes من وجود ملفات جديدة كل 30 ثانية، ثم يُدخل أي ملف يحمل اسمًا أكبر من اسم آخر ملف تمت معالجته.مطابقة المخطط:انقر على تحليل المعلومات. يأخذ ClickPipes عينات من ملفات السجل ويكتشف المخطط تلقائيًا. راجع الأعمدة المُعيّنة واضبط الأنواع حسب الحاجة. حدّد مفتاح ترتيب للجدول الوجهة — وبالنسبة إلى سجلات Cloudflare، يُعد (EdgeStartTimestamp, ClientCountry, EdgeResponseStatus) خيارًا جيدًا.انقر على إكمال الإعداد.عند إنشائه لأول مرة، ينفّذ ClickPipes تحميلًا أوليًا لجميع الملفات الموجودة في المسار المحدد قبل الانتقال إلى الفحص المستمر. وإذا كان bucket لديك يحتوي على عدد كبير متراكم من سجلات Cloudflare، فقد يستغرق هذا التحميل الأولي بعض الوقت.
تهيئة مصدر بيانات HyperDX
يقوم ClickPipes بإدخال سجلات Cloudflare إلى جدول مسطّح بأسماء الحقول الأصلية الخاصة بـ Cloudflare. لعرض هذه السجلات في HyperDX، قم بتهيئة مصدر بيانات مخصص يربط أعمدة Cloudflare بعرض السجلات في HyperDX.- افتح HyperDX → Team Settings → Sources
- انقر على Add source ثم هيّئ الإعدادات التالية. انقر على Configure Optional Fields للوصول إلى جميع الحقول:
| الإعداد | القيمة |
|---|---|
| الاسم | Cloudflare Logs |
| نوع بيانات المصدر | Log |
| قاعدة البيانات | default |
| الجدول | cloudflare_http_logs |
| عمود الطابع الزمني | toDateTime(EdgeStartTimestamp / 1000000000) |
| التحديد الافتراضي | EdgeStartTimestamp, ClientRequestMethod, ClientRequestURI, EdgeResponseStatus, ClientCountry |
| تعبير اسم الخدمة | 'cloudflare' |
| تعبير مستوى السجل | multiIf(EdgeResponseStatus >= 500, 'ERROR', EdgeResponseStatus >= 400, 'WARN', 'INFO') |
| تعبير النص | concat(ClientRequestMethod, ' ', ClientRequestURI, ' ', toString(EdgeResponseStatus)) |
| تعبير سمات السجل | 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) |
| تعبير سمات المورد | map('cloudflare.zone', ClientRequestHost) |
| تعبير العمود الضمني | concat(ClientRequestMethod, ' ', ClientRequestURI) |
- انقر على Save Source
GET /api/v1/users 200، كما تبقى جميع حقول Cloudflare متاحة كسمات قابلة للبحث.تحقّق من البيانات في HyperDX
انتقل إلى عرض Search وحدّد المصدر Cloudflare Logs. اضبط النطاق الزمني بحيث يغطي بياناتك. يُفترض أن ترى إدخالات سجل تتضمن:- ملخصات الطلبات في عمود Body (على سبيل المثال،
GET /api/v1/users 200) - مستويات الشدة ملوّنة حسب حالة HTTP (INFO لرموز 2xx، وWARN لرموز 4xx، وERROR لرموز 5xx)
- سمات قابلة للبحث مثل
http.status_codeوclient.countryوcache.statusوbot.score
مجموعة بيانات تجريبية
ابدأ ClickPipes باستخدام مجموعة البيانات التجريبية
- 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 - انقر على Incoming data
- اختر JSON كـ format
- انقر على Parse information وراجع schema المكتشفة
- اضبط Table name على
cloudflare_http_logs - انقر على Complete Setup
هيّئ data source في HyperDX
اتبع خطوات تهيئة data source لإنشاء source في HyperDX يشير إلى table cloudflare_http_logs. إذا كنت قد أعددت source بالفعل في قسم تكامل الإنتاج، فلا حاجة إلى هذه الخطوة.تحقّق من البيانات التجريبية
عرض timezoneيعرض HyperDX timestamps وفق timezone المحلية في متصفحك. تمتد البيانات التجريبية عبر 2026-02-24 00:00:00 - 2026-02-25 00:00:00 (UTC). يضمن النطاق الزمني الواسع ظهور السجلات التجريبية مهما كان موقعك. وبعد ظهور السجلات، يمكنك تضييق النطاق إلى فترة 24 ساعة للحصول على visualizations أوضح.
لوحات المعلومات والتصورات
إعدادات لوحة المعلومات
استيراد لوحة معلومات
- HyperDX → Dashboards → Import Dashboard
- حمّل
cloudflare-logs-dashboard.json→ Finish Import
عرض لوحة المعلومات
بالنسبة إلى مجموعة البيانات التجريبية، اضبط النطاق الزمني على 2026-02-24 00:00:00 - 2026-02-25 00:00:00 (UTC) (مع تعديله وفقًا لمنطقتك الزمنية المحلية). لن تتضمن لوحة المعلومات المستوردة نطاقًا زمنيًا محددًا افتراضيًا.
استكشاف الأخطاء وإصلاحها
عدم ظهور البيانات في ClickHouse
عدم ظهور السجلات في HyperDX
- تأكد من وجود source باسم
cloudflare_http_logsضمن HyperDX → Team Settings → Sources - تأكد من ضبط Timestamp Column على
toDateTime(EdgeStartTimestamp / 1000000000)— إذ إن الطوابع الزمنية في Cloudflare تكون بالنانوثانية وتحتاج إلى تحويل - تأكد من أن النطاق الزمني في HyperDX يشمل البيانات. بالنسبة إلى مجموعة البيانات التجريبية، استخدم 2026-02-23 00:00:00 - 2026-02-26 00:00:00
الخطوات التالية
- أعدّ التنبيهات لأحداث الأمان (عمليات الحظر من WAF، والارتفاعات المفاجئة في حركة مرور الروبوتات، وعتبات معدلات الخطأ)
- حسّن سياسات الاحتفاظ استنادًا إلى حجم بياناتك
- أنشئ لوحات معلومات إضافية لحالات استخدام محددة (أداء واجهة برمجة تطبيقات، وتحسين التخزين المؤقت، وتحليل حركة المرور الجغرافية)
الانتقال إلى بيئة الإنتاج
**/* في نمط مسار ClickPipes للمطابقة عبر الأدلة الفرعية.
راجع توثيق S3 ClickPipes للاطلاع على خيارات الإعداد المتقدمة، بما في ذلك الإدخال غير المرتب المستند إلى SQS للتعامل مع التحميل اللاحق للبيانات التاريخية والملفات الخارجة عن الترتيب.