Logo GH

אוסף Metrics: Prometheus, Grafana

אוסף Metrics: Prometheus, Grafana

1) מטרה ומסגרת

משימת לולאת המדדים היא לאסוף ולאחסן באופן אמין סדרות זמן, לתת PromQL מהיר עבור RCA, התראות SLO ולוחות מחוונים מובנים. זוג בסיסי: Prometheus (groupe # store = שאילתה) ו-Grafana (הדמיה, התראות, שחרור אנוטציות). לאחסון ארוך ושאילתה גלובלית - תאנוס/קורטקס/מימיר.

2) מודל נתונים וסמנטיקה

סדרה = שם מטרי + קבוצה של תוויות (מפתח = ערך).
סוגים: נגד, מד, היסטוגרמה, סיכום (בתדירות גבוהה יותר היסטוגרמה).

סמנטיקה:
  • אדום (API): ”קצב”, ”טעויות”, ”משך” (היסטוגרמות).
  • שימוש (EXY): שימוש, רוויה, שגיאות (CPU/RAM/Disk/Net).
  • שם: ”namespace _ subsystem _ metric _ unit” (לדוגמה, ”http _ server _ positions _ total”, ”db _ conferences _ curner”).

אנטי-קרדינליות: למזער ערכים שונים (ללא user_id request_id בתווית).

3) חשיפה וגילוי שירות

יצואנים: , kube-state-metrics, Castory, DB/Queues ( , .
שירותים מקומיים: ספריות לקוחות (Go/Java/Node/Python).
תגלית שירות: קוברנטס, EC2/ASG, קונסול, קבצים סטטיים.

פרומתאוס בסיסי. 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.
פרומQL 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) כללי הקלטה

הפחתת בקשות כבדות, תקן SI.

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”, ”אזור”, ”מסלול”, ”קוד”, ”גירסה”.
הגבל את החשבון: Metrics עם ”מסלול” חייב להשתמש בתבנית http. מסלול '(לא הכתובת המלאה).
דגימה לוגית - באיתור; במדדים - אין user_id.
שחרר מאפיינים ('שירות. גרסה ') שימושית להשוואת גרסאות ישנות/חדשות.

8) גדלים ו ־ HA

פרומתאוס - אנכית ועל ידי שריטה-מטרה:
  • שתי התראות של פרומתאוס (A/B) מגרדות את אותן מטרות (HA....
  • תאנוס: סידקר לכל פרומתאוס, סטור + שאילתה לשאילתות גלובליות ואחסון ארוך טווח (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. API על ידי Route (RPS/5xx/p95, השוואה ”גרסה”).

3. K8s Cluster/Nodes (מישור בקרה, רוויה).

4. DB/Cache/תורים (lag/locks/hit ratio/backlog).

5. Per-Release (לפני/אחרי, לשחרר הערות מ-CI).

Grafana Alerting: מפעיל על PromQL, סיבוב בכוננות, אילם-times ”לשחרר חלונות”.

אנוטציות: CI מוסיף אירוע שחרור עם ”להתחייב”, תמונה. תג, התייחסות לצינור.

10) קוברנטס: מה למדוד

מישור בקרה: ”apiserver _ request _ total”, etcd leader/fsync, latency לוחות זמנים.
עומסי עבודה: הפעלות מחדש, 'container _ cpu _ cfs _ expottled _ seconds _ total', OOM, Pending/Evicted, הפרות PDB.
רשת: טיפות, קונטראק, שגיאות ”kube-proxy”.
מכסות/גבולות: בקשות נגד גבולות, HPA/VPA, רווית צומת.

11) DB/Caps/תורים: אותות מפתח

PostGreSQL/MySQL: ”חיבורים”, ”מנעולים”, ”deatlocks _ total”, ”xact _ direct/rollback”, dig שכפול.
רדיס: יחס פגיעה, 'פינוי', latency 'instanious _ ops _ per _ sec.
Kafka/RabbitMQ: עיכוב צרכני, לא מאובטח, ISR, שימוש בדיסק.

דוגמאות ל ־ PromQL:
promql
Queue backlog sum by (topic) (kafka_consumergroup_lag)> 1000

Postgres replication lag max(pg_replication_lag_seconds) > 2

12) בטיחות וריבוי דירות

RBAC לפרומתאוס/Grafana, datasource-presishens.
שרשרת TLS/mTLS בחדירה/בין רכיבים.
בידוד דייר: הפרדת פרומתאוס או תווית דייר בקורטקס/מימיר; סדרות ומגבלות בקשה.
סודות בהתראות/הודעות - אסורים (להשתמש בזיהוי כרטיס, לא PII).

13) אינטגרציה עם שחרורים וגלגולים אוטומטיים

SLO Rollouts (ארגו Rollouts) או CI-Gate.
כאשר מופעלות התראות כוויות - הפוגה/רולבק קנרית; ברישום/אנוטציה - קישור לשחרור.
השוואה של גרסה יציבה וקנרית באמצעות התווית ”גירסה”.

14) שגיאות אופייניות (אנטי דפוסים)

קרדינליות בלתי מבוקרת של תוויות (user_id, url. מלא, מפתחות דינמיים).
מערבבים פרוד ובמה באותו אשכול בלי הלבל.
רק מד ללא RED/USE; בלי היסטוגרמות p95/p99.
התראות על חומרה בלי להתחייב לרעש SLO.
היעדר כללי הקלטה * בקשות ”כבדות” בתקריות הפקה.
אין הערות שחרור = קשה להשוות שינויים והשפלה.

15) רשימת יישומים (0-45 ימים)

0-10 ימים

יצואני Node/Kube-state/CAdvisor; '/מדדים 'בשירותים.
לוחות מחוונים בסיסיים של RED/USE; דליי היסטוגרמה סטנדרטיים.
כולל הערות שחרור מהמודיע.

11-25 ימים

כללי הקלטה עבור SLI; התראות כוויות רב חלונות.
HA Prometheus (שריטה כפולה), גיבוי של תצורות GitOps.
התראה: מסלולים/מצב שקט/סיבוב בכוננות.

26-45 ימים

כתיבה מרחוק בתאנוס/קורטקס/מימיר, אחסון לטווח ארוך.
אופטימיזציה של הקרדינליות, גבולות הסדרה, בקשות.
SLO-Gating משחרר ואינטגרציה אוטומטית.

16) מדדי בגרות

כיסוי אדום/שימוש עבור שירותי מפתח 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) מסקנה

פרומתאוס + גראפנה הוא הסטנדרט דה פקטו למדדים. סמנטיקה ודיסציפלינה מנצחים: RED/USE, תוויות מסודרות, היסטוגרמות עבור SLO, כללי הקלטה והתראות SLO. הוספת HA ואחסון לטווח ארוך, שחרור אנוטציות ואינטגרציה עם גלגולים אוטומטיים - ויש לך לולאה מטרית מהירה, מדשדשת וחסכונית שעוזרת לך לקבל החלטות במכירות.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.