رصد الهياكل الأساسية
مراقبة البنية التحتية
1) الأهداف والإطار
مراقبة البنية التحتية هي نظام إشارات حول صحة وأداء وتوافر المنصة. ويجب عليه:- حذر قبل تعطل المستخدم (الكشف المبكر).
- قم بتشخيص السبب الجذري (من الأعراض إلى الأسباب).
- دعم بوابات SLO للإطلاقات والتراجع التلقائي.
- تغذية تحليل ما بعد الحادث (الأدلة كبيانات).
المبادئ الداعمة: يمكن ملاحظتها حسب التصميم، ضوضاء أقل - المزيد من الإشارات، أتمتة ردود الفعل، لوحة واحدة من الحقيقة.
2) ثالوث قابلية الملاحظة
التسلسل الزمني - السعر/الطلب/الخطأ/التشبع (الاستخدام/الأحمر)
السجلات: تفاصيل الأحداث مع السياق ؛ لا تحتوي على أسرار/PII.
الآثار: حالات موزعة ذات علاقات سببية.
- التنميط (CPU/heap/lock/io)، eBPF لمستوى النظام.
- الأحداث/مراجعة الحسابات (الأحداث K8s، التغييرات في التشكيلات/الأسرار).
3) SLI/SLO/SLA - لغة جيدة
SLI: «التوافر»، «الخطأ _ المعدل»، «p95 _ latency»، «قائمة الانتظار _ lag».
SLO (الهدف): "الطلبات الناجحة ≥ 99. 9٪ في 30 يومًا"
ميزانية الخطأ: التسامح ؛ تستخدم في عمليات التوقف التلقائي.
مثال SLO (YAML):yaml service: "api-gateway"
slis:
- name: success_rate query_good: sum(rate(http_requests_total{status!~"5.."}[5m]))
query_total: sum(rate(http_requests_total[5m]))
slo: 99. 9 window: 30d
4) خريطة طبقات المراقبة
1. المضيفون/VM/العقد: CPU/Load/Steal، RAM/Swap، Disk IOPS/Latency، Filesystem.
2. الشبكة/LB/DNS: RTT، الحزم/القطرات، الأعمال المتراكمة، SYN/Timeout، المجسات الصحية.
3. Kubernetes/Orchestrator: خادم واجهة برمجة التطبيقات، وما إلى ذلك، ووحدات تحكم، وجدول ؛ القرون/العقد، المعلقة/المطرودة، الاختناق، أحداث الكوب.
4. الخدمات/الحاويات: RED (معدل/أخطاء/مدة)، الاستعداد/الحيوية.
5. قواعد البيانات/المخابئ: QPS، انتظار القفل، تأخر النسخ، ضربة عازلة، استفسارات بطيئة.
6. قوائم الانتظار/الحافلات: تأخر المستهلك، الطلب/الحروف الميتة، الإنتاجية.
7. التخزين/السحابة: أخطاء S3/Blob وكمون، 429/503 من مقدمي الخدمة.
8. حدود المحيط: WAF/Rate Limits، 4xx/5xx حسب المسار، CDN.
9. Synthetics: HTTP script checks (deposit/output), TLS/cellicates.
10. الاقتصاد/القدرة: التكلفة لكل خدمة، والاستخدام، والفرصة.
5) Whitebox и Blackbox
Whitebox: المصدرون/SDKs داخل الخدمات (Prometheus، OpenTelemetry).
Blackbox: عينات خارجية من مناطق مختلفة (توافر، زمن انتقال، انتهاء صلاحية TLS).
اجمع: «وقع بالخارج» + «التشخيص بالداخل».
yaml modules:
https_2xx:
prober: http http:
method: GET preferred_ip_protocol: "ip4"
6) Kubernetes: إشارات رئيسية
Кластер: 'apiserver _ request _ total', 'etcd _ server _ has _ leader', etcd fsync.
Узлы: 'الحاوية _ المعالجة المركزية _ cfs _ chottled _ seconds _ total', 'node _ pressure'.
الفوط: معلقة/CrashLoopBackOff، OOMKilled، تستأنف.
الخطط/الحدود: الطلبات مقابل الحدود، PodDistructionBudget، HPA/VPA.
الشبكة: تسقط NetworkPolicy، إرهاق التوصيل.
Дашборды: «الصحة العنقودية»، «تشبع عبء العمل»، «أفضل خدمات الخطأ».
7) DB وقوائم الانتظار
PostgreSQL/MySQL: تأخر النسخ، الجمود، الاستعلام البطيء٪، نقطة التفتيش I/O.
Redis/Memcached: نسبة الضرب، الإخلاء، الاتصالات المرفوضة.
كافكا/RabbitMQ: تأخر المستهلك، غير معبأ، طلب، سمسار ISR، استخدام القرص.
8) مقاييس RED/USE والعلاقات التجارية
RED: «معدل» (RPS)، «أخطاء» (4xx/5xx)، «مدة» (p95/p99).
الاستخدام (للموارد): الاستخدام والتشبع والأخطاء.
ارتبط بالمنتج: نجاح الودائع/المدفوعات، أعلام الاحتيال، التحويل - هؤلاء «حراس» للإفراج عن الكناري.
9) هيكل التنبيه
المستوى 1 (صفحة): الحوادث التي تؤثر على المكونات الحرجة للمجموعات (التوافر، 5xx، زمن الوصول، فشل المكونات الحرجة للمجموعات).
Tier-2 (تذكرة): تدهور القدرات، نمو الأخطاء دون التأثير على SLO.
Tier-3 (معلومات): الاتجاهات، القدرة التنبؤية، الشهادات المنتهية الصلاحية.
قواعد التصعيد: وقت الصمت/الضغط المكرر، التناوب عند الطلب، متابعة الشمس.
مثال على طرق Alertmanager:yaml route:
group_by: ["service","severity"]
receiver: "pager"
routes:
- match: { severity: "critical" }
receiver: "pager"
- match: { severity: "warning" }
receiver: "tickets"
10) أمثلة قاعدة بروميثيوس
10. 1 5xx أخطاء مع عتبة SLO
yaml groups:
- name: api rules:
- alert: HighErrorRate expr:
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m])) > 0. 005 for: 10m labels: { severity: "critical", service: "api-gateway" }
annotations:
summary: "5xx > 0. 5% 10m"
runbook: "https://runbooks/api-gateway/5xx"
10. 2 ميزانية خطأ محترق (حرق متعدد النوافذ)
yaml
- alert: ErrorBudgetBurn expr:
(1 - (
sum(rate(http_requests_total{status!~"5.."}[1m])) /
sum(rate(http_requests_total[1m]))
)) > (1 - 0. 999) 14 for: 5m labels: { severity: "critical", slo: "99. 9" }
annotations: { summary: "Fast burn >14x for 5m" }
10. 3 تشبع النظام (خنق وحدة المعالجة المركزية)
yaml
- alert: CPUThrottlingHigh expr: rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1 for: 10m labels: { severity: "warning" }
annotations: { summary: "CPU throttling >10%" }
11) السجلات: الجمع والتطبيع والاحتفاظ
التوحيد القياسي: سجلات JSON: 'ts' و' level' و 'service' و 'trace _ id' و 'user/مستأجر'.
خط الأنابيب: العامل (Fluent Bit/Vector) → مؤشر/تخزين → الاحتياطي.
مراجعة: PII/إخفاء الأسرار على الحافة.
الاحتفاظ: فئة التخزين السريع (7-14 يومًا)، الأرشيف البارد (30-180 يومًا).
الدلالات: ميزانيات الخطأ/النقض - قنوات منفصلة.
12) المسارات والقياس عن بعد المفتوح
نقاط إدخال الأجهزة (البوابة)، المكالمات kliyent→servis، DB/caches/قوائم الانتظار.
ربط المقاييس لتتبع السمات (النماذج) للملاحة السريعة.
UTel Collector كبوابة مركزية: الترشيح، أخذ العينات، التصدير إلى خلفيات مختارة.
yaml receivers: { otlp: { protocols: { http: {}, grpc: {} } } }
processors: { batch: {}, tail_sampling: { policies: [ { name: errors, type: status_code, status_codes: [ERROR] } ] } }
exporters: { prometheus: {}, otlp: { endpoint: "traces. sink:4317" } }
service:
pipelines:
metrics: { receivers: [otlp], processors: [batch], exporters: [prometheus] }
traces: { receivers: [otlp], processors: [tail_sampling,batch], exporters: [otlp] }
13) المواد التركيبية والفحوصات الخارجية
يدير HTTP سيناريوهات الأعمال (تسجيل الدخول، الإيداع، السحب، الشراء).
TLS/المجال: مصطلح الشهادة/CAA/DNS الصحة.
الإقليمية: عينات من البلدان/مقدمي الخدمات الرئيسيين (قوائم التوجيه/المجموعات).
يجب أن تنبه المواد التركيبية إذا لم تكن متاحة للمستخدم، حتى مع القياس الداخلي الأخضر.
14) التنميط و eBPF
التنميط المستمر: تحديد الوظائف الساخنة والأقفال.
eBPF: أحداث النظام (syscalls، TCP retransmitts)، على المنتج بأقل قدر من النفقات العلوية.
تنبيهات الملف الشخصي دون إجهاد (التذاكر)، وللانتكاسات بعد الإصدار - كإشارة للتراجع.
15) لوحات القيادة و «لجنة الحقيقة»
المجموعة الدنيا:1. نظرة عامة على المنصة: SLI/SLO حسب الخدمات الرئيسية، خطأ في الميزانية، تنبيهات.
2. API RED: RPS/الأخطاء/المدة حسب الطريق.
3. المجموعة K8s: مستوى التحكم، узлы، مساحة السعة.
4. DB/Cache: lag/locks/slow query٪، ضرب النسبة.
5. قوائم الانتظار: تراكم/تأخر، فشل/إعادة.
6. لكل إصدار: مقارنة بين المقاييس السابقة/اللاحقة (نوافذ الكناري).
7. FinOps: التكلفة لكل مساحة اسم/خدمة، ресурсы خاملة/كبيرة الحجم.
16) الحوادث وضوضاء التنبيه والتصعيد
التفريغ - تجميع الخدمة/السبب، القمع التعاقبي
الصمت/الصيانة: لا ينبغي للإطلاقات/الهجرات أن «ترسم» كل شيء باللون الأحمر.
دفاتر التشغيل: كل تنبيه مهم مع خطوات تشخيصية و «زر» التراجع.
تشريح الجثة: الجدول الزمني، ما تعلموه، الإشارات المضافة/المنظفة.
17) السلامة في الرصد
المكتب الإقليمي لآسيا والمحيط الهادئ لقواعد القراءة/التحرير/مصادر البيانات.
الأسرار: رموز المصدر/الوكيل - عبر المدير السري.
العزل: مقاييس العميل/المستأجر - في مساحات/علامات تبويب منفصلة.
النزاهة: توقيع الوكلاء/البناء، التكوينات عبر GitOps (مراجعة الدمج).
18) التمويل والقدرة (FinOps)
الحصص والميزانيات ؛ تنبيهات للنمو غير الطبيعي.
الحجم الصحيح: تحليل الطلبات/الحدود، واستخدام وحدة المعالجة المركزية/إدارة السجلات والمحفوظات، والحالات الموقعية للمهام غير الحرجة.
«التكلفة لكل طلب/مستأجر» كمؤشرات أداء رئيسية للأداء.
19) الأنماط المضادة
مقاييس البنية التحتية فقط بدون SLIs المخصصة.
100 + تنبيه «حول كل شيء» → العمى عند الطلب.
السجلات هي المصدر الوحيد (بدون مقاييس وتتبع).
لوحات القيادة القابلة للتغيير بدون إصدار/مراجعة.
نقص المواد التركيبية: «كل شيء أخضر»، لكن الجبهة غير متوفرة.
لا توجد صلة بالإصدارات: من المستحيل الإجابة على «ما تغير في الوقت الحالي X».
20) قائمة التنفيذ المرجعية (0-60 يومًا)
0-15 أيام
تعريف SLI/SLO للخدمات الرئيسية 3-5.
تمكين المصدرين/الوكلاء الأساسيين، توحيد سجلات JSON.
ضبط تنبيهات المستوى 1 (توافر، 5xx، p95).
16-30 يومًا
أضف مواد تركيبية للسيناريوهات الحرجة.
تمكين OTEL على المدخلات/الخدمات الحيوية.
لوحات القيادة «لكل إصدار» وقواعد حرق ميزانية الخطأ.
31-60 يومًا
قم بتغطية DB/قوائم الانتظار/المخبأ بإشارات متقدمة.
تنفيذ eBPF/التنميط لخدمات وحدة المعالجة المركزية عالية.
GitOps للقواعد/لوحات القيادة/التنبيهات، التنظيف المنتظم للضوضاء.
21) مقاييس النضج
تغطية SLO للخدمات الرئيسية ≥ 95٪.
MTTA/MTTR (الهدف: دقيقة/عشرات الدقائق).
نسبة تنبيهات المستوى 1 المغلقة عن طريق الحركة التلقائية أو التراجع السريع.
نسبة التنبيهات «المفيدة «/» الصاخبة «هي> 3:1.
التغطية الاصطناعية لجميع مسارات «المال» = 100٪.
22) التطبيقات: قوالب مصغرة
بروميثيوس - التوافر حسب فئة الحالة
yaml
- record: job:http:availability:ratio_rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
غرافانا - نصيحة لجزر الكناري
expr: histogram_quantile(0. 95, sum(rate(http_request_duration_seconds_bucket{version=~"stable canary"}[5m])) by (le,version))
Alertmanager - الواجب والصمت
yaml receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true inhibit_rules:
- source_match: { severity: "critical" }
target_match: { severity: "warning" }
equal: ["service"]
23)
المراقبة ليست مجموعة من الرسوم البيانية، ولكن نظام تشغيل SRE: SLI/SLO كعقد جودة، والمقاييس/المسارات/السجلات كمصادر للحقيقة، والتنبيهات كإشارة متحكم فيها، والمواد التركيبية كـ «صوت المستخدم»، GitOps كنظام للتغيير. قم ببناء حلقة واحدة من المضيف إلى واجهة برمجة التطبيقات، وربطها بالإصدارات والتراجع - والمنصة متوقعة وسريعة واقتصادية.