MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB त्रुटि लॉग को डिकोड करना

कभी-कभी 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 पर कनेक्शन की प्रतीक्षा कर रहा है
पी>

इस त्रुटि का सबसे महत्वपूर्ण हिस्सा संदेश भाग है। ज्यादातर मामलों में, आप इस क्षेत्र को देखकर त्रुटि का पता लगा सकते हैं। कभी-कभी यदि आपको संदेश स्पष्ट नहीं होता है, तो आप घटक भाग के लिए जा सकते हैं। इस संदेश के लिए, घटक का मान नेटवर्क है जिसका अर्थ है कि लॉग संदेश नेटवर्क समस्या से संबंधित है।

यदि आप अपनी त्रुटि का समाधान करने में सक्षम नहीं हैं, तो आप लॉग संदेश की गंभीरता की जांच कर सकते हैं जो कहता है कि यह संदेश सूचना के उद्देश्य के लिए है। इसके अलावा, आप लॉग संदेश के अन्य हिस्सों को भी देख सकते हैं जैसे टाइमस्टैम्प या संदर्भ पूर्ण मूल कारण खोजने के लिए।

सामान्य त्रुटि लॉग संदेशों को डिकोड करना

  1. संदेश:

    2018-05-10T21:19:46.942 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.

    संकल्प: प्रमाणीकरण डेटाबेस में व्यवस्थापक उपयोगकर्ता बनाएं

  2. संदेश:

    2018-05-10T21:19:46.942 E COMMAND  [initandlisten] ** ERROR: getMore command failed. Cursor not found

    संकल्प: कर्सर से टाइमआउट निकालें या कर्सर बैच का आकार बढ़ाएं।

  3. संदेश:

    2018-05-10T21:19:46.942 E INDEX  [initandlisten] ** ERROR:E11000 duplicate key error index: test.collection.$a.b_1 dup key: { : null }

    संकल्प: अद्वितीय कुंजी बाधा का उल्लंघन। भिन्न कुंजी के साथ दस्तावेज़ सम्मिलित करने का प्रयास करें।

  4. संदेश:

    2018-05-10T21:19:46.942 E NETWORK  [initandlisten] ** ERROR:Timed out connecting to localhost:27017.

    संकल्प: ड्राइवर और सर्वर के बीच विलंबता बहुत अधिक है, ड्राइवर हार मान सकता है। आप कनेक्शन स्ट्रिंग में कनेक्शन टाइमआउट विकल्प जोड़कर सेटिंग बदल सकते हैं।

  5. संदेश:

    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 फ़ील्ड मान का दोहराव निकालें।

  6. संदेश:

    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 लॉग का विश्लेषण करते समय अधिक सहज महसूस करेंगे।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. योग मोंगोडब द्वारा समूह

  2. नेस्टेड फ़ील्ड में MongoDB अद्यतन डेटा

  3. MongoDB प्रतिकृति सेट के लिए AppArmor को कैसे कॉन्फ़िगर करें?

  4. apollostack/graphql-server - रिज़ॉल्वर से किसी क्वेरी में अनुरोधित फ़ील्ड कैसे प्राप्त करें

  5. MongoDB में एम्बेडेड दस्तावेज़ों को फ़िल्टर करना