انشر ClickStack المُدار على ClickHouse Cloud، وأرسل حدثًا تجريبيًا عبر مسار الاستيعاب لديك، وتأكد من أن الحدث متاح في واجهة ClickStack.
تشغّل ClickHouse Cloud الواجهة الخلفية لـ ClickHouse بينما تحتفظ بالتحكّم في مسار الاستيعاب والمخطط. يوفّر ClickStack المُدار ما يلي:
- التوسّع التلقائي لقدرات المعالجة بشكل مستقل عن التخزين
- احتفاظ منخفض التكلفة وغير محدود عمليًا استنادًا إلى تخزين الكائنات
- عزل مستقل لأعباء عمل القراءة والكتابة باستخدام warehouses
- مصادقة متكاملة
- نسخ احتياطية مؤتمتة
- ميزات الأمان والامتثال
- ترقيات سلسة
قبل البدء
يمكنك أيضًا إرسال البيانات مباشرةً إلى ClickHouse باستخدام تكامل مدعوم ومخطط بيانات خاص بك.
إنشاء خدمة ClickHouse Cloud
أكمِل خطوة إنشاء خدمة ClickHouse في دليل البدء السريع لـ ClickHouse Cloud. قبل المتابعة، تأكد من أن الخدمة تعمل.
تجهيز بيئة الاستيعاب
- لبدء استخدام OpenTelemetry Collector جديد، ثبّت Docker. أما في Kubernetes، فانشر الـ collector باستخدام Helm.
- لاستخدام collector موجود، شغّله بصفته gateway role، وتأكد من أن توزيعه يتضمن ClickHouse exporter. ستضيف الإعدادات المطلوبة في هذا الدليل.
إعداد ClickStack المُدار
اختر مصدر الإدخال وإعدادات المُجمِّع
من خدمة ClickHouse Cloud، شغّل ClickStack. في صفحة بدء الاستخدام في ClickStack، اختر بدء الاستيعاب.

في صفحة اختيار مصدر الاستيعاب، اختر OpenTelemetry.

يُنشئ ClickStack أمر المُجمِّع باستخدام بيانات اعتماد المسؤول default. نوصي باستخدام بيانات اعتماد مخصصة للاستيعاب لفصل صلاحية الوصول الخاصة بالاستيعاب عن الإدارة وتجنب الاعتماد على كلمة مرور المسؤول.
إنشاء بيانات اعتماد مخصصة للاستيعاب (موصى به)
في ClickHouse Cloud، افتح وحدة تحكم SQL لخدمتك ونفّذ:
CREATE USER `clickstack-ingest` IDENTIFIED WITH sha256_password BY '<password>';
GRANT SELECT, INSERT, CREATE DATABASE, CREATE TABLE, CREATE VIEW ON default.* TO `clickstack-ingest`;في الأمر المُنشأ، استبدل CLICKHOUSE_USER="default" بـ CLICKHOUSE_USER="clickstack-ingest" واضبط CLICKHOUSE_PASSWORD على كلمة مرور المستخدم المخصص.
للمتابعة باستخدام بيانات اعتماد المسؤول default، انسخ الأمر من علامة التبويب بدء المُجمِّع. يملأ ClickStack نقطة نهاية الخدمة مسبقًا. استبدل العنصر النائب لكلمة المرور بكلمة مرور خدمتك. إذا لم تعد تملكها، اجمع تفاصيل الاتصال أو أعد تعيينها.
يتبع الأمر التنسيق التالي:
docker run -e CLICKHOUSE_ENDPOINT="https://<host>:8443" \
-e CLICKHOUSE_USER="default" \
-e CLICKHOUSE_PASSWORD="<your_password_here>" \
-p 4317:4317 -p 4318:4318 \
clickhouse/clickstack-otel-collector:latestاستبدل <host> و<your_password_here> بالقيم الخاصة بخدمة ClickHouse Cloud، ثم شغّل الأمر.
يعمل المُجمِّع في الواجهة الأمامية. اترك هذه الطرفية مفتوحة واستخدم طرفية ثانية لتنفيذ الأوامر المتبقية في هذا الدليل.
اختر تهيئة مُجمِّع حالي، ثم عدّل تهيئة المُجمِّع لديك.
شغّل المُجمِّع كبوابة بين تطبيقاتك وClickHouse Cloud. تضيف التهيئة أدناه مُصدِّرات ClickHouse ومسارات الإشارات المطلوبة.
يستخدم المثال بيانات اعتماد default التي أنشأها ClickStack. لاستخدام بيانات اعتماد مخصصة للاستيعاب، اتبع الإعداد الاختياري في علامة التبويب بدء مُجمِّع جديد. في كتلتي مُصدِّر ClickHouse، استبدل username: default بـ username: clickstack-ingest واضبط password على كلمة مرور المستخدم المخصص.
ادمج المكونات التالية في تهيئتك الحالية بدلًا من استبدال أجهزة الاستقبال أو المعالجات أو المُصدِّرات أو الامتدادات غير ذات الصلة.
يضيف المثال أجهزة استقبال OTLP، والتجميع على دفعات وتقييد الذاكرة، وتوجيه Session Replay، ومُصدِّرات ClickHouse.
استبدل العنصرين النائبين endpoint وpassword ببيانات الاعتماد التي أنشأها ClickStack:
receivers:
otlp/hyperdx:
protocols:
grpc:
include_metadata: true
endpoint: "0.0.0.0:4317"
http:
cors:
allowed_origins: ["*"]
allowed_headers: ["*"]
include_metadata: true
endpoint: "0.0.0.0:4318"
processors:
batch:
memory_limiter:
# 80% of maximum memory up to 2G, adjust for low memory environments
limit_mib: 1500
# 25% of limit up to 2G, adjust for low memory environments
spike_limit_mib: 512
check_interval: 5s
connectors:
routing/logs:
default_pipelines: [logs/out-default]
error_mode: ignore
table:
- context: log
statement: route() where IsMatch(attributes["rr-web.event"], ".*")
pipelines: [logs/out-rrweb]
exporters:
clickhouse/rrweb:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
logs_table_name: hyperdx_sessions
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
clickhouse:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
service:
pipelines:
traces:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
metrics:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/in:
receivers: [otlp/hyperdx]
exporters: [routing/logs]
logs/out-default:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/out-rrweb:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse/rrweb]أعد استخدام جهاز استقبال OTLP الحالي وحافظ على إعدادات المصادقة وTLS الخاصة به. إذا كانت تهيئتك تستخدم بالفعل معرّفات المكونات أو المسارات الواردة في المثال، فادمجها أو أعد تسميتها بدلًا من إنشاء معرّفات مكررة. يؤدي تشغيل جهازي استقبال على المنفذين 4317 و4318 إلى تعارض في المنافذ.
بعد دمج التهيئة، أعد تحميل المُجمِّع أو أعد تشغيله باستخدام عملية النشر الحالية لديك.
لمزيد من التفاصيل حول تهيئة مُجمِّعات OpenTelemetry، راجع الاستيعاب باستخدام OpenTelemetry.
إرسال بيانات تجريبية
أرسل سجل اختبار بالطابع الزمني الحالي:
NOW_NANO="$(date +%s)000000000"
curl -i "http://localhost:4318/v1/logs" \
-H "Content-Type: application/json" \
--data-binary @- <<EOF
{
"resourceLogs": [{
"resource": {
"attributes": [{
"key": "service.name",
"value": {"stringValue": "clickstack-docs-test"}
}]
},
"scopeLogs": [{
"scope": {"name": "clickstack-docs-test"},
"logRecords": [{
"timeUnixNano": "${NOW_NANO}",
"severityText": "INFO",
"body": {"stringValue": "ClickStack ingestion test"}
}]
}]
}]
}
EOFإذا كنت تستخدم مُجمِّعًا موجودًا، فاستبدل http://localhost:4318 بنقطة نهاية OTLP عبر HTTP الخاصة به. إذا كان المستقبِل يتطلب مصادقة، فأضف الترويسة المطلوبة إلى أمر curl.
يعيد الطلب الناجح HTTP/1.1 200 OK.
ابدأ الاستكشاف وتأكد من استيعاب البيانات
بعد أن يكتشف ClickStack مصادر بيانات OpenTelemetry، اختر بدء الاستكشاف لفتح عرض البحث. ابحث عن ClickStack ingestion test.
يجب أن تتضمن النتائج حدث الاختبار باسم الخدمة clickstack-docs-test.

تجهيز بيئة استقبال البيانات
ابدأ بـخط أنابيب Vector قائم قادر على إرسال البيانات إلى ClickHouse.
إعداد Managed ClickStack
اختر Vector وهيِّئ استيعاب البيانات
من خدمة ClickHouse Cloud الخاصة بك، شغّل ClickStack. في صفحة بدء الاستخدام في ClickStack، حدد بدء الاستيعاب.

في صفحة Choose an ingestion source (اختيار مصدر الاستيعاب)، حدّد Vector.

Vector هو خط أنابيب لبيانات المراقبة عالي الأداء ومحايد تجاه المورّدين، ويحظى بشعبية خاصة في استيعاب السجلات نظرًا لمرونته واستهلاكه المنخفض للموارد.
عند استخدام Vector مع ClickStack، تكون أنت من يحدد المخطط (schema)، وبإمكانه اتباع اصطلاحات OpenTelemetry أو استخدام حقول خاصة بأحداثك.
إنشاء قاعدة بيانات وجدول
أنشئ قاعدة بيانات وجدولاً قبل تكوين sink في Vector.
في ClickHouse Cloud، افتح SQL Console الخاص بـ service الخاصة بك وأنشئ قاعدة بيانات:
على سبيل المثال، أنشئ قاعدة بيانات للسجلات (logs):
CREATE DATABASE IF NOT EXISTS logsبعد ذلك، أنشئ جدولاً يتطابق مخططه مع بنية بيانات السجلات لديك. ويفترض المثال التالي استخدام تنسيق سجل وصول Nginx الكلاسيكي:
CREATE TABLE logs.nginx_logs
(
`time_local` DateTime,
`remote_addr` IPv4,
`remote_user` LowCardinality(String),
`request` String,
`status` UInt16,
`body_bytes_sent` UInt64,
`http_referer` String,
`http_user_agent` String,
`http_x_forwarded_for` LowCardinality(String),
`request_time` Float32,
`upstream_response_time` Float32,
`http_host` String
)
ENGINE = MergeTree
ORDER BY (toStartOfMinute(time_local), status, remote_addr);يجب أن يتوافق جدولك مع مخطط الخرج الذي ينتجه Vector. عدّل المخطط بما يلائم بياناتك، مع اتباع أفضل الممارسات الموصى بها للمخططات.
نوصي بشدة بفهم كيفية عمل المفاتيح الأساسية في ClickHouse واختيار مفتاح ترتيب يتوافق مع أنماط الوصول الخاصة بك. راجع الإرشادات الخاصة بـ ClickStack بشأن اختيار المفتاح الأساسي.
تهيئة وجهة الإخراج (sink) في ClickHouse
بعد التأكد من وجود الجدول، أضف وجهة إخراج (sink) لـ ClickHouse إلى تكوين Vector:
sinks:
clickhouse:
type: clickhouse
inputs:
- your_input
endpoint: "https://<host>:8443"
database: logs
table: nginx_logs
format: json_each_row
skip_unknown_fields: true
auth:
strategy: basic
user: default
password: "<your_password_here>"استبدل your_input بالإدخال الخاص بـ pipeline الحالي لديك. واستبدل <host> و<your_password_here> بالقيم الخاصة بخدمة ClickHouse Cloud لديك. وإذا لزم الأمر، غيّر قاعدة البيانات أو الجدول الهدف.
استخدم بيانات اعتماد مخصصة لتلقّي البيانات (موصى به)
لبيئة production، أنشئ مستخدمًا مخصصًا وامنحه صلاحية الوصول إلى جدول الهدف لـ Vector. في ClickHouse Cloud، افتح SQL Console لخدمتك وشغّل:
CREATE USER `clickstack-ingest` IDENTIFIED WITH sha256_password BY '<password>';
GRANT SELECT, INSERT ON logs.nginx_logs TO `clickstack-ingest`;استبدل default بـ clickstack-ingest في وجهة Vector، واضبط password على كلمة مرور المستخدم المخصص.
احفظ التكوين المُحدَّث، ثم أعد تحميل Vector أو أعد تشغيله باستخدام عملية النشر الحالية لديك.
لمزيد من الأمثلة على استيعاب البيانات باستخدام Vector، راجع الاستيعاب باستخدام Vector، أو راجع توثيق وجهة (sink) ClickHouse في Vector للاطلاع على الخيارات المتقدمة.
إنشاء مصدر بيانات ClickStack
أنشئ مصدر بيانات للجدول الذي يعبّئه خط أنابيب Vector لديك. سيطالبك ClickStack بإنشاء مصدر عند أول تسجيل دخول.
يقوم النموذج تلقائيًا بتعبئة التعبيرات الخاصة بمخطط OpenTelemetry الافتراضي. أما بالنسبة إلى جدول Nginx الذي أنشأته في هذا الدليل، فقم بتهيئة المصدر بالقيم التالية:
| الإعداد | القيمة |
|---|---|
| الاسم | سجلات Nginx |
| نوع بيانات المصدر | السجل |
| اتصال الخادم | default |
| قاعدة البيانات | logs |
| الجدول | nginx_logs |
| عمود الطابع الزمني | time_local |
| SELECT الافتراضي | time_local, remote_addr, status, request |
| تعبير اسم الخدمة | 'nginx' |
| تعبير مستوى السجل | multiIf(status >= 500, 'ERROR', status >= 400, 'WARN', 'INFO') |
| تعبير سمات السجل | map('http.remote_addr', toString(remote_addr), 'http.status_code', toString(status), 'http.request', request) |
| تعبير سمات المورد | map('service.name', 'nginx') |
| عمود الطابع الزمني المعروض | time_local |
| تعبير معرّف التتبّع | '' |
| تعبير معرّف الامتداد | '' |
| تعبير العمود التلقائي | request |
لا يحتوي جدول Nginx على عمود Body. اضبط Body Expression على:
concat(
remote_addr, ' ',
remote_user, ' ',
'[', formatDateTime(time_local, '%d/%b/%Y:%H:%i:%S %z'), '] ',
'"', request, '" ',
toString(status), ' ',
toString(body_bytes_sent), ' ',
'"', http_referer, '" ',
'"', http_user_agent, '" ',
'"', http_x_forwarded_for, '" ',
toString(request_time), ' ',
toString(upstream_response_time), ' ',
'"', http_host, '"'
)للتعرف على إعدادات المصدر الأخرى، راجع مرجع تكوين ClickStack.
إرسال بيانات اختبارية
أرسل حدثًا نموذجيًا عبر مُدخل مسار Vector الحالي لديك.
للاطّلاع على مزيد من أمثلة مصادر Vector وعمليات التحويل، راجع الاستيعاب باستخدام Vector.
ابدأ الاستكشاف وتحقّق من استيعاب البيانات
بعد إنشاء مصدر البيانات، اختر بدء الاستكشاف لفتح عرض Search. اختر مصدر البيانات الخاص بجدولك وتأكد من احتوائه على الحدث الذي أرسلته.

لديك الآن خدمة ClickStack المُدار، ومسار استيعاب فعّال، وحدث اختباري يمكنك فحصه في ClickStack.
الخطوات التالية
إذا تطلّب دليل آخر نقطة نهاية ClickHouse Cloud أو كلمة مرورك، احصل على تفاصيل الاتصال أو أعد تعيينها قبل المتابعة.
إرسال بيانات التطبيق والبنية التحتية
اختر دليلاً لنوع البيانات التي تريد إرسالها إلى ClickStack:
إضافة إمكانات القياس عن بُعد إلى تطبيق
أرسل تتبعات التطبيق وسجلاته باستخدام SDK مدعوم من OpenTelemetry.
جمع سجلات المضيف
أعد توجيه سجلات المضيف من OpenTelemetry Collector يعمل بدور agent.
مراقبة Kubernetes
اجمع السجلات والمقاييس والتتبعات من مجموعة Kubernetes.
استكشاف تكاملات أخرى
اعثر على أدلة لتطبيقات إضافية ومصادر للقياس عن بُعد.
استكشف بيانات نموذجية
استخدم مجموعة بيانات نموذجية لاستكشاف ClickStack ببيانات قياس عن بُعد أكثر ثراءً:
سجلات وآثار ومقاييس نموذجية

حمّل بيانات العرض التوضيحي العام وشخّص مشكلة. يفترض هذا الدليل أنك شغّلت OpenTelemetry Collector محليًا جديدًا. إذا هيّأت مجمّعًا قائمًا، فعدّل إعدادات نقطة النهاية والمصادقة بما يتناسب مع عملية النشر لديك.
السجلات والمقاييس المحلية

اجمع الملفات المحلية ومقاييس النظام على macOS أو Linux.
إنشاء بيانات اصطناعية
استخدم مولّدًا لاختبار استيعاب البيانات دون الحاجة إلى تطبيق أو مجموعة بيانات موجودة:
إنشاء بيانات باستخدام otelgen
أرسل دفعة قصيرة من السجلات والآثار والمقاييس الاصطناعية عبر OTLP.
إنشاء بيانات باستخدام telemetrygen
أنشئ إشارات OpenTelemetry قابلة للتهيئة عبر عدة خدمات.
اطّلع على جميع البيانات النموذجية والعروض التوضيحية لـ ClickStack.
الاستعداد للإنتاج
راجع إرشادات الإنتاج وتقدير الموارد قبل استخدام ClickStack لأحمال العمل المستمرة:
الانتقال إلى بيئة الإنتاج
راجع بيانات اعتماد الاستيعاب والأمان والاحتفاظ بالبيانات والإرشادات التشغيلية.
تقدير الموارد
حدّد موارد الحوسبة اللازمة لحجم الاستيعاب المتوقع.
لمهام النشر، راجع دليل نشر ClickStack المُدار.