إمكانية الرصد: السجلات والمقاييس والآثار
إمكانية الرصد: السجلات والمقاييس والآثار
1) لماذا تحتاجه
إمكانية الملاحظة - قدرة النظام على الإجابة على الأسئلة غير المخطط لها حول حالته. يعتمد على ثلاث إشارات رئيسية:- المقاييس هي مجاميع مدمجة لـ SLI/SLO وتنبيه الأعراض.
- آثار - سلاسل استعلام من طرف إلى طرف.
- الجذوع - أحداث مفصلة للتحقيقات ومراجعة الحسابات.
الغرض: سرعة RCA، التنبيهات الوقائية والموثوقية المدارة ضمن ميزانية الخطأ.
2) مبادئ العمارة
السياق الفردي: في كل مكان نرمي فيه «trace _ id» و «span _ id» و «tenant _ id» و «request _ id» و «user _ agent» و «client _ ip _ hash».
المعايير: OpenTelemetry (OTel) لـ SDK/الوكلاء، تنسيق سجل JSON (قانوني، مع مخطط).
الأعراض> الأسباب: التنبيه عن طريق أعراض المستخدم (الكمون/الأخطاء)، وليس عن طريق وحدة المعالجة المركزية.
الاتصال بالإشارة: من المقياس → إلى النماذج → إلى سجلات محددة بواسطة 'trace _ id'.
الأمان والخصوصية: إخفاء PII في السجلات، والتشفير أثناء العبور/الراحة، وسجلات التدقيق غير القابلة للتغيير.
تعدد الإيجارات: فصل مساحات الأسماء/المفاتيح/السياسات.
3) تصنيف الإشارات والمخططات
3. 1 مقاييس
RED (معدل، أخطاء، مدة) للخدمات والاستخدام (الاستخدام، التشبع، الأخطاء) للبنية التحتية.
Типы: عداد، قياس، مخطط/ملخص. لكمون، مخطط نسيجي مع دلاء ثابتة.
النماذج: الإشارة إلى 'trace _ id' في صناديق الهيستوغرام «الساخنة».
name: http_server_duration_seconds labels: {service, route, method, code, tenant}
type: histogram buckets: [0. 01, 0. 025, 0. 05, 0. 1, 0. 25, 0. 5, 1, 2, 5]
exemplar: trace_id
3. 2 آثار
Span = عملية مع «اسم»، «بداية/نهاية»، «سمات»، «أحداث»، «حالة».
W3C Trace Context for termobility (باللغة الإنجليزية).
أخذ العينات: القواعد الأساسية (الرأس) + الديناميكية (الذيل) + «ذات الأهمية» (الأخطاء، الارتفاع p95).
3. 3 سجلات
) ب (فقط نظام JSON المنظم ؛ المستويات: DEBUG/INFO/WARN/خطأ.
الحقول المطلوبة هي «ts _ utc' و» level' و «message» و «trace _ id» و «span _ id» و «tenant _ id» و «env» و «service» و «region» و «host' و» host' و «labels {}».
ممنوع: أسرار، رموز، PAN، كلمات مرور. PII - رمزي/مقنع فقط.
json
{"ts":"2025-10-31T12:05:42. 123Z","level":"ERROR","service":"checkout","env":"prod",
"trace_id":"c03c...","span_id":"9ab1...","tenant_id":"t-42","route":"/pay",
"code":502,"msg":"payment gateway timeout","retry":true}
4) الجمع والنقل
الوكلاء/المصدرون (daemonset/sidecar) → حاجزًا على الحافلة →/العقدة المبتذلة (TLS/mTLS) → مخزن الإشارات.
المتطلبات: الضغط الخلفي، إعادة التدوير، التفريغ، تقييد الكاردينالية (الملصقات!)، الحماية من «عواصف السجل».
المقاييس: اسحب (بروميثيوس متوافق) أو ادفع عبر OTLP.
الآثار: OTLP/HTTP (gRPC)، عينات الذيل على الجامع.
Logs: local collection (journal/docker/stdout) → parser → normalizer.
5) التخزين والاحتفاظ (متدرج)
المقاييس: TSDB ساخن 7-30 يومًا (مع عينة هبوطية)، ومجموعات لفترة أطول (90-365 يومًا).
الآثار: 1-7 أيام ممتلئة، ثم تجميع/امتدادات الخدمات «الهامة» ؛ فهارس المتاجر على «الخدمة» و «الحالة» و «الخطأ».
السجلات: فهرس ساخن 7-14 يومًا، دافئ 3-6 أشهر، أرشيف حتى 1-7 سنوات (الامتثال). التدقيق - WORM.
تحسين التكلفة: تقليل الحجم، تصفية DEBUG في المبيعات، حصص التسمية، أخذ العينات للمسارات.
6) SLI/SLO، التنبيه والواجب
SLI: التوافر (النسبة المئوية للطلبات الناجحة)، الكمون (p95/p99)، حصة 5xx، نضارة البيانات، حصة الوظائف الناجحة.
SLO: الهدف على SLI (على سبيل المثال 99. 9٪ ناجحون ≤ 400 مللي ثانية).
ميزانية الخطأ: 0. 1٪ «هامش الخطأ» → قواعد الخيال/التجارب.
- 'ALERT HighLatency' если 'p99 (http_server_duration_seconds{route="/pay"})> 1s' 5мин.
- معدل «если» (http_requests_total{code=~"5.."}[5m] )/المعدل (http_requests_total[5m])> 0. 02`.
- تنبيهات الصومعة (وحدة المعالجة المركزية/القرص) - فقط كمساعدة، دون استدعاء.
7) ارتباط الإشارة
المقياس هو «أحمر» → انقر على نموذج → «تتبع _ معرف» معين → انظر إلى الامتداد «البطيء» → فتح السجلات بنفس «تتبع _ معرف».
الارتباط بالإصدارات: السمات «نسخة»، «صورة _ شا»، «ميزة _ علم».
للاطلاع على البيانات/ETL: 'dataset _ urn',' run _ id ', link to lineage (انظر المقالة المقابلة).
8) أخذ العينات والكاردينالية
المقاييس: تقييد الملصقات (بدون 'معرف المستخدم'، 'معرف الجلسة') ؛ الحصص/المصادقة عند التسجيل.
الآثار: دمج عينة الرأس (عند المدخل) وعينة الذيل (عند الجامع) مع القواعد: «كل ما هو 5xx، p99، أخطاء - 100٪».
الجذوع: المستويات والخنق ؛ للأخطاء المتكررة المتكررة - تجميع الأحداث (مفتاح التخلص).
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_code: ERROR rate_allocation: 1. 0
- type: latency threshold_ms: 900 rate_allocation: 1. 0
- type: probabilistic hash_seed: 42 sampling_percentage: 10
9) الأمن والخصوصية
In Transit/At Rest: encryption (TLS 1. 3، AEAD، KMS/HSM).
PII/أسرار: مطهرات قبل الشحن، ترميز، قناع.
الوصول: ABAC/RBAC للقراءة ؛ الفصل بين أدوار المنتجين/القراء/الإداريين.
مراجعة الحسابات: عدم تغيير سجل الوصول إلى السجلات/الآثار ؛ التصدير - في شكل مشفر.
تعدد الإيجارات: مساحات الأسماء/علامات المستأجرين ذات السياسات ؛ عزل مفتاح التشفير.
10) ملامح التكوين (شظايا)
بروميثيوس (مقاييس HTTP + تنبيه):yaml global: { scrape_interval: 15s, evaluation_interval: 30s }
scrape_configs:
- job_name: 'app'
static_configs: [{ targets: ['app-1:8080','app-2:8080'] }]
rule_files: ['slo. rules. yaml']
slo. القواعد. يامل (مثال RED):
yaml groups:
- name: http_slo rules:
- record: job:http_request_duration_seconds:p99 expr: histogram_quantile(0. 99, sum(rate(http_server_duration_seconds_bucket[5m])) by (le,route))
- alert: HighLatencyP99 expr: job:http_request_duration_seconds:p99{route="/pay"} > 1 for: 5m
OpenTelemetry SDK (pseudocode):
python provider = TracerProvider(resource=Resource. create({"service. name":"checkout","service. version":"1. 8. 3"}))
provider. add_span_processor(BatchSpanProcessor(OTLPExporter(endpoint="otel-collector:4317")))
set_tracer_provider(provider)
with tracer. start_as_current_span("pay", attributes={"route":"/pay","tenant":"t-42"}):
business logic pass
سجلات التطبيقات (stdout JSON):
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})
11) البيانات/ETL والبث
SLI للبيانات: النضارة (الحد الأقصى للتأخر)، الاكتمال (الصفوف مقابل التوقعات)، «الجودة» (المصدقون/المكررون).
التنبيهات: تخطي النوافذ، تأخر المستهلك، نمو DLQ.
الارتباط: 'run _ id'، 'dataset _ urn'، أحداث النسب ؛ آثار لخطوط الأنابيب (الامتداد لكل دفعة/قسمة).
كافكا/ناتس: مقاييس المنتج/المستهلك، التأخر/الفشل ؛ آثار بواسطة الرؤوس (بما في ذلك «التتبع»).
12) التنميط و eBPF (إشارة إضافية)
مسارات ساخنة منخفضة المستوى لوحدة المعالجة المركزية/وحدة المعالجة المركزية/مكتب المعلومات ؛ لكل حادثة.
القياس عن بعد eBPF (تأخير الشبكة، DNS، مكالمات النظام) مرتبط بـ 'تتبع _ id '/PID.
13) اختبار القابلية للمراقبة
عقد الإشارة - يتحقق من تصدير المقاييس/الملصقات/المخططات الهيستوغرافية إلى CI.
المجسات الاصطناعية: سيناريوهات RUM/محاكاة العملاء لـ SLIs الخارجية.
الفوضى/التدريبات على الحرائق: تعطيل التبعيات والتدهور - ننظر في رد فعل التنبيهات والحاضرين.
Smoke in Prod: تحقق ما بعد النشر من أن نقاط النهاية الجديدة بها مقاييس وآثار.
14) التحكم في التكلفة والحجم
الميزانيات حسب الإشارة/الأمر ؛ لوحة القيادة «التكلفة لكل إشارة».
الكاردينالية تحت الميزانية (SLO للكاردينالية)، حدود على الملصقات الجديدة.
تقليل الحجم، وعروض فئة البيانات، والمحفوظات الباردة و WORM للتدقيق.
15) تشغيل منصة القابلية للمراقبة و SLO
منصة SLO: 99. 9٪ من الابتكارات الناجحة ؛ تأخير الفهرس المتري ≤ 30 ثانية، سجلات ≤ 2 دقيقة، آثار ≤ 1 دقيقة.
تنبيهات المنصة: تأخر الحقن، انخفاض النمو، خطأ التوقيع/التشفير، فائض العازل.
DR/HA: نسخ احتياطية متعددة المناطق، وتكوين/قواعد.
16) القوائم المرجعية
قبل البيع:- في كل مكان يتم إلقاء 'trace _ id '/' span _ id' ؛ سجل JSON مع مخطط.
- مقاييس RED/USE مع مخططات النسيج ؛ محاذاة → النموذجية.
- تمكين أخذ عينات من الذيل ؛ 5xx/p99 القواعد = 100٪.
- التنبيهات حسب الأعراض + كتب التشغيل ؛ ساعات هادئة/مضادة للرفرف.
- معقمات PII ؛ التشفير في الراحة/في النقل العابر WORM للتدقيق.
- الاحتفاظ بالأحجام والميزانيات للأحجام/الكاردينالات.
- استعراض الإنذار الشهري (الضوضاء/الدقة)، عتبات الضبط.
- تقرير خاطئ عن الميزانية والإجراءات المتخذة (التجميد والتصلب).
- تحقق من لوحة القيادة/السجل/الطلاءات النزرة للمسارات الحرجة.
- حوادث التدريب وتحديثات الدليل.
17) Runbook'и
RCA: p99/زيادة في الأجور
1. افتح لوحة القيادة RED لـ «الخروج».
2. اذهب إلى نموذج → مسار بطيء → يكشف عن «امتداد ضيق» (على سبيل المثال البوابة. الاتصال ').
3. فتح السجلات بواسطة «تتبع _ معرف» → عرض المهلة/إعادة المسارات.
4. مكّن ميزة التراجع/حد RPS، وإخطار مالكي التبعية.
5. بعد الاستقرار - RCA، تذاكر التحسين، اختبار التشغيل.
1. SLI «النضارة» الحمراء → وظيفة المسار → الملعب الفاشل.
2. تحقق من سجل الوسيط/DLQ، أخطاء الموصل.
3. ابدأ بإعادة المعالجة، وأخطر المستهلكين (BI/المنتج) عبر قناة الحالة.
18) الأخطاء المتكررة
سجلات بدون مخطط وبدون «تتبع _ معرف». تتأخر التحقيقات في بعض الأحيان.
تنبيهات حول البنية التحتية بدلاً من الأعراض. يذهب النداء «إلى الحليب».
كاردينالية لا حدود لها من المقاييس. انفجار التكلفة وعدم الاستقرار.
كل المسارات 100٪. مكلفة وغير ضرورية ؛ تمكين أخذ العينات الذكية.
PII/أسرار في السجلات. قم بتضمين المطهرات والقوائم الحمراء.
ميزات «كتم الصوت». رمز جديد بدون مقاييس/آثار/سجلات.
19) الأسئلة الشائعة
س: هل أحتاج إلى تخزين النص الخام للسجلات ؟
ج: نعم، ولكن مع الاحتفاظ والمحفوظات ؛ وبالنسبة للإنذارات والمنظمات غير الحكومية، فإن المجاميع كافية. التدقيق - في WORM.
س: ماذا تختار للمسارات - أخذ عينات الرأس أو الذيل ؟
ج: اجمع: احتمالية الرأس لقواعد basecoat + الذيل للأخطاء والشذوذ.
س: كيف أربط بين مقاييس المستخدم والمقاييس الفنية ؟
ج: من خلال 'trace _ id' العام والعلامات التجارية ('الطريق' و 'المستأجر' و 'الخطة')، وكذلك من خلال أحداث المنتج (التحويلات) مع الارتباط بالمسارات.
س: كيف لا تغرق في التنبيهات ؟
ج: تغلب على الأعراض، ودخل ساعات الهدوء، والتفريغ، والتجميع، وتحديد أولويات SLO، والمالك افتراضيًا لكل تنبيه.
المواد ذات الصلة:- «سجلات التدقيق والسجلات الثابتة»
- «In Transit/At Rest Encryption»
- «الإدارة السرية»
- «Data Origin (Lineage)»
- «Privacy by Design (GDPR)»
- «ضمانات تسليم الويب»