مركزية السجلات
1) لماذا مركزية السجلات
السجلات المركزية هي أساس إمكانية الملاحظة ومراجعة الحسابات والامتثال. واحد:- وتسريع عملية البحث عن جذور الحوادث (الارتباط بالمعرف المطلوب/التعقب) ؛
- السماح لك ببناء تنبيهات إشارات على الأعراض (الأخطاء والشذوذ) ؛
- إعطاء أثر لمراجعة الحسابات (من/متى/ماذا فعل) ؛
- انخفاض التكلفة بسبب توحيد عمليات الاحتفاظ والتخزين.
2) المبادئ الأساسية
1. الجذوع المنظمة فقط (JSON/RFC5424) - لا يوجد «نص حر» بدون مفاتيح.
2. مخطط موحد للمفاتيح: 'ts, level, service, env, region, egistant, trace_id, span_id, request_id, user_id (masked), msg, kv...'.
3. الارتباط الافتراضي: اقلب trace_id من البوابة إلى الخلف والسجلات.
4. تقليل الضوضاء: المستويات الصحيحة، وأخذ العينات، وتفريغ التكرار.
5. السلامة حسب التصميم: قناع PII، RBAC/ABAC، عدم قابلية التغيير.
6. الاقتصاد: ساخن/دافئ/بارد، ضغط، تجميع، TTL والإماهة.
3) البنى النموذجية
EFK/ELK: (Fluent Bit/Fluentd/Filebeat) → (كافكا - опц.) → (Elasticsearch/OpenSearch) → (Kibana/OpenSearch Dashboards). البحث والتجميع الشامل.
Loki-like (فهرسة السجل حسب الملصقات): Promtail/Fluent Bit → Loki → Grafana. أرخص للأحجام الكبيرة، مرشح ملصق قوي + عرض خطي.
السحابة: CloudWatch/Cloud Logging/Log Analytics + التصدير إلى التخزين البارد (S3/GCS/ADLS) و/أو SIEM.
نهج بحيرة البيانات: الشاحنون → تخزين الكائنات (parquet/iceberg) → استفسارات تحليلية رخيصة (Athena/BigQuery/Spark) + طبقة عبر الإنترنت (OpenSearch/Loki) لأيام N الأخيرة.
توصية: إبقاء الطبقة على الإنترنت (7-14 يومًا ساخنة) والمحفوظات (أشهر/سنوات) في البحيرة مع القدرة على إعادة الترطيب.
4) رسم بياني وشكل جذوع الأشجار (توصية)
تنسيق JSON الأدنى:json
{
"ts":"2025-11-01T13:45:12.345Z",
"level":"ERROR",
"service":"payments-api",
"env":"prod",
"region":"eu-central",
"tenant":"tr",
"trace_id":"0af7651916cd43dd8448eb211c80319c",
"span_id":"b7ad6b7169203331",
"request_id":"r-7f2c",
"user_id":"", // masked
"route":"/v1/payments/charge",
"code":"PSP_TIMEOUT",
"latency_ms":1200,
"msg":"upstream PSP timeout",
"kv":{"provider":"psp-a","attempt":2,"timeout_ms":800}
}
المعايير: RFC3339 للوقت، المستوى من المجموعة «TRACE/DEBUG/INFO/WARN/ERROR/FATAL»، المفاتيح في snake_case.
5) مستويات قطع الأشجار وأخذ العينات
DEBUG - فقط في التطوير/المرحلة ؛ حث بالعلم ومع TTL.
معلومات - دورة حياة الطلبات/الأحداث.
تحذير - مواقف مشبوهة دون التأثير على SLO.
خطأ/قاتل - تأثير على الطلب/المستخدم.
- الحد الأقصى لمعدل الأخطاء المتكررة (على سبيل المثال، 1/ثانية/مفتاح).
- أخذ عينات من الآثار (ترك جذوع الأشجار/الآثار كاملة فقط للطلبات «السيئة»).
- ديناميكية: في حالة حدوث عاصفة من الأخطاء، قلل من التفاصيل، واحفظ الملخص.
6) تسليم جذوع الأشجار (وكلاء وشاحنون)
على العقدة: Fluent Bit/Filebeat/Promtail يجمع ملفات stdout/juntrals، التحليل، الإخفاء، التخزين المؤقت.
قوائم انتظار الشبكة: كافكا/ناتس لتنعيم الذروة وإعادة التدوير والطلب.
الموثوقية: الضغط الخلفي، مخزنات الأقراص، تأكيدات التسليم (مرة واحدة على الأقل)، المؤشرات الحمقاء (تجزئة المفتاح).
الترشيح عند الحافة: التخلص من «الثرثرة» والأسرار قبل ضرب الشبكة.
7) الفهرسة والتخزين
التقسيم الزمني (يومياً/أسبوعياً) + حسب 'البيئة/المنطقة/المستأجر' (عن طريق قوالب الفهرس أو الملصقات).
طبقات التخزين:- Hot (SSD، 3-14 يومًا): بحث وتنبيهات سريعة.
- دافئ (HDD/freezer، 30-90 يومًا): ننظر أحيانًا.
- Cold/Archive (كائن، أشهر/سنوات): الامتثال والتحقيقات النادرة.
- الضغط والتناوب: ILM/ISM (سياسات دورة الحياة)، gzip/zstd، downsampling (جداول التجميع).
- الإماهة: تحميل مؤقت لدفعات محفوظة في مجموعة «ساخنة» للتحقيق.
8) البحث والتحليلات: عينة من الاستفسارات
الحادثة: مرشح الوقت × 'خدمة =...' × 'مستوى> = خطأ' × 'تتبع _ معرف '/' طلب _ معرف'.
مقدمو الخدمة: «الرمز: PSP _' و» kv. psp-a 'مصنفة حسب المنطقة.
الشذوذ: زيادة في تواتر الرسائل أو تغيير في التوزيعات الميدانية (كاشفات ML، قائمة على القواعد).
مراجعة الحسابات: «الفئة: مراجعة الحسابات» + «الجهة الفاعلة »/« الموارد» + النتيجة.
9) الارتباط بالمقاييس والآثار
معرفات متطابقة: «تتبع _ id/span _ id» في جميع الإشارات الثلاث (مقاييس، سجلات، آثار).
الروابط من الرسوم البيانية: الانتقال القابل للنقر من اللوحة p99 إلى السجلات بواسطة 'trace _ id'.
شروح الإصدار: الإصدارات/جزر الكناري في المقاييس والسجلات من أجل الربط السريع.
10) السلامة و PII والامتثال
التصنيف الميداني: PII/secrets/finances - قناع أو حذف عند المدخل (فلاتر بت/لوا بطلاقة، Re2).
RBAC/ABAC: الوصول إلى المؤشر/التسمية حسب الدور، أمن الصف/المستوى الميداني.
عدم قابلية المراجعة (WORM/Appland-only) للمراجعة والمتطلبات التنظيمية.
الاحتفاظ و «الحق في النسيان»: TTL/حذف بالمفاتيح، ترميز 'user _ id'.
التوقيعات/التجزئة: سلامة المجلات النقدية (الإجراءات الإدارية، المدفوعات).
11) مقاييس SLO وسجل خطوط الأنابيب
التسليم: 99. 9٪ من الأحداث في الطبقة الساخنة ≤ 30-60 ثانية.
الخسائر: <0. 01٪ في 24 ساعة (حسب العلامات المرجعية).
توافر البحث: ≥ 99. 9٪ في 28 يومًا.
زمن وصول الطلبات: p95 ≤ 2-5 ثانية على المرشحات النموذجية.
التكلفة: أحداث دولار/مليون دولار/تخزين/جيجابايت في طبقات.
12) لوحات القيادة (الحد الأدنى)
صحة خطوط الأنابيب: دخول/خروج الشاحنين، وإعادة التدوير، وملء المخازن المؤقتة، وتأخر كافكا.
الأخطاء حسب الخدمات/الرموز: أعلى N، الاتجاهات، "زمن الوصول المئوي _ ms'.
نشاط التدقيق: الإجراءات الإدارية، أخطاء مقدم الخدمة، الوصول.
الاقتصاد: الحجم/اليوم، نمو المؤشر، القيمة حسب الطبقة، الاستفسارات «باهظة الثمن».
13) العمليات وكتيبات اللعب
عاصفة السجل: تمكين أخذ العينات/الحد الأقصى للمعدل على العامل، ورفع المخازن المؤقتة، ونقل جزء من التيار مؤقتًا إلى الدفء.
انجراف المخطط: تنبيه لظهور مفاتيح/أنواع جديدة، بدء التفاوض على كتالوج المخطط.
البحث البطيء: إعادة بناء الفهارس، وزيادة النسخ المتماثلة، وتحليل الاستفسارات «الثقيلة»، وأرشفة الدفعات القديمة.
الحادث الأمني: تم تمكين الثبات الفوري، وتفريغ القطع الأثرية، وتقييد الوصول بواسطة الدور، RCA.
14) FinOps: كيف لا تنكسر على السجلات
إزالة الإسهاب: تحويل المسار متعدد الخطوط إلى حقل «كومة» وإعادة تشغيل العينات.
تمكين TTL: مختلف عن 'env '/' مستوى '/' فئة'.
استخدم Loki/archive + rehydrate عند الطلب للوصول النادر.
الحفلات والضغط: الحفلات الأكبر أرخص، لكن راقب البحث عن SLAs.
تجسيد التقييمات المتكررة (المجاميع اليومية).
15) أمثلة مفيدة
بت بطلاقة (إخفاء وإرسال إلى OpenSearch)
ini
[INPUT]
Name tail
Path /var/log/app/.log
Parser json
Mem_Buf_Limit 256MB
[FILTER]
Name modify
Match
Remove_key credit_card, password
[OUTPUT]
Name es
Host opensearch.svc
Port 9200
Index logs-${tag}-${date}
Logstash_Format On
Suppress_Type_Name On
سجل دخول Nginx в JSON с trace_id
nginx log_format json escape=json '{ "ts":"$time_iso8601","remote":"$remote_addr",'
'"method":"$request_method","path":"$uri","status":$status,'
'"bytes":$body_bytes_sent,"ua":"$http_user_agent","trace_id":"$http_trace_id"}';
access_log /var/log/nginx/access.json json;
سياسة OpenSearch ILM (hot→warm→delete)
json
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_age": "7d", "max_size": "50gb" } } },
"warm": { "min_age": "7d", "actions": { "forcemerge": { "max_num_segments": 1 } } },
"delete":{ "min_age": "90d", "actions": { "delete": {} } }
}
}
}
16) قائمة التنفيذ المرجعية
- مستويات تخطيط وسجل الحقول المقبولة ؛ تم تمكين الارتباط بين التعقب والطلب والمعرف.
- العوامل المكونة (بت بطلاقة/برومتيل) مع القناع والمخزنات.
- الطبقة الإلكترونية (OpenSearch/Loki/Cloud) والأرشيف (S3/GCS + parquet) المختار.
- ILM/ISM + سياسات الاحتفاظ الساخنة/الدافئة/الباردة، عملية إعادة الترطيب.
- RBAC/ABAC، عدم قابلية مراجعة الحسابات، سجل الدخول.
- لوحات القيادة لخطوط الأنابيب، تنبيهات الخسارة/مخزنات التأخير/القرص.
- كتب اللعب: عاصفة خشبية، انجراف مخطط، بحث بطيء، حادث أمني.
- الحدود المالية: أحداث دولار/مليون دولار، وحصص للطلبات «باهظة الثمن».
17) الأنماط المضادة
مسار عملاق في إنفو → إنفجار الحجم
السجلات النصية بدون بنية → عدم القدرة على التصفية والتجمع.
عدم وجود علاقة → «ترفرف» لجميع الخدمات.
تخزين «كل شيء إلى الأبد» → فاتورة السحابة مثل الطائرة.
الأسرار/PII في السجلات → مخاطر الامتثال.
تعديلات الفهرس اليدوية في المبيعات → الانجراف ووقت توقف البحث الطويل.
18) خلاصة القول
مركزية سجل هو نظام، وليس مجرد كومة. يحول المخطط الموحد والارتباط والشاحنين الآمنين والتخزين متعدد الطبقات وسياسات الوصول الصارمة السجلات إلى أداة قوية لـ SRE والأمن والمنتج. تحتفظ عمليات الاحتفاظ الصحيحة و FinOps بالميزانية، وتجعل خطوط الأنابيب SLOs وكتب اللعب التحقيقات سريعة وقابلة للتكرار.