GH GambleHub

मेट्रिक्स संग्रह: प्रोमेथियस, ग्राफाना

मेट्रिक्स संग्रह: प्रोमेथियस, ग्राफाना

1) उद्देश्य और फ्रेम

मेट्रिक्स लूप का कार्य मज़बूती से समय श्रृंखला को इकट्ठा करना और स्टोर करना है, आरसीए, एसएलओ अलर्ट और समझने योग्य डैशबोर्ड के लिए तेज PromQL देना है। मूल जोड़ी: प्रोमेथियस (स्क्रेप → स्टोर → क्वेरी) और ग्राफाना (दृश्य, अलर्ट, रिलीज एनोटेशन)। लंबे भंडारण और वैश्विक क्वेरी के लिए - थानोस/कॉर्टेक्स/मिमिर।

2) डेटा मॉडल और शब्दार्थ

श्रृंखला = मीट्रिक नाम + लेबल का सेट (कुंजी = मूल्य)।

प्रकार: काउंटर, गेज, हिस्टोग्राम, सारांश (प्रोड में - अधिक बार हिस्टोग्राम)।

शब्दार्थ:
  • RED (API): 'दर', 'त्रुटियां', 'अवधि' (हिस्टोग्राम)।
  • उपयोग (ресурсы): उपयोग, संतृप्ति, त्रुटियां (सीपीयू/रैम/डिस्क/नेट)।
  • नामकरण: 'namespace _ subsystem _ metric _ unit' (उदाहरण के लिए, 'http _ server _ requests _ tomal', 'db _ connections _ cornation').

एंटी-कार्डिनैलिटी: विभिन्न लेबल मानों को कम करें (लेबल में नहीं)।

3) एक्सपोज़र और सर्विस डिस्कवरी

निर्यातक: node_exporter, kube-state-metrics, cAdvisor, DB/Queues (postgres_exporter, redis_exporter, kafka_exporter)।

देशी सेवाएं: क्लाइंट लाइब्रेरी (गो/जावा/नोड/पायथन) → '/मैट्रिक्स '।

सेवा डिस्कवरी: Kubernetes, EC2/ASG, Consul, स्थिर फ़ाइलें।

बेसिक 'प्रोमेथियस। 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) हिस्टोग्राम और विलंबता

अपने एसएलओ के लिए स्पष्ट बाल्टी का उपयोग करें:
  • वेब/एपीआई: '[10ms, 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) एसएलओ और अलर्ट (मल्टी-विंडो बर्न)

एसएलओ 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) लेबल-स्वच्छता और अर्थव्यवस्था

लेबल नाम स्थिर और मानकीकृत हैं: 'सेवा', 'एनवी', 'क्षेत्र', 'मार्ग', 'कोड', 'संस्करण'।

कार्डिनैलिटी को सीमित करें: 'रूट' वाले मेट्रिक्स को 'http' पैटर्न का उपयोग करना चाहिए। मार्ग '(पूर्ण URL नहीं)।

तर्क नमूना - ट्रेस में; मेट्रिक्स में - नहीं।

जारी गुण ('सेवा। संस्करण ') पुराने/नए संस्करणों की तुलना करने के लिए उपयोगी हैं।

8) स्केलिंग और एचए

प्रोमेथियस - लंबवत और स्क्रैप-लक्ष्य द्वारा:
  • दो प्रोमेथियस (ए/बी) एक ही लक्ष्य को परिमार्जित करते हैं (HA → अलर्ट दोहराए जाते हैं)।
  • थानोस: प्रत्येक प्रोमेथियस के लिए सिडकार, वैश्विक प्रश्नों के लिए स्टोर + क्वेरी और दीर्घकालिक भंडारण (S3/GCS)।
  • वैकल्पिक: कॉर्टेक्स/मिमिर (रिमोट-राइट, मल्टी-टेनेंसी, क्षैतिज स्केलिंग)।
रिमोट राइट (उदाहरण):
yaml remote_write:
- url: https://mimir. example. com/api/v1/push basic_auth: { username: tenantA, password: $MIMIR_TOKEN }
स्थानीय टीएसडीबी प्रतिधारण:
yaml
--storage. tsdb. retention. time=15d
--storage. tsdb. max-block-duration=2h

9) ग्राफाना: डैशबोर्ड, अलर्ट, एनोटेशन

मानक डैशबोर्ड:

1. प्लेटफ़ॉर्म अवलोकन (SLO/RED, त्रुटि-बजट)।

2. रूट द्वारा एपीआई (RPS/5xx/p95, तुलना 'संस्करण')।

3. K8s क्लस्टर/नोड्स (नियंत्रण-विमान, संतृप्ति)।

4. डीबी/कैश/कतारें (लैग/लॉक/हिट अनुपात/बैकलॉग)।

5. प्रति-रिलीज़ (इससे पहले/बाद में, सीआई से एनोटेशन जारी करें)।

Grafana Alerting: PromQL पर ट्रिगर, ऑन-कॉल रोटेशन, म्यूट-टाइम्स "रिलीज़विंडो"।

एनोटेशन: सीआई 'कमिट', 'इमेज के साथ एक रिलीज इवेंट जोड़ ता है। टैग ', पाइपलाइन के लिए एक संदर्भ।

10) कुबर्नेट्स: क्या मापना है

नियंत्रण-विमानः 'apiserver _ requess _ total', etcd लीडर/fsync, शेड्यूलर विलंबता।

वर्कलोड: पुनः प्रारंभ, 'कंटेनर _ cpu _ cfs _ throttled _ seconds _ total', OOM, पेंडिंग/बेदखल, PDB उल्लंघन.

नेटवर्क: ड्रॉप, कॉनट्रैक, 'क्यूब-प्रॉक्सी' त्रुटियां।

कोटा/सीमा: अनुरोध बनाम सीमा, एचपीए/वीपीए, नोड संतृप्ति।

11) डीबी/कैश/कतारें: प्रमुख संकेत

PostgreSQL/MySQL: 'कनेक्शन', 'लॉक', 'डेडलॉक _ टोटल', 'xact _ commit/rolback', प्रतिकृति लैग।

रेडिस: हिट अनुपात, 'निष्कासन', विलंबता 'तात्कालिक _ ops _ per _ sec'।

काफ्का/रैबिटएमक्यू: उपभोक्ता अंतराल, अनकैक्ड, आईएसआर, डिस्क उपयोग।

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 श्रृंखला अंतर्ग्रहण/घटकों के बीच।

किरायेदार अलगाव: कॉर्टेक्स/मिमिर में अलग प्रोमेथियस या किरायेदार-लेबल; श्रृंखला और अनुरोध सीमा।

अलर्ट/सूचनाओं में रहस्य - निषिद्ध (टिकट आईडी का उपयोग करें, पीआईआई नहीं)।

13) रिलीज और ऑटो-रोलबैक के साथ एकीकरण

SLO नियम Template (Argo Rollouts) या CI-गेट।

जब बर्न अलर्ट ट्रिगर किए जाते हैं - ठहराव/रोलबैक कैनरी; लॉग/एनोटेशन में - रिलीज के लिए एक लिंक।

लेबल 'संस्करण' के माध्यम से स्थिर और कैनरी संस्करण की तुलना।

14) विशिष्ट त्रुटियां (विरोधी पैटर्न)

लेबल की अनियंत्रित कार्डिनैलिटी (user_id, url। पूर्ण, गतिशील कुंजी)।

'env' label के बिना एक ही क्लस्टर में प्रोड और स्टेज मिलाएं।

केवल RED/USE के बिना गेज; p95/p99 हिस्टोग्राम के बिना।

SLO → शोर के लिए बाध्यकारी बिना हार्डवेयर पर अलर्ट।

रिकॉर्डिंग नियमों की कमी - उत्पादन की घटनाओं में "भारी" अनुरोध।

कोई रिलीज एनोटेशन नहीं हैं - परिवर्तन और गिरावट की तुलना करना मुश्किल है।

15) कार्यान्वयन चेकलिस्ट (0-45 दिन)

0-10 दिन

नोड/क्यूब-स्टेट/सीएडवाइजर निर्यातकों; '/metrics 'सेवाओं में।

बेसिक RED/USE डैशबोर्ड; मानक हिस्टोग्राम बाल्टी।

सीआई से रिलीज एनोटेशन शामिल करें।

11-25 दिन

SLI के लिए रिकॉर्डिंग नियम; मल्टी-विंडो बर्न अलर्ट।

HA Prometheus (डबल स्क्रैप), GitOps कॉन्फ़िग का बैकअप।

Alertmanager: मार्ग/शांत मोड/ऑन-कॉल रोटेशन।

26-45 दिन

थानोस/कॉर्टेक्स/मिमिर में रिमोट-राइट, दीर्घकालिक भंडारण।

कार्डिनैलिटी अनुकूलन, श्रृंखला सीमा, अनुरोध।

एसएलओ-गेटिंग रिलीज़ और ऑटो-रोलबैक एकीकरण।

16) परिपक्वता मैट्रिक्स

प्रमुख सेवाओं के लिए RED/USE कवरेज ≥ 95%

रिकॉर्डिंग नियमों के कारण "भारी" PromQL <2 s (p95) करने का औसत समय।

उपयोगी/शोर अलर्ट का अनुपात> 3: 1 है।

नियंत्रण में कार्डिनैलिटी: <10M सक्रिय बैच प्रति क्लस्टर, कोई स्पाइक्स नहीं।

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

ट्रैक करने के लिए मेट्रिक्स संबंध (Exemplars सक्षम)

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

18) निष्कर्ष

Prometheus + Grafana मेट्रिक्स के लिए वास्तविक मानक है। शब्दार्थ और अनुशासन जीत: RED/USE, साफ लेबल, SLO के लिए हिस्टोग्राम, रिकॉर्डिंग नियम और SLO अलर्ट। एचए और दीर्घकालिक भंडारण, ऑटो-रोलबैक के साथ एनोटेशन और एकीकरण जोड़ें - और आपके पास एक तेज, स्केलेबल और किफायती मीट्रिक लूप है जो आपको बिक्री में निर्णय लेने में मदद करता है।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।