कभी-कभी लॉग आखिरी चीजें होती हैं, जब चीजें गलत हो रही होती हैं, लेकिन आमतौर पर वे पहली चीजें होती हैं जो कुछ होने पर मदद के लिए चिल्लाती हैं। समस्याओं के लिए लॉग को मैन्युअल रूप से देखने से मदद मिलती है, लेकिन कुछ गलत होने से पहले डेटाबेस पर अंतर्दृष्टि प्रदान करने के लिए स्वचालित रूप से रिपोर्ट जेनरेट करने के लिए लॉग एनालाइज़र का उपयोग क्यों न करें?
PostgreSQL लॉग विश्लेषक "pgBadger" पर्ल में लिखा गया एक खुला स्रोत "फास्ट PostgreSQL लॉग विश्लेषण रिपोर्ट" प्रोग्राम है जो चल रहे PostgreSQL इंस्टेंस से लॉग आउटपुट लेता है और इसे HTML फ़ाइल में संसाधित करता है। यह जो रिपोर्ट तैयार करता है वह सभी सूचनाओं को एक अच्छे और पढ़ने में आसान रिपोर्ट प्रारूप में दिखाता है। ये रिपोर्ट सिस्टम में होने वाली त्रुटियों, चेकपॉइंट व्यवहार, वैक्यूम व्यवहार, प्रवृत्तियों, और PostgreSQL सिस्टम के लिए अन्य बुनियादी लेकिन महत्वपूर्ण जानकारी पर प्रकाश डालने में मदद कर सकती हैं।
PostgreSQL लॉगिंग सेटअप
pgBadger को प्रभावी ढंग से उपयोग करने के लिए, PostgreSQL में लॉगिंग को pgBadger को यथासंभव अधिक जानकारी प्रदान करने के लिए स्थापित किया जाना चाहिए। डेटाबेस सिस्टम को उपयोगी रिपोर्ट बनाने के लिए pgBadger के लिए उपयोगी जानकारी लॉग करने की अनुमति देने के लिए मुट्ठी भर विकल्पों में बदलाव किया जा सकता है। PostgreSQL कॉन्फ़िगरेशन के लिए पूर्ण दस्तावेज़ीकरण pgBadger github पृष्ठ पर पाया जा सकता है, लेकिन कुछ बुनियादी जानकारी नीचे है।
जब चलाया जाता है, तो pgBadger PostgreSQL से लॉग्स को प्रोसेस करेगा चाहे वे syslog, stderr, या csvlog हों, जब तक कि लॉग लाइनों में उपसर्ग में पर्याप्त जानकारी होती है।
उदाहरण log_line_prefix मान:
अगर log_destination ='syslog'
log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '
अगर log_destination ='stderr'
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
postgresql.conf में सेट करने के लिए बुनियादी विन्यास सेटिंग्स:
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'
Log_min_duration_statement = (see below)
pgBadger की रिपोर्ट के अधिक उपयोगी भागों में से एक धीमी क्वेरी रिपोर्ट है, जो डेटाबेस लॉगिंग क्वेरी पर निर्भर करती है जो log_min_duration_statement मान से अधिक है। यह मान मिलीसेकंड में दर्शाया जाता है, और इससे अधिक समय के साथ पूरी होने वाली कोई भी क्वेरी लॉग की जाएगी, और फिर pgBadger द्वारा उत्पन्न रिपोर्ट। यह वांछित से अधिक समय लेने वाले प्रश्नों को खोजने और उनका विश्लेषण करने में सहायक होता है।
सभी प्रश्नों को लॉग करने के लिए इस मान को 0 पर सेट करते समय सबसे अधिक जानकारी प्रदान की जाएगी, जो आसानी से बहुत बड़ी लॉग फ़ाइलों को उत्पन्न कर सकती है, और निरंतर लॉग लेखन के कारण डेटाबेस के प्रदर्शन को प्रभावित करती है। एक अधिक समझदार मूल्य सही क्वेरी गणना प्रदान नहीं करेगा, लेकिन फिर भी सामान्य रूप से धीमी गति से चलने वाली क्वेरी पर रिपोर्ट पर ध्यान केंद्रित करेगा। यदि कुछ मिनटों में चलने वाली क्वेरी को 'धीमा' माना जाता है, तो मान को एक मिनट पर सेट करना अच्छा रहेगा। यदि कुछ सेकंड से अधिक समय तक चलने वाली क्वेरी को 'धीमा' माना जाता है, तो मान को 5 सेकंड की तरह सेट करना भी अच्छा काम करेगा।
लॉग जनरेट करना
लॉग उत्पन्न करना कमांड लाइन के माध्यम से pgBadger निष्पादन योग्य का उपयोग करके किया जाता है। कई विकल्प हैं, लेकिन सबसे बुनियादी सेटअप डेटाबेस द्वारा उपयोग की जाने वाली लॉग लाइन उपसर्ग, लॉग फ़ाइल और आउटपुट html फ़ाइल प्रदान करना है।
./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5
pgBadger के विभिन्न विकल्पों के बारे में अधिक जानकारी के लिए, दस्तावेज़ीकरण देखें या --help इनपुट पैरामीटर के साथ बाइनरी निष्पादित करें।
उन्नत लॉग जनरेशन
चूंकि लॉग पर रिपोर्ट तैयार करना एक सरल कमांड लाइन निष्पादन है, कस्टम स्क्रिप्ट और प्रोग्राम को स्वचालित रूप से रिपोर्ट तैयार करने के लिए सेट किया जा सकता है, वेब सर्वर पर मंचित किया जा सकता है, ईमेल किया जा सकता है, या दीर्घकालिक भंडारण में संग्रहीत किया जा सकता है। रिपोर्ट निर्माण के लिए उपलब्ध विभिन्न विकल्पों का अन्वेषण करें और रिपोर्ट निर्माण और वितरण के लिए स्वचालित सिस्टम के साथ रचनात्मक बनें।
लॉग की समीक्षा करना
लॉग की समीक्षा करने में मज़ा आता है। जो रिपोर्ट तैयार की गई थी उसे अब वेब ब्राउज़र में खोला जा सकता है और समीक्षा की जा सकती है।
वैश्विक आँकड़े
वैश्विक आँकड़े अनुभाग में PostgreSQL लॉग में पाई जाने वाली कुछ बुनियादी जानकारी शामिल है, जिनमें शामिल हैं:
- प्रश्न:पाए गए प्रश्नों की संख्या, अवधि, सामान्यीकृत प्रश्नों की संख्या, आदि।
- ईवेंट:इवेंट की कुल संख्या, सामान्यीकृत इवेंट, आदि।
- वैक्यूम:ऑटो वैक्यूम और ऑटो विश्लेषण की कुल संख्या मिली।
- अस्थायी फ़ाइलें:मिली अस्थायी फ़ाइलों की कुल संख्या, अधिकतम आकार और औसत आकार।
- सत्र:सत्रों की कुल संख्या, व्यस्ततम सत्रों का समय, सत्रों की कुल अवधि, सत्रों की औसत अवधि, प्रति सत्र मिली औसत क्वेरी, प्रति सत्र औसत क्वेरी अवधि।
- कनेक्शन:कनेक्शन की कुल संख्या, पीक कनेक्शन, और कनेक्टेड डेटाबेस की कुल संख्या।
नोट: क्वेरी, क्वेरी गणना, या क्वेरी अवधि वाले परिणाम 0 से अधिक log_min_duration_statement के मानों के साथ गलत होंगे।
उदाहरण:
pgBadger वैश्विक आँकड़े उदाहरणकनेक्शन
कनेक्शन पृष्ठ लॉग में मिली कनेक्शन जानकारी का विवरण देने वाले ग्राफ़ दिखाता है। जब तक log_connections और log_disconnections दोनों चालू हैं, तब तक यहां के मान सटीक रहेंगे। उपलब्ध चार्ट हैं:
- स्थापित कनेक्शन:समय के साथ कनेक्शन की अधिकतम, न्यूनतम और औसत संख्या दिखा रहा है।
- कनेक्शन प्रति डेटाबेस:एक पाई चार्ट और तालिका दृश्य जो प्रत्येक डेटाबेस के लिए कनेक्शन की संख्या को दर्शाता है।
- प्रति उपयोगकर्ता कनेक्शन:एक पाई चार्ट और तालिका दृश्य जो प्रत्येक उपयोगकर्ता के लिए कनेक्शन की संख्या को दर्शाता है।
- प्रति होस्ट कनेक्शन:एक पाई चार्ट और तालिका दृश्य जो प्रत्येक स्रोत होस्ट के लिए कनेक्शन की संख्या को दर्शाता है।
उदाहरण:
pgBadger कनेक्शन पाई चार्ट उदाहरणसत्र
सत्र पृष्ठ कनेक्शन पृष्ठ के समान है, लेकिन इसमें स्वयं सत्रों से संबंधित कुछ और जानकारी होती है।
- एक साथ सत्र:समय के साथ सत्रों की संख्या दिखाने वाला एक लाइन चार्ट।
- सत्र के समय का हिस्टोग्राम:सत्र के समय को दर्शाने वाला एक बार चार्ट और तालिका।
- प्रति डेटाबेस सत्र:एक पाई चार्ट और तालिका दृश्य जो प्रत्येक डेटाबेस के लिए सत्रों की संख्या को दर्शाता है।
- प्रति उपयोगकर्ता सत्र:एक पाई चार्ट और तालिका दृश्य जो प्रत्येक उपयोगकर्ता को मिले सत्रों की संख्या दर्शाता है।
- प्रति होस्ट सत्र:एक पाई चार्ट और तालिका दृश्य जो प्रत्येक स्रोत होस्ट के लिए सत्रों की संख्या को दर्शाता है।
- प्रति आवेदन सत्र:प्रति आवेदन जुड़े सत्रों की संख्या।
चेकपॉइंट
चेकपॉइंट्स पेज चेकपॉइंट प्रक्रिया के बारे में जानकारी प्रदान करता है, जिसमें लिखित बफ़र्स की संख्या, वाल फाइलें और अन्य सामान्य जानकारी शामिल है।
- चेकपॉइंट बफ़र्स:चेकपॉइंट प्रक्रिया द्वारा समय के साथ लिखे गए बफ़र्स की मात्रा को दर्शाने वाला एक लाइन चार्ट।
- चेकपॉइंट्स वाल फाइल्स:एक लाइन चार्ट जो समय के साथ चेकपॉइंटर द्वारा जोड़े गए, हटाए गए, या रिसाइकल की गई वाल फाइलों की संख्या को दर्शाता है।
- चेकपॉइंट दूरी:चेकपॉइंट के लिए दूरी और अनुमान दिखाने वाला एक लाइन चार्ट।
- चेकपॉइंट गतिविधि:तालिका के रूप में पिछले चार डेटा बिंदुओं को दर्शाने वाली एक तालिका।
अस्थायी फ़ाइलें
अस्थायी फ़ाइलें पृष्ठ में अस्थायी फ़ाइलों के लिए जानकारी होती है, जो तब बनाई जाती हैं जब कोई क्वेरी work_mem से बाहर हो जाती है और उन्हें अनुप्रयोगों में वापस करने से पहले परिणामों को सॉर्ट या फ़िल्टर करने के लिए डिस्क का उपयोग करने की आवश्यकता होती है। क्वेरी पूरी होने पर ये फ़ाइलें अपने आप हटा दी जाती हैं, और अस्थायी फ़ाइल गतिविधि जानने से व्यवस्थापक को work_mem पैरामीटर को ट्यून करने में मदद मिलती है।
- अस्थायी फ़ाइलों का आकार:समय के साथ अस्थायी फ़ाइलों द्वारा उपयोग किए गए स्थान को दर्शाने वाला एक लाइन चार्ट।
- अस्थायी फाइलों की संख्या:समय के साथ उपयोग की गई अस्थायी फाइलों की संख्या दिखाने वाला एक लाइन चार्ट।
- अस्थायी फ़ाइलें गतिविधि:पिछले चार्ट में प्रदान की गई जानकारी दिखाने वाली एक तालिका लेकिन तालिका के रूप में।
वैक्यूम
यह पृष्ठ डेटाबेस में होने वाले VACUUMs और ANALYZE के बारे में जानकारी दिखाता है। यह जानकारी यह जानने के लिए उपयोगी है कि ऑटोवैक्यूम प्रक्रिया पर्याप्त रूप से अपना काम कर रही है या नहीं, या यदि यह फंस गई है और अधिक संसाधनों की आवश्यकता है।
- वैक्यूम / विश्लेषण वितरण:समय के साथ VACUUM और ANALYZE दिखाने वाला एक लाइन चार्ट, साथ ही उस तालिका की जानकारी जिसमें सबसे अधिक CPU प्रोसेसिंग पावर की खपत होती है।
- प्रति तालिका का विश्लेषण:सबसे अधिक विश्लेषण वाली तालिकाएं दिखाने वाला एक पाई चार्ट और तालिका, यह सुझाव देती है कि ये तालिकाएं परिवर्तन की उच्च स्थिति में हैं।
- वैक्यूम प्रति टेबल:एक पाई चार्ट और टेबल जिसमें सबसे अधिक रिक्त स्थान वाली टेबल दिखाई दे रही है, यह सुझाव देते हुए कि ये टेबल परिवर्तन की उच्च स्थिति में हैं।
- प्रति तालिका हटाए गए टुपल्स:एक पाई चार्ट और तालिका जिसमें तालिकाओं के लिए निर्वात प्रक्रियाओं में निकाले गए ट्यूपल्स और पृष्ठों की संख्या दिखाई गई है।
- प्रति तालिका हटाए गए पृष्ठ:तालिका के लिए निर्वात प्रक्रियाओं में हटाए गए पृष्ठों और टुपल्स की संख्या दिखाने वाला एक पाई चार्ट और तालिका।
- ऑटोवैक्यूम गतिविधि:प्रति घंटे समय के साथ वैक्यूम और विश्लेषण दिखाने वाली एक तालिका।
ताला
लॉक पेज में डेटा के कुछ ही टुकड़े होते हैं, लेकिन यह जानना उपयोगी जानकारी है कि ऐसी प्रक्रियाएं कब होती हैं जो विस्तारित अवधि के लिए अन्य प्रश्नों को रोक सकती हैं।
- प्रकार के अनुसार लॉक करता है
- अधिकांश बारंबार प्रतीक्षा करने वाली क्वेरी:प्रतीक्षा में पाई जाने वाली क्वेरी की सूची, सबसे अधिक बार-बार कम से कम रैंक की गई।
- प्रश्न जिन्होंने सबसे अधिक प्रतीक्षा की:प्रश्नों की एक सूची और उन्होंने कितनी देर तक प्रतीक्षा की, सबसे लंबे से सबसे छोटे तक का आदेश दिया।
प्रश्न
प्रश्न पृष्ठ कभी-कभी सबसे रोमांचक होता है, क्योंकि यह अनुप्रयोगों और उपयोगकर्ताओं से आने वाले प्रश्नों के प्रकार के बारे में जानकारी दिखाता है। यह जानकारी यह समझने में मदद कर सकती है कि किस प्रकार का डेटाबेस किसी एप्लिकेशन या उपयोगकर्ता को डेटाबेस सिस्टम पर रखता है, जो भविष्य में ट्यूनिंग में मदद कर सकता है। पहले की तरह, इन नंबरों की सटीकता log_min_duration_statement के मान पर निर्भर करती है, क्योंकि 0 से ऊपर का कोई भी मान क्वेरी लॉग नहीं करेगा।
- प्रश्न के प्रकार:एक पाई चार्ट और तालिका जिसमें विभिन्न प्रकार के प्रश्नों की संख्या दर्शाई गई है, जैसे कि INSERT, UPDATE, DELETE, SELECT, आदि।
- डेटाबेस द्वारा क्वेरीज़:एक पाई चार्ट और तालिका जो प्रति डेटाबेस प्राप्त प्रश्नों की संख्या दर्शाती है।
- आवेदन द्वारा प्रश्न:एक पाई चार्ट और तालिका जो प्रति आवेदन प्राप्त प्रश्नों की संख्या दर्शाती है।
- रद्द किए गए प्रश्नों की संख्या:रद्द किए गए प्रश्नों की जानकारी।
शीर्ष
शीर्ष पृष्ठ में क्वेरी समय, समग्र रूप से सबसे धीमी क्वेरी, क्वेरी आवृत्ति और बहुत कुछ की जानकारी है। विशिष्ट समस्यात्मक प्रश्न यहां मिलने की संभावना है:
- क्वेरी समय का हिस्टोग्राम:एक हिस्टोग्राम यह दर्शाता है कि समय के प्रत्येक समूह में कितने प्रश्न आते हैं।
- सबसे धीमी व्यक्तिगत क्वेरी:सबसे धीमी क्वेरी की एक सूची मिली, जो सबसे लंबे से सबसे छोटे के क्रम में है।
- समय लेने वाली क्वेरी:सामान्यीकृत प्रश्नों की एक सूची और उनकी कुल अवधि, कम से कम खपत किए गए अधिकतम समय के क्रम में।
- सबसे अधिक बार पूछे जाने वाले प्रश्न:सामान्यीकृत प्रश्नों की सूची और उन्हें कितनी बार निष्पादित किया गया, अधिकतम से कम से कम का आदेश दिया गया।
- सामान्यीकृत सबसे धीमी क्वेरी:सामान्यीकृत प्रश्नों की एक सूची और उनकी औसत अवधि, सबसे लंबे से सबसे छोटे के क्रम में।
ईवेंट
अंतिम पृष्ठ ईवेंट है, जिसमें स्वयं लॉग पर जानकारी होती है, और कुछ भी जो क्वेरी, वैक्यूम या चेकपॉइंट नहीं है।
- लॉग स्तर:लॉग के विभिन्न स्तर लाइन से दिखाई देते हैं, जैसे कि CONTEXT, LOG, STATEMENT, HINTs, WARNINGs, और अन्य।
- घटनाओं का वितरण:पैनिक, घातक, त्रुटि और चेतावनी घटनाओं के लिए समय के साथ घटनाओं का एक रेखा ग्राफ।
- सबसे अधिक बार-बार होने वाली त्रुटियां/घटनाएं:घटनाओं की एक सूची और उनकी आवृत्ति, सबसे सामान्य से कम से कम क्रम में।
योगदान करें
pgBadger प्रोजेक्ट मुफ़्त है और PostgreSQL लाइसेंस के तहत मौजूद है। यह वर्तमान में अच्छी तरह से बनाए रखा गया है और इसे विकसित होने के साथ ही PostgreSQL के नए संस्करणों के साथ काम करने के लिए अद्यतन किया गया है। क्या आपके पास pgBadger को बेहतर बनाने के विचार हैं? प्रोजेक्ट को फोर्क करें और समुदाय को अपने सुधार दिखाएं।
बग सबमिट करने के लिए, जीथब मुद्दे पृष्ठ पर जाएं।