लॉग का केंद्रीकरण
1) लॉग को केंद्रीकृत क्यों करें
केंद्रीकृत लॉग अवलोकन, लेखा परीक्षा और अनुपालन की नींव हैं। वाले:- घटना की जड़ों की खोज को गति दें (अनुरोध-आईडी/ट्रेस-आईडी द्वारा सहसंबंध);
- आपको लक्षणों (त्रुटियों, विसंगतियों) पर सिग्नल अलर्ट बनाने की अनुमति दें;
- एक ऑडिट ट्रेल (कौन/कब/क्या किया) देना;
- प्रतिधारण और भंडारण के एकीकरण के कारण कम लागत।
2) बुनियादी सिद्धांत
1. केवल संरचित लॉग (JSON/RFC5424) - कुंजियों के बिना कोई "फ्री-टेक्स्ट" नहीं।
2. कुंजियों की वर्दी योजना: 'ts, स्तर, सेवा, env, क्षेत्र, किरायेदार, , , , (नकाबपोश), msg, kv...'।
3. तयशुदा सहसंबंध: फ्लिप trace_id गेटवे से बैकेंड और लॉग तक.
4. शोर कम से कम: सही स्तर, नमूना, पुनरावृत्ति विकृति।
5. डिजाइन द्वारा सुरक्षा: पीआईआई मास्किंग, आरबीएसी/एबीएसी, अपरिवर्तनीयता।
6. अर्थव्यवस्था: गर्म/गर्म/ठंडा, संपीड़न, एकत्रीकरण, टीटीएल और पुनर्जलीकरण।
3) विशिष्ट वास्तुशिल्प
EFK/ELK: (धाराप्रवाह बिट/फ्लेंट/फाइलबेट) → (काफ्का - опц।) → (Elasticsearch/OpenSearch) → (Kibana/OpenSearch Dashboards)। सार्वभौमिक खोज और एकत्रीकरण।
लोकी-जैसे (लेबल द्वारा लॉग इंडेक्सिंग): प्रोमेल/फ्लूएंट बिट → लोकी → ग्राफाना। बड़े वॉल्यूम, शक्तिशाली लेबल फ़िल्टर + रैखिक देखने के लिए सस्ता।
क्लाउड: CloudWatch/Cloud Loging/Log Analytics + कोल्ड स्टोरेज (S3/GCS/ADLS) और/या SIEM को निर्यात।
डेटा लेक दृष्टिकोण: पिछले एन दिनों के लिए शिपर्स → ऑब्जेक्ट स्टोरेज (लकड़ी/आइसबर्ग) → सस्ते विश्लेषणात्मक प्रश्न (एथेना/बिगक्वेरी/स्पार्क) + ऑनलाइन परत (ओपनसर्च/लोकी)।
सिफारिश: ऑनलाइन परत (7-14 दिन गर्म) और अभिलेखीय (महीने/वर्ष) को झील में पुनर्जलीकरण करने की क्षमता के साथ रखने के लिए।
4) आरेख और लॉग का प्रारूप (सिफारिश)
न्यूनतम JSON प्रारूप:json
{
"ts":"2025-11-01T13:45:12.345Z",
"level":"ERROR",
"service":"payments-api",
"env":"prod",
"region":"eu-central",
"tenant":"tr",
"trace_id":"0af7651916cd43dd8448eb211c80319c",
"span_id":"b7ad6b7169203331",
"request_id":"r-7f2c",
"user_id":"", // masked
"route":"/v1/payments/charge",
"code":"PSP_TIMEOUT",
"latency_ms":1200,
"msg":"upstream PSP timeout",
"kv":{"provider":"psp-a","attempt":2,"timeout_ms":800}
}
मानक: समय के लिए, सेट 'TRACE/DEBUG/INFO/WARN/ERROR/FATAL' से स्तर, कुंजियाँ में।
5) लॉगिंग स्तर और नमूना
DEBUG - केवल देव/चरण में; ध्वज द्वारा और टीटीएल के साथ।
सूचना - अनुरोध/घटनाओं का जीवन चक्र।
WARN - SLO को प्रभावित किए बिना संदिग्ध स्थितियाँ।
त्रुटि/FATAL - निवेदन/उपयोक्ता पर प्रभाव।
नमूना:- बार-बार त्रुटियों के लिए दर-सीमा (उदाहरण के लिए, 1/सेक/कुंजी)।
- निशान की पूंछ-नमूना (केवल "बुरे" अनुरोधों के लिए पूर्ण लॉग/निशान छोड़ दें)।
- गतिशील: त्रुटियों के तूफान के मामले में, विस्तार को कम करें, सारांश सहेजें।
6) लॉग की डिलीवरी (एजेंट और शिपर)
नोड पर: फ्लूएंट बिट/फाइलबेट/प्रोमेल स्टडआउट फ़ाइलें/जंट्रल्स, पार्सिंग, मास्किंग, बफरिंग एकत्र करें।
नेटवर्क कतारें: पीक स्मूथिंग, रिट्रे और ऑर्डर के लिए काफ्का/एनएटीएस।
विश्वसनीयता: बैकप्रेशर, डिस्क बफर्स, डिलीवरी पुष्टि (कम से कम एक बार), पहचानने वाले सूचकांक (कुंजी-हैश)।
किनारे पर फ़िल्टरिंग: नेट मारने से पहले "बकवास" और रहस्य को त्यागना।
7) अनुक्रमण और भंडारण
समय विभाजन (दैनिक/साप्ताहिक) + 'env/क्षेत्र/किरायेदार' (सूचकांक टेम्पलेट या लेबल के माध्यम से) द्वारा।
भंडारण परतें:- हॉट (एसएसडी, 3-14 दिन): त्वरित खोज और अलर्ट।
- गर्म (एचडीडी/फ्रीजर, 30-90 दिन): कभी-कभी हम देखते हैं।
- कोल्ड/आर्काइव (वस्तु, महीने/वर्ष): अनुपालन और दुर्लभ जांच।
- संपीड़न और रोटेशन: ILM/ISM (जीवन चक्र नीतियां), gzip/zstd, downsampling (एकत्रीकरण तालिकाएँ)।
- पुनर्जलीकरण: जांच के लिए "गर्म" क्लस्टर में संग्रहीत बैचों का अस्थायी लोडिंग।
8) खोज और विश्लेषण: नमूना प्रश्न
हादसा: समय फ़िल्टर × 'सेवा =...' × 'स्तर> = ERROR' × 'ट्रेस _ id '/' अनुरोध _ id'.
प्रदाता: 'कोड: PSP _' और' kv। प्रदाता: psp-a 'क्षेत्र द्वारा वर्गीकृत।
विसंगतियाँ: संदेशों की आवृत्ति में वृद्धि या क्षेत्र वितरण (एमएल-डिटेक्टर, नियम-आधारित) में बदलाव।
ऑडिट: 'श्रेणी: ऑडिट' + 'अभिनेता '/' संसाधन' + परिणाम।
9) मैट्रिक्स और निशान के साथ सहसंबंध
समान पहचानकर्ता: 'trace _ id/span _ id' सभी तीन संकेतों (मेट्रिक्स, लॉग, ट्रेस) में।
रेखांकन से लिंक: p99 पैनल से 'trace _ id' द्वारा लॉग में क्लिकेबल संक्रमण।
रिलीज एनोटेशन: मैट्रिक्स में संस्करण/कैनरी और त्वरित बाध्यकारी के लिए लॉग।
10) सुरक्षा, पीआईआई और अनुपालन
क्षेत्र वर्गीकरण: PII/रहस्य/वित्त - प्रवेश द्वार पर मास्क या हटाएं (धाराप्रवाह बिट/लुआ फिल्टर, Re2)।
RBAC/ABAC: भूमिका द्वारा सूचकांक/लेबल एक्सेस, row-/फील्ड-लेवल-सिक्योरिटी।
ऑडिट और नियामक आवश्यकताओं के लिए अपरिवर्तनीयता (WORM/एपेंड-केवल)।
प्रतिधारण और "भूलने का अधिकार": TTL/कुंजियों द्वारा हटाना, टोकन 'user _ id'।
हस्ताक्षर/हैश: महत्वपूर्ण पत्रिकाओं की अखंडता (व्यवस्थापक कार्रवाई, भुगतान)।
11) एसएलओ और पाइपलाइन लॉग मेट्रिक्स
डिलीवरी: 99। गर्म परत में 9% घटनाएं ≤ 30-60 सेकंड।
नुकसान: <0। 01% 24 घंटे (संदर्भ चिह्नों के अनुसार)।
खोज उपलब्धता: ≥ 99। 28 दिनों में 9%।
अनुरोधों की विलंबता: ठेठ फिल्टर पर p95 ≤ 2-5 सेकंड।
लागत: $/1M घटनाएँ और परतों में $/भंडारण/जीबी।
12) डैशबोर्ड (न्यूनतम)
पाइपलाइन स्वास्थ्य: शिपर्स का प्रवेश/निकास, रिट्रेज़, बफ़र भरना, काफ़्का अंतराल।
सेवाओं/कोड द्वारा त्रुटियां: शीर्ष N, रुझान, प्रतिशत 'विलंबता _ ms'।
ऑडिट गतिविधि: व्यवस्थापक कार्रवाई, प्रदाता त्रुटियां, पहुंच।
अर्थशास्त्र: वॉल्यूम/दिन, इंडेक्स-ग्रोथ, परत द्वारा मूल्य, "महंगा" प्रश्न।
13) संचालन और प्लेबुक
लॉग स्टॉर्म: एजेंट पर आक्रामक नमूना/दर-सीमा सक्षम करें, बफर्स बढ़ाएं, अस्थायी रूप से गर्म करने के लिए धारा का हिस्सा स्थानांतरित
स्कीमा बहाव: नई कुंजी/प्रकार की उपस्थिति के लिए अलर्ट, स्कीमा-कैटलॉग बातचीत शुरू करें।
धीमी खोज: सूचकांक का पुनर्निर्माण, प्रतिकृतियों को बढ़ाना, "भारी" प्रश्नों का विश्लेषण करना, पुराने बैचों को संग्रहीत करना।
सुरक्षा घटना: तत्काल अपरिवर्तनीयता सक्षम, कलाकृतियों को बंद कर दिया, भूमिका द्वारा प्रतिबंधित पहुंच, आरसीए।
14) FinOps: लॉग पर कैसे नहीं जाना है
वर्बोसिटी हटाएं: मल्टी-लाइन स्टैक्ट्रेस को 'स्टैक' फ़ील्ड और सैंपल रिप्ले में बदलें।
टीटीएल सक्षम करें: 'एनवी '/' स्तर '/' श्रेणी' के लिए भिन्न.
दुर्लभ पहुँच के लिए लोकी/आर्काइव + ऑन-डिमांड रीहाइड्रेट का उपयोग करें।
पार्टियां और संपीड़न: बड़ी पार्टियां सस्ती हैं, लेकिन खोज एसएलए के लिए नजर रखें।
लगातार मूल्यांकन (दैनिक समुच्चय) को भौतिक बनाएं।
15) वाद्य उदाहरण
धाराप्रवाह बिट (ओपनसर्च में मास्किंग और भेजना)
ini
[INPUT]
Name tail
Path /var/log/app/.log
Parser json
Mem_Buf_Limit 256MB
[FILTER]
Name modify
Match
Remove_key credit_card, password
[OUTPUT]
Name es
Host opensearch.svc
Port 9200
Index logs-${tag}-${date}
Logstash_Format On
Suppress_Type_Name On
Nginx एक्सेस लॉग в JSON с trace_id
nginx log_format json escape=json '{ "ts":"$time_iso8601","remote":"$remote_addr",'
'"method":"$request_method","path":"$uri","status":$status,'
'"bytes":$body_bytes_sent,"ua":"$http_user_agent","trace_id":"$http_trace_id"}';
access_log /var/log/nginx/access.json json;
ओपनसर्च ILM नीति (hot→warm→delete)
json
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_age": "7d", "max_size": "50gb" } } },
"warm": { "min_age": "7d", "actions": { "forcemerge": { "max_num_segments": 1 } } },
"delete":{ "min_age": "90d", "actions": { "delete": {} } }
}
}
}
16) कार्यान्वयन चेकलिस्ट
- क्षेत्र लेआउट और लॉग स्तर स्वीकार किया; ट्रेस/अनुरोध-आईडी सहसंबंध सक्षम है।
- मास्किंग और बफ़र्स के साथ कॉन्फ़िगर किए गए एजेंट (धाराप्रवाह बिट/प्रोमेल)।
- ऑनलाइन परत (OpenSearch/Loki/Cloud) और संग्रह (S3/GCS + parquet) चयनित।
- ILM/ISM + हॉट/वार्म/कोल्ड रिटेंशन पॉलिसी, रीहाइड्रेट प्रक्रिया।
- RBAC/ABAC, ऑडिट अपरिवर्तनीयता, एक्सेस लॉग।
- पाइपलाइन डैशबोर्ड, हानि अलर्ट/लैग/डिस्क बफर्स।
- प्लेबुक: लॉग स्टॉर्म, स्कीमा बहाव, धीमी खोज, सुरक्षा घटना।
- वित्तीय सीमा: $/1M घटनाएं, "महंगे" अनुरोधों के लिए कोटा।
17) एंटी-पैटर्न
संरचना के बिना पाठ लॉग - फ़िल्टर और एकत्र करने में अक्षमता।
INFO → वॉल्यूम विस्फोट में विशालकाय स्टैक्ट्रेस।
सहसंबंध की कमी - सभी सेवाओं के लिए "फड़फड़ाना"।
"सब कुछ हमेशा के लिए" स्टोर करना - एक हवाई जहाज की तरह बादल बिल।
लॉग में रहस्य/पीआईआई - अनुपालन जोखिम।
मैनुअल इंडेक्स बिक्री में संपादन करता है - बहाव और लंबी खोज डाउनटाइम।
18) नीचे की रेखा
लॉग केंद्रीकरण एक प्रणाली है, न कि केवल एक ढेर। मानकीकृत स्कीमा, सहसंबंध, सुरक्षित शिपर, स्तरित भंडारण, और सख्त पहुंच नीतियां एसआरई, सुरक्षा और उत्पाद के लिए लॉग को एक शक्तिशाली उपकरण में बदल देती हैं। सही प्रतिधारण और FinOps बजट रखते हैं, और पाइपलाइन SLO और प्लेबुक जांच को तेज और प्रजनन योग्य बनाते हैं।