अवलोकन स्टैक
1) आपको एक अवलोकन स्टैक की आवश्यकता क्यों है
रैपिड आरसीए और कम एमटीटीआर: लक्षण से मिनटों में कारण।
एसएलओ प्रबंधन: त्रुटियों/विलंबता का माप, गलत बजट द्वारा सतर्क।
रिलीज नियंत्रण: कैनरी गणना, मैट्रिक्स द्वारा ऑटो-रोलबैक।
सुरक्षा और लेखा परीक्षा: पहुंच मार्ग, विसंगतियाँ, कानूनी पकड़।
FinOps पारदर्शिता: भंडारण/अनुरोध की लागत, लागत-प्रति-SLO।
कार्यप्रणाली: गोल्डन सिग्नल (विलंबता/यातायात/त्रुटियां/संतृप्ति), RED, USE।
2) बेसिक स्टैक आर्किटेक्चर
परत द्वारा घटक
संग्रह/एजेंट: निर्यातक, प्रोमेल/फ्लेंट बिट, ओटेल एसडीके/ऑटो- , ब्लैकबॉक्स-प्रोब।
Шина/ingest: प्रोमेथियस remote_write → मिर/थानोस, लोकी वितरक/इंगेस्टर्स, टेम्पो/जैगर इंगेस्टर्स।
स्टोरेज: ऑब्जेक्ट S3/GCS/MinIO (लंबी ठंड), एसएसडी (गर्म पंक्तियाँ)।
प्रश्न/दृश्य: ग्राफाना (पैनल, एसएलओ विजेट), किबाना (यदि ईएलके)।
प्रबंधन: Alertmanager/Graphana अलर्ट, सेवा कैटलॉग, RBAC, गुप्त प्रबंधक।
तैनाती पैटर्न
प्रबंधित (ग्राफाना क्लाउड/क्लाउड सेवाएं) - वॉल्यूम पर तेज और अधिक महंगी।
K8s में स्व-होस्ट - पूर्ण नियंत्रण, संचालन और FinOps की आवश्यकता है।
3) डेटा मानक: एकीकृत "अवलोकन योजना"
3. 1 मेट्रिक्स (प्रोमेथियस/ओपनमेट्रिक्स)
आवश्यक लेबल: 'एनवी', 'क्षेत्र', 'क्लस्टर', 'नेमस्पेस', 'सेवा', 'संस्करण', 'किरायेदार' (यदि बहु-किरायेदार), 'समापन बिंदु'।
नामकरण: 'स्नेक _ केस', प्रत्यय '_ कुल', '_ सेकंड', '_ बाइट्स'।
बार चार्ट: फिक्स्ड 'बाल्टी' (एसएलओ-उन्मुख)।
कार्डिनैलिटी: 'user _ id', 'request _ id' को लेबल में शामिल नहीं करें.
3. 2 लॉग
प्रारूप: JSON; आवश्यक क्षेत्रों 'ts', 'स्तर', 'सेवा', 'env', 'trace _ id', 'span _ id', 'msg'।
पीआईआई: एजेंट पर मास्किंग (पैन, टोकन, ई-मेल, आदि)।
लोकी लेबल: केवल कम कार्डिनैलिटी ('ऐप', 'नेमस्पेस', 'लेवल', 'किरायेदार')।
3. 3 ट्रैक
ओटेल शब्दार्थ: 'सेवा। नाम ',' तैनाती। पर्यावरण ',' db। तंत्र ',' http। '
नमूना: p99 लक्ष्य पथ 'हमेशा _ ऑन '/टेल-सैंपलिंग हैं, बाकी' माता-पिता/अनुपात 'है।
एम्बेडिंग आईडी: फ्लिक 'ट्रेस _ id/span _ id' लॉग और मेट्रिक्स (लेबल/फील्ड) में।
4) एम-एल-टी सहसंबंध (मेट्रिक्स/लॉग/ट्रेस)
अलर्ट ग्राफ (मीट्रिक) से 'ट्रेस _ आईडी' द्वारा फ़िल्टर किए गए लॉग - एक विशिष्ट ट्रेस।
ट्रेस (धीमी अवधि) से, स्पैन अंतराल पर एक विशिष्ट बैकएंड के मैट्रिक्स के लिए एक अनुरोध है।
पैनल में ड्रिलडाउन बटन: "लॉग करने के लिए" और "ट्रेस करने के लिए" चर प्रतिस्थापन ('$ एनवी', '$ सेवा', '$ ट्रेस _ आईडी') के साथ।
5) ओपनटेलीमेट्री कलेक्टर: संदर्भ पाइपलाइन
yaml receivers:
otlp:
protocols: { http: {}, grpc: {} }
prometheus:
config:
scrape_configs:
- job_name: kube-nodes static_configs: [{ targets: ['kubelet:9100'] }]
processors:
batch: {}
memory_limiter: { check_interval: 1s, limit_mib: 512 }
attributes:
actions:
- key: deployment. environment value: ${ENV}
action: insert tail_sampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code: { status_codes: [ERROR] }
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/payments","/login"] }
- name: probabilistic type: probabilistic probabilistic: { sampling_percentage: 10 }
exporters:
otlphttp/mimir: { endpoint: "https://mimir/api/v1/push" }
otlphttp/tempo: { endpoint: "https://tempo/api/traces" }
loki:
endpoint: https://loki/loki/api/v1/push labels:
attributes:
env: "deployment. environment"
service: "service. name"
service:
pipelines:
metrics: { receivers: [prometheus, otlp], processors: [memory_limiter, batch], exporters: [otlphttp/mimir] }
logs: { receivers: [otlp], processors: [batch], exporters: [loki] }
traces: { receivers: [otlp], processors: [memory_limiter, attributes, tail_sampling, batch], exporters: [otlphttp/tempo] }
6) अलर्टिंग: एसएलओ और मल्टी-बर्न
विचार: अलर्ट "सीपीयू> 80%" के स्तर पर नहीं है, बल्कि त्रुटि बजट की खपत पर है।
PromQL टैम्प्लेट्स:promql
5-minute error rate err_ratio_5m =
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m]))
Quick burn (1m window)
(err_ratio_1m / (1 - SLO)) > 14. 4
Slow burn (30m)
(err_ratio_30m / (1 - SLO)) > 2
विलंबता (हिस्टोग्राम):
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
7) डैशबोर्ड: फ़ोल्डर संरचना
00_Overview - मंच: SLO, p95, 5xx%, क्षमता, सक्रिय घटनाएं।
10_Services - सेवाओं द्वारा: RPS, p95/p99, त्रुटियां, रिलीज़ (एनोटेशन)।
20_Infra - K8s/nodes/story/network, आदि, नियंत्रक।
30_DB/Queues - PostgreSQL/Redis/Kafka/RabbitMQ।
40_Edge/DNS/CDN/WAF - इंग्रेस, एलबी, डब्ल्यूएएफ नियम।
50_Synthetic - अपटाइम और हेडलेस स्क्रिप्ट।
60_Cost/FinOps - भंडारण, पूछताछ, गर्म/ठंडा, पूर्वानुमान।
प्रत्येक पटल: विवरण, इकाइयाँ, स्वामी, रनबुक लिंक, ड्रिलडाउन।
8) लॉग: LogQL कार्यशाला
logql
API errors
{app="api", level="error"} = "Exception"
Nginx 5xx in 5 minutes
{app="nginx"} json status=~"5.." count_over_time([5m])
Extract Fields
{app="payments"} json code!="" unwrap duration avg()
9) ट्रैक: TraceQL और ट्रिक्स
सबसे धीमी स्पैन खोजें:
{ service. name = "api" } duration > 500ms
धीमी प्रश्न में धीमा SQL सैंडविच:
{ name = "HTTP GET /order" } child. span. name = "SELECT" & child. duration > 50ms
10) सिंथेटिक्स और अपटाइम
ब्लैकबॉक्स-निर्यातक: HTTP/TCP/TLS/DNS नमूने ≥3 क्षेत्रों/ASN से।
हेडलेस: लॉगिन/अनुसूचित स्क्रिप्ट जमा करें।
कोरम अलर्ट: ट्रिगर अगर क्षेत्रीय ≥2 एक विफलता देखते हैं।
स्थिति पृष्ठ: स्वचालित अद्यतन + मैनुअल टिप्पणियाँ।
11) भंडारण और प्रतिधारण
मेट्रिक्स: गर्म 7-30 दिन (तेज पंक्तियाँ), डाउनसैम्पलिंग/रिकॉर्डिंग नियम, ठंड - वस्तु भंडारण (महीने)।
लॉग: 3-7 दिनों के लिए गर्म, फिर - एक सूचकांक (लोकी चंक स्टोर/ईएलके आईएलएम) के साथ।
निशान: नमूनों के लिए 3-7 दिन 'हमेशा _ ऑन' + दीर्घकालिक भंडारण (पूंछ-नमूना/अस्वीकृत)।
सिफारिशें:- आकार और समय में रोलओवर; अनुरोधों के लिए बजट (कोटा/सीमा)।
- प्रोड/स्टेज और सुरक्षा आंकड़ों के लिए अलग नीतियां।
12) बहु-किरायेदारी और पहुँच
'किरायेदार '/' नेमस्पेस '/स्पेस, इंडेक्स पैटर्न और रिज़ॉल्यूशन द्वारा अलग।
बिलिंग के लिए टैग संसाधन: 'किरायेदार', 'सेवा', 'टीम'।
विशिष्ट टीमों के स्थानों में डैशबोर्ड/अलर्ट आयात करें।
13) सुरक्षा और अनुपालन
टीएलएस/एमटीएलएस एजेंटों से बैकेंड तक, निजी स्वास्थ्य के लिए एचएमएसी।
RBAC को पढ़ ना/लिखना, सभी अनुरोधों और अलर्ट का ऑडिट करना।
किनारे पर पीआईआई संस्करण; लॉग में रहस्यों का निषेध; DSAR/कानूनी पकड़।
अलगाव: संवेदनशील डोमेन के लिए अलग समूह/निम्स्पेस।
14) फिनोप्स: अवलोकन की लागत
हम लेबल और तर्क की कार्डिनैलिटी को कम करते हैं (और अनुरोधों में नहीं)।
महत्वपूर्ण रास्तों के लिए नमूना + लक्ष्य हमेशा ट्रैक
भारी एकत्रीकरण के लिए डाउनसैम्पलिंग/रिकॉर्डिंग नियम।
ठंडी वस्तु तक दुर्लभ पहुंच का संग्रह।
Метрики: 'भंडारण _ cost _ gb _ day', 'query _ cost _ hour', 'cost _ per _ rps', 'cost _ per _ 9'।
15) सीआई/सीडी और अवलोकन परीक्षण
सीआई में लिंटिंग मैट्रिक्स/लॉग: कार्डिनैलिटी के "विस्फोट" पर प्रतिबंध, हिस्टोग्राम/इकाइयों का सत्यापन।
अवलोकन अनुबंध परीक्षण: मिडिलवेयर में आवश्यक मैट्रिक्स/लॉग फ़ील्ड, 'ट्रेस _ आईडी'।
कैनरी: रेखांकन, एसएलओ-ऑटो-रोलबैक पर रिलीज की एनोटेशन।
16) उदाहरण: त्वरित प्रश्न
त्रुटि से शीर्ष समापन बिंदु:promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
सीपीयू थ्रॉटलिंग:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
काफ्का अंतराल:
promql max by (topic, group) (kafka_consumergroup_lag)
लॉग से लेकर ट्रैक तक (लोकी → टेम्पो): टेम्पो यूआई/डैशबोर्ड के लिए 'ट्रेस _ आईडीएस' पास करें।
17) स्टैक क्वालिटी: चेकलिस्ट
- सहमत मीट्रिक/लॉग/ट्रेस योजनाएं और इकाइयाँ।
- लॉग और मेट्रिक्स में 'ट्रेस _ आईडी', पैनल से ड्रिलडाउन।
- मल्टी-बर्न एसएलओ अलर्ट फ्लैपिंग (कोरम/मल्टी-विंडो) के बिना।
- डाउनसैम्पलिंग, अनुरोध कोटा, चरण/सीमा सीमा।
- प्रतिधारण और भंडारण कक्षाएं प्रलेखित और लागू हैं।
- आरबीएसी/ऑडिट/पीआईआई संशोधन शामिल हैं।
- डैशबोर्ड: मालिक, रनबुक, ≤2 -3 स्क्रीन, त्वरित प्रतिक्रिया।
- FinOps-डैशबोर्ड (वॉल्यूम, लागत, शीर्ष वार्ताकार)।
18) कार्यान्वयन योजना (3 पुनरावृत्ति)
1. एमवीपी (2 सप्ताह): Prometheus→Mimir, लोकी, टेम्पो; ओटेल कलेक्टर; बुनियादी डैशबोर्ड और एसएलओ अलर्ट; ब्लैकबॉक्स के नमूने।
2. स्केल (3-4 सप्ताह): टेल-सैंपलिंग, डाउनसैम्पलिंग, मल्टी-रीजन इनगेस्ट, आरबीएसी/स्पेस, फिनोप्स-डैशबोर्ड।
3. प्रो (4 + सप्ताह): एसएलओ पर ऑटो-रोलबैक, प्रमुख रास्तों के हेडलेस सिंथेटिक्स, लीगल होल्ड, एसएलओ पोर्टफोलियो और रिपोर्टिंग।
19) एंटी-पैटर्न
"एसएलओ के बिना सुंदर ग्राफिक्स" - कोई कार्रवाई - कोई लाभ नहीं।
उच्च कार्डिनैलिटी लेबल ('उपयोगकर्ता _ आईडी', 'अनुरोध _ आईडी') - मेमोरी और लागत का एक विस्फोट।
JSON के बिना लॉग और 'ट्रेस _ id' के बिना - कोई सहसंबंध नहीं।
लक्षणों के बजाय संसाधन अलर्ट - शोर और ऑन-कॉल बर्नआउट।
प्रतिधारण नीतियों की कमी - अनियंत्रित लागत बढ़ जाती है।
20) मिनी-एफएक्यू
क्या चुनें: लोकी या ईएलके?
जटिल खोज/पहलुओं के लिए ईएलके; लोकी ग्रेप जैसे परिदृश्यों के लिए सस्ता और तेज है। एक संकर का उपयोग अक्सर किया जाता है।
क्या सभी को पटरियों की जरूरत है?
हां, कम से कम पूंछ-नमूना के साथ प्रमुख रास्तों (लॉगिन, चेकआउट, भुगतान) पर - यह नाटकीय रूप से आरसीए को गति देता है।
खरोंच से कैसे शुरू करें?
ओटेल कलेक्टर मिमिर/लोकी/टेम्पो बेसिक एसएलओ और ब्लैकबॉक्स नमूने - फिर डैशबोर्ड और बर्न अलर्ट।
कुल
अवलोकन स्टैक असमान उपकरणों का एक सेट नहीं है, बल्कि एक सुसंगत प्रणाली है: समान डेटा मानक - एम-एल-टी सहसंबंध एसएलओ अलर्ट और सिंथेटिक्स सुरक्षा और फिनोप्स। स्कीमैटिक्स, लेबल अनुशासन और प्रतिधारण पर कब्जा करें, ओटीएल को जोड़ें, ड्रिलडाउन और ऑटो-रोलबैक जोड़ें - और आपको एक समझने योग्य लागत पर प्रबंधनीय विश्वसनीयता मिलती है।