GH GambleHub

مجموعة المقاييس: بروميثيوس، جرافانا

مجموعة المقاييس: بروميثيوس، جرافانا

1) الغرض والإطار

تتمثل مهمة حلقة المقاييس في جمع وتخزين السلاسل الزمنية بشكل موثوق، وإعطاء PromQL سريع لـ RCA وتنبيهات SLO ولوحات القيادة المفهومة. الزوج الأساسي: Prometheus (scrape → store → query) و Grafana (التصور، التنبيهات، شروح الإصدار). للتخزين الطويل والاستعلام العالمي - Thanos/Cortex/Mimir.

2) نموذج البيانات والدلالات

Series = metric name + set of labels (key = value).
الأنواع: كاونتر، قياس، مخطط نسيجي، ملخص (في prod - في كثير من الأحيان histogram).

الدلالات:
  • RED (API): «معدل»، «أخطاء»، «مدة» (مخطط).
  • الاستخدام (ресурсы): الاستخدام والتشبع والأخطاء (CPU/RAM/Disk/Net).
  • التسمية: "namespace _ subsystem _ metric _ unit' (على سبيل المثال،" http _ server _ requests _ total "،" db _ connections _ current ").

مضاد الكاردينالية: تقليل قيم التسمية المختلفة (لا user_id request_id في التسمية).

3) التعرض واكتشاف الخدمة

المصدرون: node_exporter، kube-state-metrics، cAdvisor، DB/Queues (postgres_exporter، redis_exporter، kafka_exporter).
الخدمات المحلية: مكتبات العملاء (Go/Java/Node/Python) → '/المقاييس '.
Service Discovery: Kubernetes, EC2/ASG, Consul, static files.

أساسي 'بروميثيوس. yml' (مقتطف):
yaml global:
scrape_interval: 15s evaluation_interval: 15s scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs: [{ role: node }]
relabel_configs:
- action: labelmap regex: __meta_kubernetes_node_label_(.+)
- job_name: 'apps'
kubernetes_sd_configs: [{ role: pod }]
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep regex: "true"
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
target_label: __metrics_path__
regex: (.+)
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port]
target_label: __address__
regex: (.+)
replacement: $1
شروح القرون:
yaml prometheus. io/scrape: "true"
prometheus. io/path: /metrics prometheus. io/port: "8080"

4) النسيج والكمون

استخدم دلاء صريحة لـ SLOs الخاصة بك:
  • Web/API: «[10 ms، 25 50 100 200 400 800 1600]»
  • المدفوعات/المدفوعات: أضف ذيل إلى 5-10.
PromQL p95:
promql histogram_quantile(0. 95,
sum by (le) (rate(http_request_duration_seconds_bucket[5m]))
)
مع النماذج (إذا تم تمكينها):
promql histogram_quantile(0. 95,
sum by (le, route) (rate(traces_spanmetrics_duration_bucket{route="/withdraw"}[5m]))
)

5) قواعد التسجيل

تقليل الطلبات الثقيلة، وتوحيد SLI.

yaml groups:
- name: api_sli interval: 30s rules:
- record: job:http:success_ratio:rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
- record: job:http:duration_p95:5m expr: histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))

6) SLO والتنبيهات (حرق متعدد النوافذ)

SLO 99. 9٪ Requests/30d ناجحة.

yaml groups:
- name: slo_burn rules:
- alert: ErrorBudgetBurnHighShort expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 14 for: 5m labels: { severity: critical }
annotations: { summary: "Fast burn >14x for 5m" }

- alert: ErrorBudgetBurnHighLong expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 6 for: 1h labels: { severity: critical }
annotations: { summary: "Long burn >6x for 1h" }
Alertmanager (مبسط):
yaml route:
receiver: pager group_by: ["service"]
receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true

7) النظافة والاقتصاد

أسماء العلامات ثابتة وموحدة: «خدمة»، «env»، «منطقة»، «مسار»، «رمز»، «نسخة».
الحد من الكاردينالية: يجب أن تستخدم المقاييس التي تحتوي على «مسار» نمط «http». (وليس عنوان URL الكامل).
أخذ العينات المنطقية - في صورة أثر ؛ في المقاييس - لا user_id.
تحرير الخصائص ('الخدمة. النسخة ') مفيدة لمقارنة الإصدارات القديمة/الجديدة.

8) التحجيم و HA

بروميثيوس - رأسياً وبهدف الكشط:
  • يقوم اثنان من Prometheus (A/B) بكشط نفس الأهداف (يتم تكرار تنبيهات HA →).
  • ثانوس: Sidecar لكل Prometheus و Store + Query للاستفسارات العالمية والتخزين طويل الأجل (S3/GCS).
  • البديل: Cortex/Mimir (الكتابة عن بعد، الإيجارات المتعددة، القياس الأفقي).
الكتابة عن بعد (مثال):
yaml remote_write:
- url: https://mimir. example. com/api/v1/push basic_auth: { username: tenantA, password: $MIMIR_TOKEN }
الاحتفاظ المحلي بـ TSDB:
yaml
--storage. tsdb. retention. time=15d
--storage. tsdb. max-block-duration=2h

9) جرافانا: لوحات القيادة، التنبيهات، الشروح

لوحات القيادة القياسية:

1. نظرة عامة على المنصة (SLO/RED، خطأ - ميزانية).

2. واجهة برمجة التطبيقات حسب الطريق (RPS/5xx/p95، المقارنة «نسخة»).

3. K8s العنقود/العقد (مستوى التحكم، التشبع).

4. DB/Cache/Queues (lag/locks/hit rato/backlog).

5. لكل إصدار (قبل/بعد، إصدار شروح من CI).

تنبيه Grafana: المشغلات على PromQL، التناوب عند الطلب، «نوافذ إطلاق» الأوقات الصامتة.

الشروح: تضيف CI حدث إصدار مع صورة «التزام». ، إشارة إلى خط الأنابيب.

10) Kubernetes: ماذا تقيس

Control-plane: 'apiserver _ request _ total', etcd leader/fsync, culter latency.
أعباء العمل: إعادة التشغيل، «الحاوية _ cpu _ cfs _ chottled _ seconds _ total»، OOM، انتهاكات معلقة/مطرودة، PDB.
الشبكة: قطرات، وصلة، أخطاء «kube-proxy».
الحصص/الحدود: الطلبات مقابل الحدود، HPA/VPA، تشبع العقدة.

11) DB/المخابئ/قوائم الانتظار: الإشارات الرئيسية

PostgreSQL/MySQL: «الاتصالات»، «الأقفال»، «الجمود _ الكلي»، «xact _ commission/rollback»، تأخر النسخ.
Redis: نسبة الضرب، «الإخلاء»، الكمون «الفوري _ العمليات _ في الثانية».
كافكا/RabbitMQ: تأخر المستهلك، غير معبأ، ISR، استخدام القرص.

أمثلة على PromQL:
promql
Queue backlog sum by (topic) (kafka_consumergroup_lag)> 1000

Postgres replication lag max(pg_replication_lag_seconds) > 2

12) السلامة وتعدد الحيازات

RBAC إلى Prometheus/Grafana، datasource-permishens.
سلسلة TLS/mTLS على الدخول/بين المكونات.
عزل المستأجر: بروميثيوس منفصل أو علامة المستأجر في كورتكس/ميمير ؛ وحدود الطلب.
الأسرار في التنبيهات/الإشعارات - ممنوعة (استخدم معرف التذكرة، وليس PII).

13) التكامل مع الإطلاقات والتراجع التلقائي

قواعد SLO → AnalysisTemplate (Argo Rollouts) أو CI-gate.
عندما يتم تشغيل تنبيهات الحرق - توقف مؤقتًا/تراجع الكناري ؛ في السجل/الشرح - وصلة بالإصدار.
مقارنة النسخة المستقرة والنسخة الكنارية عن طريق التسمية «نسخة».

14) الأخطاء النموذجية (الأنماط المضادة)

كاردينالية الملصقات غير المنضبطة (user_id، url. مفاتيح كاملة ودينامية).
اخلطي الحث والمرحلة في نفس المجموعة بدون «env» label.
قياس فقط بدون RED/USE ؛ بدون p95/p99 histograms.
تنبيهات على الأجهزة دون ربط SLO → الضوضاء.
عدم وجود قواعد تسجيل → الطلبات «الثقيلة» في حوادث الإنتاج.
لا توجد شروح للإصدار → من الصعب مقارنة التغيرات والتدهور.

15) قائمة التنفيذ المرجعية (0-45 يوما)

0-10 أيام

مصدرو العقدة/الكوب/الدولة/المستشارون ؛ '/المقاييس 'في الخدمات.
لوحات القيادة الأساسية RED/USE ؛ دلاء النسيج القياسية.
تضمين شروح الإصدار من CI.

11-25 يومًا

) أ (تسجيل القواعد المتعلقة بالمبادرة ؛ إنذارات الحرق متعددة النوافذ.
HA Prometheus (كشط مزدوج)، نسخة احتياطية من تكوينات GitOps.
Alertmanager: الطرق/الوضع الهادئ/التناوب عند الطلب.

26-45 يومًا

الكتابة عن بعد في Thanos/Cortex/Mimir، التخزين طويل الأجل.
تحسين الكاردينالية، حدود السلسلة، الطلبات.
إصدارات بوابات SLO وتكامل التراجع التلقائي.

16) مقاييس النضج

تغطية RED/USE للخدمات الرئيسية ≥ 95٪.
متوسط الوقت لأداء PromQL «الثقيل» <2 s (p95) بسبب قواعد التسجيل.
نسبة التنبيهات المفيدة/الصاخبة هي> 3:1.
الكاردينالية تحت السيطرة: <10 مليون دفعة نشطة لكل مجموعة، بدون مسامير.
100٪ من الإطلاقات مشروحة في غرافانا والمقاييس المترابطة قبل/بعد.

17) مقتطفات مفيدة

مقارنة مستقرة مقابل الكناري حسب الإصدار

promql histogram_quantile(0. 95,
sum by (le, version) (rate(http_request_duration_seconds_bucket{version=~"stable    canary"}[5m]))
)

5xx أخطاء حسب الطريق

promql topk(5,
sum by (route) (rate(http_requests_total{status=~"5.."}[5m]))
)

تشبع وحدة المعالجة المركزية بالحاوية

promql rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1

علاقة المقاييس بالمسارات (تمكين النماذج)

promql sum (rate (http_request_duration_seconds_bucket[5m])) by (le) # clickable to the track

18)

Prometheus + Grafana هو المعيار الفعلي للمقاييس. فوز الدلالات والانضباط: RED/USE، الملصقات الأنيقة، histograms لـ SLO، قواعد التسجيل وتنبيهات SLO. أضف HA والتخزين طويل الأجل، وشروح الإصدار والتكامل مع التراجع التلقائي - ولديك حلقة مترية سريعة وقابلة للتطوير واقتصادية تساعدك على اتخاذ قرارات في المبيعات.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

Telegram
@Gamble_GC
بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.