التكامل مع الأنظمة الحالية
راقب سجلات journald في نظام Linux الحالي لديك عبر تشغيل OpenTelemetry Collector باستخدام journald receiver لجمع سجلات النظام وإرسالها إلى ClickStack عبر OTLP.
إذا أردت اختبار هذا التكامل أولًا من دون تعديل إعدادك الحالي، فانتقل إلى قسم مجموعة البيانات التجريبية.
المتطلبات الأساسية
- مثيل ClickStack قيد التشغيل
- نظام Linux يعمل بـ systemd (Ubuntu 16.04+، CentOS 7+، Debian 8+)
- تثبيت Docker أو Docker Compose على النظام المراد مراقبته
احصل على مفتاح API لـ ClickStack
يرسل OpenTelemetry Collector البيانات إلى نقطة نهاية OTLP الخاصة بـ ClickStack، والتي تتطلب المصادقة.
- افتح HyperDX على عنوان URL الخاص بـ ClickStack لديك (على سبيل المثال: http://localhost:8080)
- أنشئ حسابًا أو سجّل الدخول إذا لزم الأمر
- انتقل إلى Team Settings → API Keys
- انسخ مفتاح API للاستيعاب الخاص بك

- اضبطه كمتغير بيئة:
export CLICKSTACK_API_KEY=your-api-key-hereتحقّق من أن journal systemd قيد التشغيل
تأكد من أن نظامك يستخدم systemd وأن سجلات journal متوفرة:
# تحقق من إصدار systemd
systemctl --version
# اعرض أحدث إدخالات journal
journalctl -n 20
# تحقق من استخدام journal للقرص
journalctl --disk-usageإذا كان تخزين journal في الذاكرة فقط، ففعّل التخزين الدائم:
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journaldأنشئ تهيئة collector لـ OpenTelemetry Collector
أنشئ تهيئة collector لـ OpenTelemetry Collector:
cat > otel-config.yaml << 'EOF'
receivers:
journald:
directory: /var/log/journal
priority: info
units:
- sshd
- nginx
- docker
- containerd
- systemd
processors:
batch:
timeout: 10s
send_batch_size: 10000
resource:
attributes:
- key: service.name
value: systemd-logs
action: insert
- key: host.name
from_attribute: _HOSTNAME
action: upsert
attributes:
actions:
- key: unit
from_attribute: _SYSTEMD_UNIT
action: upsert
- key: priority
from_attribute: PRIORITY
action: upsert
exporters:
otlphttp:
endpoint: ${CLICKSTACK_ENDPOINT}
headers:
authorization: ${CLICKSTACK_API_KEY}
service:
pipelines:
logs:
receivers: [journald]
processors: [resource, attributes, batch]
exporters: [otlphttp]
EOFانشر باستخدام Docker Compose
يوضح هذا المثال كيفية نشر OTel Collector إلى جانب ClickStack:
services:
clickstack:
image: clickhouse/clickstack-all-in-one:latest
ports:
- "8080:8080"
- "4317:4317"
- "4318:4318"
networks:
- monitoring
otel-collector:
image: otel/opentelemetry-collector-contrib:0.115.1
depends_on:
- clickstack
environment:
- CLICKSTACK_API_KEY=${CLICKSTACK_API_KEY}
- CLICKSTACK_ENDPOINT=http://clickstack:4318
volumes:
- ./otel-config.yaml:/etc/otelcol/config.yaml:ro
- /var/log/journal:/var/log/journal:ro
- /run/log/journal:/run/log/journal:ro
- /etc/machine-id:/etc/machine-id:ro
command: ["--config=/etc/otelcol/config.yaml"]
networks:
- monitoring
networks:
monitoring:
driver: bridgeابدأ الخدمات:
docker compose up -dتحقّق من السجلات في HyperDX
بعد اكتمال الإعداد، سجّل الدخول إلى HyperDX وتأكد من أن السجلات تتدفق:
- انتقل إلى Search view
- اضبط source على Logs
- صفِّ حسب
service.name:systemd-logs - يجب أن ترى إدخالات سجلات منظَّمة تتضمن حقولًا مثل
unitوpriorityوMESSAGEو_HOSTNAME


مجموعة البيانات التجريبية
للمستخدمين الذين يريدون اختبار تكامل سجلات systemd قبل تهيئة أنظمتهم في بيئة الإنتاج، نوفر مجموعة بيانات تجريبية تحتوي على سجلات systemd مُنشأة مسبقًا بأنماط واقعية.
تنزيل مجموعة البيانات النموذجية
نزّل ملف السجل النموذجي:
curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/systemd/systemd-demo.logإنشاء إعدادات collector التجريبية
أنشئ ملف إعدادات للعرض التجريبي:
cat > systemd-demo.yaml << 'EOF'
receivers:
filelog:
include:
- /tmp/systemd-demo/systemd-demo.log
start_at: beginning
operators:
- type: regex_parser
regex: '^(?P<timestamp>\S+) (?P<hostname>\S+) (?P<unit>\S+?)(?:\[(?P<pid>\d+)\])?: (?P<message>.*)$'
parse_from: body
parse_to: attributes
- type: time_parser
parse_from: attributes.timestamp
layout: '%Y-%m-%dT%H:%M:%S%z'
- type: add
field: attributes.source
value: "systemd-demo"
service:
pipelines:
logs/systemd-demo:
receivers: [filelog]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
EOFتشغيل ClickStack باستخدام البيانات التجريبية
ابدأ تشغيل ClickStack باستخدام السجلات التجريبية:
docker run -d --name clickstack-demo \
-p 8080:8080 -p 4317:4317 -p 4318:4318 \
-e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
-v "$(pwd)/systemd-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v "$(pwd)/systemd-demo.log:/tmp/systemd-demo/systemd-demo.log:ro" \
clickhouse/clickstack-all-in-one:latestالتحقق من السجلات في HyperDX
بعد تشغيل ClickStack:
- افتح HyperDX وسجّل الدخول إلى حسابك
- انتقل إلى Search view واضبط source على
Logs - اضبط النطاق الزمني على 2025-11-14 00:00:00 - 2025-11-17 00:00:00


لوحات المعلومات والتصورات
لمساعدتك على البدء في مراقبة سجلات systemd باستخدام ClickStack، نوفر تصورات أساسية لبيانات systemd journal.
تنزيل إعدادات لوحة المعلومات
استيراد لوحة المعلومات الجاهزة مسبقًا
- افتح HyperDX وانتقل إلى قسم Dashboards
- انقر على Import Dashboard في الزاوية العلوية اليمنى ضمن قائمة النقاط الثلاث

- ارفع الملف
systemd-logs-dashboard.jsonوانقر على Finish Import

عرض لوحة المعلومات
تتضمن لوحة المعلومات تصورات لـ:
- حجم السجلات بمرور الوقت
- أهم وحدات systemd حسب عدد السجلات
- أحداث مصادقة SSH
- حالات فشل الخدمة
- معدلات الأخطاء

استكشاف الأخطاء وإصلاحها
عدم ظهور السجلات في HyperDX
تحقّق مما إذا كانت السجلات تصل إلى ClickHouse:
docker exec clickstack clickhouse-client --query "
SELECT COUNT(*) as log_count
FROM otel_logs
WHERE ServiceName = 'systemd-logs'
"إذا لم تظهر أي نتائج، فتحقّق من سجلات الـcollector:
docker logs otel-collector | grep -i "error\|journald" | tail -20خطأ عدم العثور على journalctl
إذا ظهر لك exec: "journalctl": executable file not found in $PATH:
فإن الصورة otel/opentelemetry-collector-contrib لا تتضمن journalctl. يمكنك أحد الخيارين التاليين:
- تثبيت الـ collector على المضيف:
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.115.0/otelcol-contrib_0.115.0_linux_amd64.tar.gz
tar -xzf otelcol-contrib_0.115.0_linux_amd64.tar.gz
sudo mv otelcol-contrib /usr/local/bin/
otelcol-contrib --config=otel-config.yaml- استخدم نهج التصدير النصي (كما في العرض التوضيحي) مع receiver
filelogلقراءة ملفات تصدير journald
الخطوات التالية
- قم بإعداد التنبيهات لأحداث النظام الحرجة (تعطل الخدمة، فشل المصادقة، وعمليات الإنهاء بسبب نفاد الذاكرة OOM)
- أنشئ لوحات معلومات إضافية لحالات استخدام محددة (مراقبة أمان SSH، وصحة الخدمة)
- قم بالتصفية حسب وحدات systemd محددة لتقليل الضجيج والتركيز على الخدمات المهمة
الانتقال إلى بيئة الإنتاج
يستخدم هذا الدليل OpenTelemetry Collector منفصلًا لقراءة سجلات systemd وإرسالها إلى نقطة نهاية OTLP الخاصة بـ ClickStack، وهذا هو النهج الموصى به في بيئات الإنتاج.
بالنسبة إلى بيئات الإنتاج التي تضم عدة مضيفين، ضع في اعتبارك ما يلي:
- نشر المجمّع كمجموعة تشغيل على كل عقدة (DaemonSet) في Kubernetes
- تشغيل المجمّع كخدمة systemd على كل مضيف
- استخدام OpenTelemetry Operator للنشر الآلي
راجع إدخال البيانات باستخدام OpenTelemetry للاطلاع على أنماط النشر في بيئات الإنتاج.