كومة القابلية للمراقبة
1) لماذا تحتاج إلى كومة قابلة للمراقبة
RCA السريع وتقليل MTTR: من الأعراض إلى الأسباب في دقائق.
إدارة المكتب الإقليمي لأفريقيا: قياس الأخطاء/زمن الانتقال، والتنبيه بالميزانية الخاطئة.
التحكم في الإطلاق: حسابات الكناري، التراجع التلقائي عن طريق المقاييس.
الأمن والتدقيق: طرق الوصول، الشذوذ، الانتظار القانوني.
شفافية FinOps: تكلفة التخزين/الطلبات، التكلفة لكل SLO.
المنهجيات: الإشارات الذهبية (زمن الوصول/حركة المرور/الأخطاء/التشبع)، RED، USE.
2) بنية المكدس الأساسية
المكونات حسب الطبقة
المجموعة/الوكلاء: المصدرون، Promtail/Fluent Bit، OTel SDK/Auto-Instr، تحقيقات Blackbox.
Шина/ingest: Prometheus remote_write → Mimir/Thanos، موزعي/مبتدعي Loki، Tempo/Jaeger ingesters.
المخزونات: كائن S3/GCS/MinIO (بارد طويل)، SSD (صفوف ساخنة).
الاستفسارات/التصور: Grafana (الألواح، أدوات SLO)، Kibana (إذا كان ELK).
الإدارة: تنبيهات Alertmanager/Graphana، كتالوج الخدمة، RBAC، المدير السري.
أنماط النشر
تمت إدارته (Grafana Cloud/cloud services) - سريع وأكثر تكلفة من حيث الأحجام.
تم استضافته ذاتيًا في K8s - التحكم الكامل، وتشغيل الاحتياجات و FinOps.
3) معايير البيانات: «مخطط موحد للمراقبة»
3. 1 مقاييس (بروميثيوس/أوبن ميتريكس)
الملصقات المطلوبة: 'env'، 'region'، 'cluster'، 'famespace'، 'service'، 'version'، 'region' (if multi-regant)، 'endpoint'.
التسمية: "snake _ case"، اللواحق "_ total"، "_ seconds'،" _ bytes ".
مخططات الشريط: «دلاء» ثابتة (موجهة نحو SLO).
Cardinality: لا تتضمن «user _ id» و «request _ id» في الملصقات.
3. 2 سجلات
الشكل: JSON ؛ الحقول المطلوبة 'ts' و' level' و 'service' و 'env' و 'trace _ id' و 'span _ id' و' msg '.
PII: إخفاء الوكيل (PAN، الرموز، البريد الإلكتروني، إلخ).
ملصقات Loki: الكاردينالية المنخفضة فقط («التطبيق»، «مساحة الاسم»، «المستوى»، «المستأجر»).
3. 3 مسارات
دلالات OTEL: 'خدمة. اسم '،' نشر. البيئة '،' db. "،" http. ".
أخذ العينات: مسارات الهدف p99 هي «دائمًا _ على »/أخذ عينات الذيل، والباقي هو« النسبة بين الأم والنسبة ».
تضمين معرف: flick 'trace _ id/span _ id' في السجلات والمقاييس (الملصقات/الحقول).
4) ارتباط M-L-T (مقاييس/سجلات/آثار)
من الرسم البياني التنبيهي (متري) → جذوع الأشجار المصفاة بواسطة 'trace _ id' → أثر محدد.
من التتبع (الامتداد البطيء)، يتم → طلب لمقاييس نهاية خلفية محددة في فترة الامتداد.
أزرار الحفر في الألواح: "to logs" و "to traces" مع استبدال متغير ("$ env"، "$ service"، "$ trace _ id').
5) جامع القياس عن بعد المفتوح: خط أنابيب مرجعي
yaml receivers:
otlp:
protocols: { http: {}, grpc: {} }
prometheus:
config:
scrape_configs:
- job_name: kube-nodes static_configs: [{ targets: ['kubelet:9100'] }]
processors:
batch: {}
memory_limiter: { check_interval: 1s, limit_mib: 512 }
attributes:
actions:
- key: deployment. environment value: ${ENV}
action: insert tail_sampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code: { status_codes: [ERROR] }
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/payments","/login"] }
- name: probabilistic type: probabilistic probabilistic: { sampling_percentage: 10 }
exporters:
otlphttp/mimir: { endpoint: "https://mimir/api/v1/push" }
otlphttp/tempo: { endpoint: "https://tempo/api/traces" }
loki:
endpoint: https://loki/loki/api/v1/push labels:
attributes:
env: "deployment. environment"
service: "service. name"
service:
pipelines:
metrics: { receivers: [prometheus, otlp], processors: [memory_limiter, batch], exporters: [otlphttp/mimir] }
logs: { receivers: [otlp], processors: [batch], exporters: [loki] }
traces: { receivers: [otlp], processors: [memory_limiter, attributes, tail_sampling, batch], exporters: [otlphttp/tempo] }
6) التنبيه: SLO ومتعدد الحروق
الفكرة: التنبيه ليس على مستوى «وحدة المعالجة المركزية> 80٪»، ولكن على استهلاك ميزانية الخطأ.
قوالب PromQL:promql
5-minute error rate err_ratio_5m =
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m]))
Quick burn (1m window)
(err_ratio_1m / (1 - SLO)) > 14. 4
Slow burn (30m)
(err_ratio_30m / (1 - SLO)) > 2
الكمون (histograms):
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
7) لوحات القيادة: هيكل المجلد
00_Overview - المنصة: SLO، p95، 5xx٪، السعة، الحوادث النشطة.
10_Services - حسب الخدمات: RPS, p95/p99, risors, releases (annotations).
20_Infra - K8s/nodes/story/network، وما إلى ذلك، ووحدات التحكم.
30_DB/Queues - PostgreSQL/Redis/Kafka/RabbitMQ.
40_Edge/DNS/CDN/WAF - الدخول، LB، قواعد WAF.
50_Synthetic - وقت التشغيل والنصوص مقطوعة الرأس.
60_Cost/FinOps - التخزين، الاستفسار، الساخن/البارد، التوقعات.
كل لوحة: الوصف، الوحدات، المالك، رابط الدليل، الحفر.
8) السجلات: ورشة عمل LogQL
logql
API errors
{app="api", level="error"} = "Exception"
Nginx 5xx in 5 minutes
{app="nginx"} json status=~"5.." count_over_time([5m])
Extract Fields
{app="payments"} json code!="" unwrap duration avg()
9) المسارات: TraceQL والحيل
ابحث عن أبطأ الفترات:
{ service. name = "api" } duration > 500ms
شطيرة SQL بطيئة في استعلام بطيء:
{ name = "HTTP GET /order" } child. span. name = "SELECT" & child. duration > 50ms
10) المواد التركيبية ووقت التشغيل
Blackbox-exporter: عينات HTTP/TCP/TLS/DNS من مناطق ≥3/ASN.
مقطوع الرأس: تسجيل الدخول/إيداع النصوص المجدولة.
تنبيهات النصاب: يتم تشغيلها إذا رأت ≥2 الإقليمية فشلاً.
صفحة الحالة: تحديثات تلقائية + تعليقات يدوية.
11) التخزين والاحتفاظ
المقاييس: 7-30 يومًا ساخنًا (صفوف سريعة)، قواعد تقليل الحجم/التسجيل، تخزين الكائن البارد (أشهر).
جذوع الأشجار: ساخنة لمدة 3-7 أيام، ثم S3/GCS بمؤشر (متجر Loki chunk/ELK ILM).
الآثار: 3-7 أيام «دائمًا _ على» + تخزين طويل الأجل للعينات (عينات الذيل/الرفض).
- تمديد الحجم والوقت ؛ للطلبات (الحصص/الحدود).
- سياسات منفصلة للبيانات المرحلية والأمنية.
12) تعدد الإيجارات والوصول
منفصل حسب «المستأجر »/« مساحة الاسم »/المساحات وأنماط الفهرس والدقة.
موارد العلامة للفواتير: «المستأجر»، «الخدمة»، «الفريق».
استيراد لوحات القيادة/التنبيهات - في مساحات فرق معينة.
13) السلامة والامتثال
TLS/mTLS من الوكلاء إلى الخلف، HMAC للصحة الخاصة.
يقوم المكتب الإقليمي لآسيا والمحيط الهادئ بقراءة/كتابة جميع الطلبات والإنذارات ومراجعتها.
إصدار PII على الحافة ؛ وحظر الأسرار في السجلات ؛ DSAR/Legal Hold.
العزل: مجموعات منفصلة/مساحات صغيرة للمجالات الحساسة.
14) FinOps: تكلفة إمكانية الملاحظة
نحن نقلل من كاردينالية الملصقات والمنطق في تناول (وليس في الطلبات).
تتبع العينات + الهدف دائمًا للمسارات الحرجة.
تقليل/تسجيل قواعد التجميعات الثقيلة.
أرشفة وصول نادر إلى الجسم البارد.
Метрики: 'storage _ cost _ gb _ day', 'query _ cost _ hour', 'cost _ per _ rps',' cost _ per _ 9 '.
15) اختبارات CI/CD وقابلية الرصد
مقاييس/جذوع الأشجار المبطنة في CI: حظر «انفجار» الكاردينالية، التحقق من المخططات النسيجية/الوحدات.
اختبارات عقد القابلية للمراقبة: المقاييس/حقول السجل المطلوبة، «تتبع _ معرف» في البرامج الوسيطة.
الكناري: شروح الإصدارات على الرسوم البيانية، SLO-auto-rellack.
16) أمثلة: استفسارات سريعة
أعلى نقاط النهاية عن طريق الخطأ:promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
اختناق وحدة المعالجة المركزية:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
كافكا متخلف:
promql max by (topic, group) (kafka_consumergroup_lag)
من السجلات إلى المسارات (Loki → Tempo): مرر «trace _ id» كرابط إلى Tempo UI/dashboard.
17) جودة المكدس: قائمة مرجعية
- مخططات ووحدات مترية/لوغاريتم/نزرة متفق عليها.
- «تتبع _ معرف» في جذوع الأشجار والمقاييس، حفر من الألواح.
- تنبيهات SLO متعددة الحروق بدون رفرفة (النصاب/النوافذ المتعددة).
- خفض الحجم، وطلب الحصص، وحدود الخطوة/النطاق.
- يتم توثيق فئات الاحتفاظ والتخزين وتطبيقها.
- تم تضمين تنقيح RBAC/Audit/PII.
- لوحات القيادة: المالك، كتب التشغيل، شاشات ≤2 -3، استجابة سريعة.
- FinOps-dashboard (مجلدات، تكلفة، أفضل المتحدثين).
18) خطة التنفيذ (3 تكرارات)
1. أفضل لاعب (2 أسابيع): Prometheus→Mimir، لوكي، تيمبو ؛ جامع أوتيل ؛ ولوحات القيادة الأساسية وتنبيهات SLO ؛ عينات الصندوق الأسود.
2. المقياس (3-4 أسابيع): أخذ عينات من الذيل، تقليل الحجم، تناول مناطق متعددة، RBAC/Spaces، FinOps-dashboards.
3. Pro (4 + أسابيع): التراجع التلقائي عن SLO، المواد التركيبية بدون رأس للمسارات الرئيسية، Legal Hold، محفظة SLO والتقارير.
19) الأنماط المضادة
«رسومات جميلة بدون SLO» - لا يوجد إجراء → أي فائدة.
ملصقات الكاردينالية العالية («مستخدم _ معرف»، «طلب _ معرف») - انفجار في الذاكرة والتكلفة.
سجلات بدون JSON وبدون 'trace _ id' - لا علاقة.
تنبيهات الموارد بدلاً من الأعراض - الضوضاء والإرهاق عند الطلب.
الافتقار إلى سياسات الاحتفاظ - الزيادات غير المنضبطة في التكاليف.
20) الأسئلة الشائعة الصغيرة
ماذا تختار: Loki أو ELK ؟
ELK للبحث المعقد/الجوانب ؛ Loki أرخص وأسرع لسيناريوهات تشبه grep. غالبًا ما يتم استخدام الهجين.
هل يحتاج الجميع إلى آثار ؟
نعم، على الأقل في المسارات الرئيسية (تسجيل الدخول، تسجيل الخروج، المدفوعات) مع أخذ عينات الذيل - وهذا يسرع بشكل كبير RCA.
كيف تبدأ من الصفر ؟
جامع OTEL → Mimir/Loki/Tempo → عينات SLO و blackbox الأساسية → ثم لوحات القيادة وتنبيهات الحرق.
المجموع
كومة الملاحظة ليست مجموعة من الأدوات المتباينة، ولكنها نظام متسق: معايير بيانات موحدة → ارتباط M-L-T → تنبيه SLO والمواد التركيبية → السلامة و FinOps. التقط المخططات، وانضباط التسمية والاحتفاظ بها، واتصل بـ OTel، وأضف الحفر والتراجع التلقائي - وستحصل على موثوقية يمكن التحكم فيها بتكلفة مفهومة.