Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

مراقبة سجلات systemd باستخدام ClickStack

التكامل مع الأنظمة الحالية

راقب سجلات 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، والتي تتطلب المصادقة.

  1. افتح HyperDX على عنوان URL الخاص بـ ClickStack لديك (على سبيل المثال: http://localhost:8080)
  2. أنشئ حسابًا أو سجّل الدخول إذا لزم الأمر
  3. انتقل إلى Team Settings → API Keys
  4. انسخ مفتاح API للاستيعاب الخاص بك
مفتاح API لـ ClickStack
  1. اضبطه كمتغير بيئة:
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 وتأكد من أن السجلات تتدفق:

  1. انتقل إلى Search view
  2. اضبط source على Logs
  3. صفِّ حسب service.name:systemd-logs
  4. يجب أن ترى إدخالات سجلات منظَّمة تتضمن حقولًا مثل 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:

  1. افتح HyperDX وسجّل الدخول إلى حسابك
  2. انتقل إلى Search view واضبط source على Logs
  3. اضبط النطاق الزمني على 2025-11-14 00:00:00 - 2025-11-17 00:00:00
عرض البحث في السجلات
عرض السجل

لوحات المعلومات والتصورات

لمساعدتك على البدء في مراقبة سجلات systemd باستخدام ClickStack، نوفر تصورات أساسية لبيانات systemd journal.

تنزيل إعدادات لوحة المعلومات

استيراد لوحة المعلومات الجاهزة مسبقًا

  1. افتح HyperDX وانتقل إلى قسم Dashboards
  2. انقر على Import Dashboard في الزاوية العلوية اليمنى ضمن قائمة النقاط الثلاث
زر استيراد لوحة المعلومات
  1. ارفع الملف 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. يمكنك أحد الخيارين التاليين:

  1. تثبيت الـ 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
  1. استخدم نهج التصدير النصي (كما في العرض التوضيحي) مع receiver filelog لقراءة ملفات تصدير journald

الخطوات التالية

  • قم بإعداد التنبيهات لأحداث النظام الحرجة (تعطل الخدمة، فشل المصادقة، وعمليات الإنهاء بسبب نفاد الذاكرة OOM)
  • أنشئ لوحات معلومات إضافية لحالات استخدام محددة (مراقبة أمان SSH، وصحة الخدمة)
  • قم بالتصفية حسب وحدات systemd محددة لتقليل الضجيج والتركيز على الخدمات المهمة

الانتقال إلى بيئة الإنتاج

يستخدم هذا الدليل OpenTelemetry Collector منفصلًا لقراءة سجلات systemd وإرسالها إلى نقطة نهاية OTLP الخاصة بـ ClickStack، وهذا هو النهج الموصى به في بيئات الإنتاج.

بالنسبة إلى بيئات الإنتاج التي تضم عدة مضيفين، ضع في اعتبارك ما يلي:

  • نشر المجمّع كمجموعة تشغيل على كل عقدة (DaemonSet) في Kubernetes
  • تشغيل المجمّع كخدمة systemd على كل مضيف
  • استخدام OpenTelemetry Operator للنشر الآلي

راجع إدخال البيانات باستخدام OpenTelemetry للاطلاع على أنماط النشر في بيئات الإنتاج.

Navigation