GH GambleHub

مجموعه معیارها: پرومتئوس، گرافانا

مجموعه معیارها: پرومتئوس، گرافانا

1) هدف و قاب

وظیفه حلقه متریک این است که به طور قابل اعتماد جمع آوری و ذخیره سری زمانی، PromQL سریع برای RCA، هشدار SLO و داشبورد قابل فهم است. جفت پایه: Prometheus (scrape → store → query) و Grafana (تجسم، هشدار، حاشیه نویسی انتشار). برای ذخیره سازی طولانی و پرس و جو جهانی - Thanos/Cortex/Mimir.

2) مدل داده ها و معانی

سری = نام متریک + مجموعه ای از برچسب ها (کلید = مقدار).
انواع: شمارنده، سنج، هیستوگرام، خلاصه (در prod - اغلب هیستوگرام).

معانی:
  • RED (API): «نرخ»، «خطاها»، «مدت زمان» (هیستوگرام).
  • USE (ресурсы): استفاده، اشباع، خطاها (CPU/RAM/دیسک/خالص).
  • نامگذاری: 'namespace _ subsystem _ metric _ unit' (به عنوان مثال، 'http _ server _ requests _ total'، 'db _ connections _ current').

ضد کاردینالیتی: مقادیر مختلف برچسب را به حداقل برسانید (بدون user_id request_id در برچسب).

3) قرار گرفتن در معرض و کشف خدمات

صادر کنندگان: ، kube-state-metrics، cAdvisor، DB/صف ( ، ،.
خدمات بومی: کتابخانههای کلاینت (Go/Java/Node/Python) → '/metrics '.
کشف سرویس: Kubernetes، 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) هیستوگرام و تاخیر

از سطل های صریح برای SLO های خود استفاده کنید:
  • وب/API: [10 ms، 25 50 100 200 400 800 1600]
  • پرداخت/پرداخت: اضافه کردن دم به 5-10S.
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.
خواص انتشار ("سرویس. version ") برای مقایسه نسخه های قدیمی/جدید مفید هستند.

8) پوسته پوسته شدن و HA

Prometheus - به صورت عمودی و با خراش دادن هدف:
  • دو Prometheus (A/B) اهداف مشابه را خراب می کنند (HA → هشدارها تکرار می شوند).
  • Thanos: Sidecar به هر Prometheus، Store + پرس و جو برای نمایش داده های جهانی و ذخیره سازی طولانی مدت (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) Grafana: داشبورد، هشدار، حاشیه نویسی

داشبورد استاندارد:

1. بررسی اجمالی پلت فرم (SLO/RED، خطا بودجه).

2. API توسط مسیر (RPS/5xx/p95، مقایسه 'نسخه').

3. K8s خوشه/گره (کنترل صفحه، اشباع).

4. DB/کش/صف (تاخیر/قفل/نسبت ضربه/backlog).

5. Per-Release (قبل/بعد، حاشیه نویسی انتشار از CI).

هشدار Grafana: باعث PromQL، چرخش در تماس، بی صدا بار «پنجره انتشار».

حاشیه نویسی: CI یک رویداد انتشار را با «commit»، «image» اضافه می کند. برچسب '، اشاره به خط لوله.

10) Kubernetes: چه برای اندازه گیری

صفحه کنترل: 'apiserver _ request _ total'، رهبر etcd/fsync، تأخیر زمانبندی.
بارهای کاری: راه اندازی مجدد، 'container _ cpu _ cfs _ throttled _ seconds _ total'، OOM، در انتظار/اخراج، نقض PDB.
شبکه: قطره، اتصال، خطاهای 'kube-proxy'.
سهمیه ها/محدودیت ها: درخواست ها در مقابل محدودیت ها، HPA/VPA، اشباع گره.

11) DB/کش/صف: سیگنال های کلیدی

PostgreSQL/MySQL: «اتصالات»، «قفل»، «بن بست _ کل»، «xact _ commit/rollback»، تاخیر تکرار.
Redis: نسبت ضربه، 'اخراج'، تاخیر 'فوری _ ops _ per _ sec'.
Kafka/RabbitMQ: تاخیر مصرف کننده، unacked، 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, data source-permishens.
زنجیره TLS/mTLS در ورود/بین اجزاء.

جداسازی مستاجر: Prometheus یا برچسب مستاجر در Cortex/Mimir جداگانه ؛ محدودیت های سری و درخواست

اسرار در هشدارها/اطلاعیه ها - ممنوع است (استفاده از شناسه بلیط، نه PII).

13) ادغام با انتشار و بازگشت خودکار

قوانین SLO → AnalysisTemplate (Argo Rollouts) یا CI-gate.
هنگامی که هشدار سوختگی باعث - مکث/عقب قناری; در ورود به سیستم/حاشیه نویسی - یک لینک به انتشار.
مقایسه نسخه پایدار و قناری از طریق برچسب «نسخه».

14) خطاهای معمول (ضد الگوهای)

کاردینالیتی کنترل نشده برچسب ها (user_id، URL. کلیدهای دینامیک و کامل)

ضرب و مرحله را در همان خوشه بدون برچسب 'env' مخلوط کنید.
فقط سنج بدون RED/استفاده ؛ بدون هیستوگرام p95/p99.
هشدار در سخت افزار بدون اتصال به SLO → سر و صدا.
فقدان قوانین ضبط → درخواست های «سنگین» در حوادث تولید.
هیچ حاشیه نویسی انتشار → آن دشوار است برای مقایسه تغییرات و تخریب وجود دارد.

15) چک لیست پیاده سازی (0-45 روز)

0-10 روز

صادر کنندگان گره/kube-state/cAdvisor ؛ «/metrics »در خدمات.
داشبورد اصلی RED/USE ؛ سطل هیستوگرام استاندارد.
شامل حاشیه نویسی انتشار از CI.

11-25 روز

قوانین ضبط برای SLI ؛ هشدار سوختگی چند پنجره ای

HA Prometheus (خراش دو)، پشتیبان گیری از تنظیمات GitOps.
Alertmanager: مسیرها/حالت آرام/چرخش در تماس.

26-45 روز

نوشتن از راه دور در Thanos/Cortex/Mimir، ذخیره سازی طولانی مدت.
بهینه سازی کاردینالیتی، محدودیت های سری، درخواست ها.
نسخه های SLO-Gating و ادغام خودکار برگشت.

16) معیارهای بلوغ

پوشش RED/USE برای خدمات کلیدی ≥ 95٪.
متوسط زمان برای انجام «سنگین» PromQL <2 s (p95) با توجه به قوانین ضبط.
نسبت هشدارهای مفید/پر سر و صدا> 3:1 است.
کاردینالیتی تحت کنترل: <10M دسته فعال در هر خوشه، بدون سنبله.
100٪ از نسخه ها در Grafana و معیارهای مرتبط قبل/بعد حاشیه نویسی شده اند.

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]))
)

اشباع CPU ظرف

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، برچسب های شسته و رفته، هیستوگرام برای SLO، قوانین ضبط و هشدارهای SLO. HA و ذخیره سازی طولانی مدت، حاشیه نویسی انتشار و ادغام با بازگشت خودکار را اضافه کنید - و شما یک حلقه متریک سریع، مقیاس پذیر و اقتصادی دارید که به شما در تصمیم گیری در فروش کمک می کند.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.