कभी-कभी MongoDB त्रुटि लॉग को डिकोड करना मुश्किल हो सकता है और आपके मूल्यवान समय के बड़े हिस्से का उपभोग कर सकता है। इस लेख में, हम सीखेंगे कि लॉग संदेशों के प्रत्येक भाग को विच्छेदित करके MongoDB त्रुटि लॉग की जांच कैसे करें।
MongoDB लॉग लाइन्स के लिए सामान्य प्रारूप
यहाँ संस्करण 3.0 और इसके बाद के संस्करण के लिए लॉग लाइन पैटर्न है...
<timestamp> <severity> <component> [<context>] <message>
केवल MongoDB के पिछले संस्करणों के लिए लॉग लाइन पैटर्न में शामिल हैं:
<timestamp> [<context>] <message>
आइए प्रत्येक टैग को देखें।
टाइमस्टैम्प
लॉग संदेश का टाइमस्टैम्प फ़ील्ड ठीक उसी समय को संग्रहीत करता है जब लॉग फ़ाइल में लॉग संदेश डाला गया था। MongoDB द्वारा समर्थित 4 प्रकार के टाइमस्टैम्प हैं। डिफ़ॉल्ट प्रारूप है:iso8601-स्थानीय। आप --timeStampFormat पैरामीटर का उपयोग करके इसे बदल सकते हैं।
टाइमस्टैम्प प्रारूप का नाम | उदाहरण |
---|---|
iso8601-स्थानीय | 1969-12-31T19:00:00.000+0500 |
iso8601-utc | 1970-01-01T00:00:00.000Z |
सीटाइम | बुध दिसंबर 31 19:00:00.000 |
ctime-no-ms | बुध दिसंबर 31 19:00:00 |
गंभीरता
निम्न तालिका सभी संभावित गंभीरता स्तरों के अर्थ का वर्णन करती है।
गंभीरता स्तर | <थ>विवरण|
---|---|
F | घातक- डेटाबेस त्रुटि के कारण डेटाबेस अब पहुँच योग्य नहीं रह गया है |
ई | त्रुटि - डेटाबेस त्रुटियाँ जो DB निष्पादन को रोक देंगी। |
W | चेतावनी - डेटाबेस संदेश जो DB के संभावित हानिकारक व्यवहार की व्याख्या करते हैं। |
मैं | सूचनात्मक - 'एक नया कनेक्शन स्वीकार किया गया' जैसे सूचना उद्देश्य के लिए संदेश। |
डी | डीबग - डीबी त्रुटियों को डीबग करने के लिए अधिकतर उपयोगी |
घटक
संस्करण 3.0 के बाद, संदेशों का कार्यात्मक वर्गीकरण प्रदान करने के लिए लॉग संदेशों में अब "घटक" शामिल है। इससे आप विशिष्ट घटकों को देखकर आसानी से अपनी खोज को सीमित कर सकते हैं।
घटक | त्रुटि विवरण |
---|---|
पहुँच | अभिगम नियंत्रण से संबंधित |
कमांड | डेटाबेस कमांड से संबंधित |
नियंत्रण | गतिविधियों को नियंत्रित करने से संबंधित |
FTDC | नैदानिक डेटा संग्रह गतिविधियों से संबंधित |
भौगोलिक | भू-स्थानिक आकृतियों को पार्स करने से संबंधित |
सूचकांक | अनुक्रमण संचालन से संबंधित |
नेटवर्क | नेटवर्क गतिविधियों से संबंधित |
प्रश्न | प्रश्नों से संबंधित |
आरईपीएल | प्रतिकृति सेट से संबंधित |
REPL_HB | प्रतिकृति से संबंधित दिल की धड़कन सेट करता है |
रोलबैक | रोलबैक डीबी संचालन से संबंधित |
साझा करना | शार्डिंग से संबंधित |
संग्रहण | भंडारण गतिविधियों से संबंधित |
पत्रिका | जर्नल गतिविधियों से संबंधित |
लिखें | डीबी लिखने के संचालन से संबंधित |
संदर्भ
त्रुटि संदेश के संदर्भ भाग में आम तौर पर थ्रेड या कनेक्शन आईडी होता है। अन्य मूल्यों को initandlisten किया जा सकता है। यह भाग वर्गाकार कोष्ठकों से घिरा हुआ है। MongoDB से किसी भी नए कनेक्शन के लॉग संदेशों का संदर्भ मान initandlisten होगा, अन्य सभी लॉग संदेशों के लिए, यह या तो थ्रेड आईडी या कनेक्शन आईडी होगा। उदाहरण के लिए
2018-05-29T19:06:29.731+0000 [initandlisten] connection accepted from 127.0.0.1:27017 #1000 (13 connections now open)
2018-05-29T19:06:35.770+0000 [conn1000] end connection 127.0.0.1:27017 (12 connections now open)
संदेश
वास्तविक लॉग संदेश शामिल है।
लॉग फ़ाइल स्थान
सर्वर पर डिफ़ॉल्ट स्थान है:/var/log/mongodb/mongodb.log
यदि लॉग फ़ाइल इस स्थान पर मौजूद नहीं है तो आप MongoDB कॉन्फ़िग फ़ाइल में जाँच कर सकते हैं। आप इन दो स्थानों में से किसी एक पर MongoDB कॉन्फ़िग फ़ाइल पा सकते हैं।
/etc/mongod.conf or /yourMongoDBpath/mongod.conf
एक बार जब आप कॉन्फिग फाइल खोलते हैं, तो उसमें लॉगपैथ विकल्प खोजें। logpath विकल्प MongoDB को बताता है कि सभी संदेशों को कहाँ लॉग करना है।
एक साधारण लॉग संदेश का विश्लेषण करना
यहाँ एक विशिष्ट MongoDB त्रुटि संदेश का उदाहरण दिया गया है...
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017
टाइमस्टैम्प:2014-11-03T18:28:32.450-0500
गंभीरता:I
घटक:NETWORK
संदर्भ:[initandlisten]
संदेश:पोर्ट 27017 पर कनेक्शन की प्रतीक्षा कर रहा है पी>
इस त्रुटि का सबसे महत्वपूर्ण हिस्सा संदेश भाग है। ज्यादातर मामलों में, आप इस क्षेत्र को देखकर त्रुटि का पता लगा सकते हैं। कभी-कभी यदि आपको संदेश स्पष्ट नहीं होता है, तो आप घटक भाग के लिए जा सकते हैं। इस संदेश के लिए, घटक का मान नेटवर्क है जिसका अर्थ है कि लॉग संदेश नेटवर्क समस्या से संबंधित है।
यदि आप अपनी त्रुटि का समाधान करने में सक्षम नहीं हैं, तो आप लॉग संदेश की गंभीरता की जांच कर सकते हैं जो कहता है कि यह संदेश सूचना के उद्देश्य के लिए है। इसके अलावा, आप लॉग संदेश के अन्य हिस्सों को भी देख सकते हैं जैसे टाइमस्टैम्प या संदर्भ पूर्ण मूल कारण खोजने के लिए।
सामान्य त्रुटि लॉग संदेशों को डिकोड करना
-
संदेश:
2018-05-10T21:19:46.942 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
संकल्प: प्रमाणीकरण डेटाबेस में व्यवस्थापक उपयोगकर्ता बनाएं
-
संदेश:
2018-05-10T21:19:46.942 E COMMAND [initandlisten] ** ERROR: getMore command failed. Cursor not found
संकल्प: कर्सर से टाइमआउट निकालें या कर्सर बैच का आकार बढ़ाएं।
-
संदेश:
2018-05-10T21:19:46.942 E INDEX [initandlisten] ** ERROR:E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }
संकल्प: अद्वितीय कुंजी बाधा का उल्लंघन। भिन्न कुंजी के साथ दस्तावेज़ सम्मिलित करने का प्रयास करें।
-
संदेश:
2018-05-10T21:19:46.942 E NETWORK [initandlisten] ** ERROR:Timed out connecting to localhost:27017.
संकल्प: ड्राइवर और सर्वर के बीच विलंबता बहुत अधिक है, ड्राइवर हार मान सकता है। आप कनेक्शन स्ट्रिंग में कनेक्शन टाइमआउट विकल्प जोड़कर सेटिंग बदल सकते हैं।
-
संदेश:
2018-05-10T21:19:46.942 E WRITE [initandlisten] ** ERROR: A write operation resulted in an error. E11000 duplicate key error index: test.people.$_id_ dup key: { : 0 }
संकल्प: परस्पर विरोधी दस्तावेज़ों से _id फ़ील्ड मान का दोहराव निकालें।
-
संदेश:
2018-05-10T21:19:46.942 E NETWORK [initandlisten] ** ERROR: No connection could be made because the target machine actively refused it 127.0.0.1:27017 at System.Net.Sockets.Socket.EndConnect
संकल्प: या तो सर्वर पोर्ट 27017 पर नहीं चल रहा है या सही होस्ट और पोर्ट के साथ सर्वर को पुनरारंभ करने का प्रयास करें।
लॉग प्रबंधन उपकरण
MongoDB 3.0 ने सभी डेटाबेस गतिविधियों के लिए बेहतर अंतर्दृष्टि प्रदान करने के लिए अपनी लॉगिंग सुविधाओं को अपडेट किया है। बाजार में कई लॉग प्रबंधन उपकरण उपलब्ध हैं जैसे MongoDB Ops Manager, लॉग प्रविष्टियाँ, mtools आदि।
निष्कर्ष
लॉगिंग उतना ही महत्वपूर्ण है जितना कि अच्छे और उचित डेटाबेस प्रबंधन के लिए प्रतिकृति या साझा करना। बेहतर डेटाबेस प्रबंधन के लिए, अपवादों/त्रुटियों को शीघ्रता से सुधारने के लिए लॉग को आसानी से डीकोड करने में सक्षम होना चाहिए। मुझे आशा है कि इस ट्यूटोरियल को पढ़ने के बाद, आप जटिल MongoDB लॉग का विश्लेषण करते समय अधिक सहज महसूस करेंगे।