GH GambleHub

אוסף 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

צרו קשר

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

Telegram
@Gamble_GC
התחלת אינטגרציה

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

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

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