الخلاصةاجمع سجلات نظام المضيف (syslog وauth وkernel) وصوّرها بصريًا في ClickStack باستخدام مستقبِل OTel filelog. يتضمن مجموعة بيانات تجريبية ولوحة معلومات مُعدّة مسبقًا.
التكامل مع المضيفين الحاليين
يشرح هذا القسم كيفية تهيئة المضيفين الحاليين لديك لإرسال سجلات النظام إلى ClickStack، وذلك عبر تعديل إعدادات ClickStack OTel مجمّع لقراءة جميع ملفات سجلات النظام (syslog وauth وkernel وdaemon وسجلات التطبيقات).
إذا كنت ترغب في اختبار تكامل سجلات المضيف قبل تهيئة إعدادك الحالي، فيمكنك إجراء الاختبار باستخدام الإعداد المهيأ مسبقًا وبيانات العينة في قسم “مجموعة البيانات التجريبية”.
المتطلبات المسبقة
- مثيل ClickStack قيد التشغيل
- نظام يحتوي على ملفات syslog
- إمكانية تعديل ملفات تكوين ClickStack
تأكّد من وجود ملفات syslog
أولاً، تأكّد من أن نظامك يُنشئ ملفات syslog:# Check if syslog files exist (Linux)
ls -la /var/log/syslog /var/log/messages
# Or on macOS
ls -la /var/log/system.log
# View recent entries
tail -20 /var/log/syslog
المواقع الشائعة لملفات syslog:
- Ubuntu/Debian:
/var/log/syslog
- RHEL/CentOS/Fedora:
/var/log/messages
- macOS:
/var/log/system.log
إنشاء تهيئة مخصصة لـ OTel collector
يتيح لك ClickStack توسيع إعداد OpenTelemetry Collector الأساسي عن طريق ربط ملف إعداد مخصص وضبط متغير بيئة.أنشئ ملفًا باسم host-logs-monitoring.yaml يتضمن إعدادات نظامك: Linux الحديث (Ubuntu 24.04+)
Linux القديم (Ubuntu 20.04, RHEL, CentOS)
macOS
receivers:
filelog/syslog:
include:
- /var/log/syslog
- /var/log/**/*.log
start_at: end
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_type: gotime
layout: '2006-01-02T15:04:05.999999-07:00'
- type: add
field: attributes.source
value: "host-logs"
- type: add
field: resource["service.name"]
value: "host-production"
service:
pipelines:
logs/host:
receivers: [filelog/syslog]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
receivers:
filelog/syslog:
include:
- /var/log/syslog
- /var/log/messages
- /var/log/**/*.log
start_at: end
operators:
- type: regex_parser
regex: '^(?P<timestamp>\w+ \d+ \d{2}:\d{2}:\d{2}) (?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: '%b %d %H:%M:%S'
- type: add
field: attributes.source
value: "host-logs"
- type: add
field: resource["service.name"]
value: "host-production"
service:
pipelines:
logs/host:
receivers: [filelog/syslog]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
receivers:
filelog/syslog:
include:
- /var/log/system.log
- /host/private/var/log/*.log
start_at: end
operators:
- type: regex_parser
regex: '^(?P<timestamp>\w+ \d+ \d{2}:\d{2}:\d{2}) (?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: '%b %d %H:%M:%S'
- type: add
field: attributes.source
value: "host-logs"
- type: add
field: resource["service.name"]
value: "host-production"
service:
pipelines:
logs/host:
receivers: [filelog/syslog]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
جميع الإعدادات:
- اقرأ ملفات syslog من مواقعها القياسية
- حلّل تنسيق syslog لاستخراج الحقول المنظَّمة (الطابع الزمني، اسم المضيف، الوحدة/الخدمة، PID، الرسالة)
- احتفِظ بالطوابع الزمنية الأصلية للسجلات
- أضِف السمة
source: host-logs لتسهيل التصفية في HyperDX
- وجّه السجلات إلى مُصدِّر ClickHouse عبر pipeline مخصّص
- لا تُعرِّف في الإعداد المخصّص سوى
receivers وpipelines الجديدة
- إن
processors (memory_limiter, transform, batch) وexporters (clickhouse) معرّفة بالفعل في إعداد ClickStack الأساسي — ما عليك سوى الإشارة إليها بالاسم
- يستخرج محلّل
regex أسماء وحدات systemd ومعرّفات PID وبيانات وصفية أخرى من تنسيق syslog
- يستخدم هذا الإعداد
start_at: end لتجنّب إعادة إدخال السجلات عند إعادة تشغيل collector. وللاختبار، غيّره إلى start_at: beginning لعرض السجلات السابقة فورًا.
هيّئ ClickStack لتحميل إعدادات مخصصة
لتمكين إعدادات المجمّع المخصصة في نشر ClickStack الحالي لديك، يجب عليك:
- ربط ملف الإعدادات المخصص في المسار
/etc/otelcol-contrib/custom.config.yaml
- تعيين متغير البيئة
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
- ربط دليل
syslog لديك لكي يتمكن المجمّع من قراءته
الخيار 1: Docker Compose
حدّث إعدادات نشر ClickStack لديك:services:
clickstack:
# ... existing configuration ...
environment:
- CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
# ... other environment variables ...
volumes:
- ./host-logs-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro
- /var/log:/var/log:ro
# ... other volumes ...
الخيار 2: Docker Run (الصورة المتكاملة)
إذا كنت تستخدم الصورة المتكاملة مع docker run:docker run --name clickstack \
-p 8080:8080 -p 4317:4317 -p 4318:4318 \
-e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
-v "$(pwd)/host-logs-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v /var/log:/var/log:ro \
clickhouse/clickstack-all-in-one:latest
تأكد من أن ClickStack collector لديه الصلاحيات المناسبة لقراءة ملفات syslog. في بيئة الإنتاج، استخدم عمليات ربط للقراءة فقط (:ro) واتبع مبدأ أقل الصلاحيات.
التحقّق من السجلات في HyperDX
بعد إتمام الإعداد، سجّل الدخول إلى HyperDX وتحقّق من أن السجلات تتدفّق:
- انتقل إلى عرض البحث
- اضبط المصدر على Logs
- صفِّ باستخدام
source:host-logs لعرض السجلات الخاصة بالمضيف
- ينبغي أن ترى إدخالات سجل منظَّمة تتضمن حقولًا مثل
unit وhostname وpid وmessage وغيرها.
للمستخدمين الذين يريدون اختبار تكامل سجلات المضيف قبل تهيئة أنظمة الإنتاج الخاصة بهم، نوفر مجموعة بيانات نموذجية من سجلات النظام المُنشأة مسبقًا بأنماط واقعية.
تنزيل مجموعة البيانات النموذجية
نزّل ملف السجل النموذجي:curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/host-logs/journal.log
تتضمن مجموعة البيانات:
- تسلسل إقلاع النظام
- نشاط تسجيل الدخول عبر SSH (محاولات ناجحة وفاشلة)
- حادثة أمنية (هجوم brute force مع استجابة fail2ban)
- صيانة مجدولة (مهام cron وanacron)
- عمليات إعادة تشغيل الخدمات (rsyslog)
- رسائل النواة ونشاط الجدار الناري
- مزيج من العمليات العادية والأحداث البارزة
أنشئ تهيئة المجمّع للاختبار
أنشئ ملفًا باسم host-logs-demo.yaml باستخدام التهيئة التالية:cat > host-logs-demo.yaml << 'EOF'
receivers:
filelog/journal:
include:
- /tmp/host-demo/journal.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: "host-demo"
- type: add
field: resource["service.name"]
value: "host-demo"
service:
pipelines:
logs/host-demo:
receivers: [filelog/journal]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
EOF
شغّل ClickStack باستخدام التهيئة التجريبية
شغّل ClickStack باستخدام السجلات التجريبية وهذه التهيئة:docker run --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)/host-logs-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v "$(pwd)/journal.log:/tmp/host-demo/journal.log:ro" \
clickhouse/clickstack-all-in-one:latest
يؤدي هذا إلى ربط ملف السجل مباشرةً داخل الحاوية. ويتم ذلك لأغراض الاختبار باستخدام بيانات تجريبية ثابتة.
تحقّق من السجلات في HyperDX
بعد تشغيل ClickStack:
- افتح HyperDX وسجّل الدخول إلى حسابك (قد تحتاج إلى إنشاء حساب أولًا)
- انتقل إلى Search view واضبط المصدر على
Logs
- اضبط النطاق الزمني على 2025-11-10 00:00:00 - 2025-11-13 00:00:00
عرض المنطقة الزمنيةيعرض HyperDX الطوابع الزمنية وفقًا للمنطقة الزمنية المحلية في متصفحك. تمتد البيانات التجريبية عبر 2025-11-11 00:00:00 - 2025-11-12 00:00:00 (UTC). يضمن النطاق الزمني الواسع ظهور السجلات التجريبية بغض النظر عن موقعك. وبعد ظهور السجلات، يمكنك تضييق النطاق إلى فترة 24 ساعة للحصول على تصورات أكثر وضوحًا.
لوحات المعلومات والتصورات
لمساعدتك على بدء مراقبة سجلات المضيف باستخدام ClickStack، نوفر تصورات أساسية لسجلات النظام.
استورد لوحة المعلومات الجاهزة
- افتح HyperDX وانتقل إلى قسم لوحات المعلومات
- انقر على استيراد لوحة معلومات في الزاوية العلوية اليمنى ضمن قائمة النقاط الثلاث
- ارفع الملف
host-logs-dashboard.json وانقر على إتمام الاستيراد
اعرض لوحة المعلومات
ستُنشأ لوحة المعلومات مع تهيئة جميع التصورات مسبقًا:تشمل التصورات الرئيسية ما يلي:
- حجم السجلات بمرور الوقت حسب مستوى الخطورة
- أكثر وحدات systemd توليدًا للسجلات
- نشاط تسجيل الدخول عبر SSH (الناجح مقابل الفاشل)
- نشاط جدار الحماية (المحظور مقابل المسموح)
- الأحداث الأمنية (عمليات تسجيل الدخول الفاشلة، والحظر، والحجب)
- نشاط إعادة تشغيل الخدمة
بالنسبة إلى مجموعة البيانات التجريبية، اضبط النطاق الزمني على 2025-11-11 00:00:00 - 2025-11-12 00:00:00 (UTC) (عدّله وفقًا لمنطقتك الزمنية المحلية). لن يكون للوحة المعلومات المستوردة نطاق زمني محدد افتراضيًا.
تعذّر تحميل ملف الإعدادات المخصّص
تحقّق من تعيين متغير البيئة:
docker exec <container-name> printenv CUSTOM_OTELCOL_CONFIG_FILE
تحقّق من أن ملف الإعدادات المخصّص مربوط ويمكن قراءته:
docker exec <container-name> cat /etc/otelcol-contrib/custom.config.yaml | head -10
عدم ظهور السجلات في HyperDX
تأكّد من وجود ملفات syslog ومن استمرار الكتابة إليها:
# Check if syslog exists
ls -la /var/log/syslog /var/log/messages
# Verify logs are being written
tail -f /var/log/syslog
تحقّق من قدرة المجمّع على قراءة السجلات:
docker exec <container> cat /var/log/syslog | head -20
تحقّق من أن الإعدادات الفعّالة تتضمن مستقبِل filelog لديك:
docker exec <container> cat /etc/otel/supervisor-data/effective.yaml | grep -A 10 filelog
تحقّق من وجود أخطاء في سجلات المجمّع:
docker exec <container> cat /etc/otel/supervisor-data/agent.log | grep -i "filelog\|syslog"
إذا كنت تستخدم مجموعة البيانات التجريبية، فتأكّد من إمكانية الوصول إلى ملف السجل:
docker exec <container> cat /tmp/host-demo/journal.log | wc -l
عدم تحليل السجلات بصورة صحيحة
تحقّق من أن تنسيق syslog لديك يطابق التهيئة التي اخترتها:
بالنسبة إلى Linux الحديث (Ubuntu 24.04+):
# Should show ISO8601 format: 2025-11-17T20:55:44.826796+00:00
tail -5 /var/log/syslog
لأنظمة Linux القديمة أو macOS:
# Should show traditional format: Nov 17 14:16:16
tail -5 /var/log/syslog
# or
tail -5 /var/log/system.log
إذا لم يكن التنسيق لديك مطابقًا، فحدّد علامة تبويب التهيئة المناسبة في قسم إنشاء تهيئة مخصصة لـ OTel مجمّع.
- أعدّ التنبيهات لأحداث النظام الحرجة (تعطّل الخدمات، فشل المصادقة، تحذيرات القرص)
- رشّح حسب وحدات محددة لمراقبة خدمات بعينها
- اربط بين سجلات المضيف وسجلات التطبيق لاستكشاف الأخطاء وإصلاحها على نحو شامل
- أنشئ لوحات معلومات مخصصة لمراقبة الأمان (محاولات SSH، استخدام sudo، عمليات حظر جدار الحماية)
الانتقال إلى بيئة الإنتاج
يعتمد هذا الدليل على OpenTelemetry Collector المضمّن في ClickStack لتوفير إعداد سريع. أمّا لعمليات النشر في بيئة الإنتاج، فنوصي بتشغيل OTel Collector خاص بك وإرسال البيانات إلى نقطة نهاية OTLP الخاصة بـ ClickStack. راجع إرسال بيانات OpenTelemetry للاطلاع على إعدادات بيئة الإنتاج.