sql >> Databáze >  >> NoSQL >> MongoDB

Dekódování protokolů chyb MongoDB

Někdy může být dekódování protokolů chyb MongoDB složité a může spotřebovat velké kusy vašeho drahocenného času. V tomto článku se naučíme, jak prozkoumat protokoly chyb MongoDB rozebráním každé části zpráv protokolu.

Běžný formát pro MongoDB Log Lines

Zde je vzor řádku protokolu pro verzi 3.0 a vyšší...

<timestamp> <severity> <component> [<context>] <message>

Vzor čáry protokolu pro předchozí verze MongoDB obsahuje pouze:

<timestamp> [<context>] <message>

Podívejme se na každý tag.

Časová razítka

Pole Časové razítko zprávy protokolu ukládá přesný čas, kdy byla zpráva protokolu vložena do souboru protokolu. MongoDB podporuje 4 typy časových razítek. Výchozí formát je:iso8601-local. Můžete jej změnit pomocí parametru --timeStampFormat.

Název formátu časového razítka Příklad
iso8601-local 1969-12-31T19:00:00.000+0500
iso8601-utc 1970-01-01T00:00:00.000Z
ctime St 31. prosince 19:00:00 000
ctime-no-ms St 31. prosince 19:00:00

Závažnost

Následující tabulka popisuje význam všech možných úrovní závažnosti.

Úroveň závažnosti Popis
F Závažná- Chyba databáze způsobila, že databáze již není přístupná
E Chyba – Chyby databáze, které zastaví provádění DB.
W Varování – Databázové zprávy, které vysvětlují potenciálně škodlivé chování DB.
Informační – zprávy pouze pro informační účely, jako je „Nové připojení přijato“.
D Ladění – většinou užitečné pro ladění chyb DB

Komponenta

Po verzi 3.0 nyní zprávy protokolu obsahují „komponentu“, která poskytuje funkční kategorizaci zpráv. To vám umožní snadno zúžit vyhledávání pohledem na konkrétní komponenty.

Komponenta Popis chyby
Přístup Související s řízením přístupu
Příkaz Související s databázovými příkazy
Kontrola Související s kontrolními aktivitami
FTDC Související s činnostmi shromažďování diagnostických dat
Geo Souvisí s analýzou geoprostorových tvarů
Index Související s operacemi indexování
Síť Související se síťovými aktivitami
Dotaz Související s dotazy
REPL Související se sadami replik
REPL_HB Související s prezenčními signály replikových sad
Vrácení zpět Souvisí s operacemi rollback db
Sharding Souvisí se sdílením
Úložiště Související s aktivitami úložiště
Deník Související s aktivitami deníku
Napište Souvisí s operacemi zápisu db

Kontext

Kontextová část chybové zprávy obecně obsahuje vlákno nebo ID připojení. Jiné hodnoty mohou být initandlist. Tato část je ohraničena hranatými závorkami. Zprávy protokolu jakéhokoli nového připojení k MongoDB budou mít hodnotu kontextu jako initandlisten, pro všechny ostatní zprávy protokolu to bude buď ID vlákna nebo ID připojení. Například

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)

Zpráva

Obsahuje skutečnou zprávu protokolu.

Umístění souboru protokolu

Výchozí umístění na serveru je:/var/log/mongodb/mongodb.log

Pokud se soubor protokolu v tomto umístění nenachází, můžete se podívat do konfiguračního souboru MongoDB. Konfigurační soubor MongoDB můžete najít na kterémkoli z těchto dvou umístění.

/etc/mongod.conf or /yourMongoDBpath/mongod.conf

Jakmile otevřete konfigurační soubor, vyhledejte v něm možnost logpath. možnost logpath říká MongoDB, kam má zaznamenat všechny zprávy.

Analýza jednoduché zprávy protokolu

Zde je příklad typické chybové zprávy MongoDB...

2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017

Časové razítko:2014-11-03T18:28:32.450-0500
Závažnost:I
Komponenta:NETWORK
Kontext:[initandlisten]
Zpráva:čekání na připojení na portu 27017

Nejdůležitější částí této chyby je část zprávy. Ve většině případů můžete chybu zjistit pohledem na toto pole. Někdy, pokud vám zpráva není jasná, můžete přejít na součást. Pro tuto zprávu je hodnota komponenty Network, což znamená, že zpráva protokolu souvisí s problémem sítě.

Pokud nejste schopni chybu vyřešit, můžete zkontrolovat závažnost zprávy protokolu, která říká, že tato zpráva je informativní. Dále si také můžete prohlédnout další části zprávy protokolu, jako je časové razítko nebo kontext, abyste našli úplnou hlavní příčinu.

Dekódování běžných chybových zpráv

  1. Zpráva:

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

    Rozlišení: Vytvořte administrátora v ověřovací databázi

  2. Zpráva:

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

    Rozlišení: Odstraňte časový limit z kurzoru nebo zvyšte velikost dávky kurzoru.

  3. Zpráva:

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

    Rozlišení: Porušení omezení jedinečného klíče. Zkuste vložit dokument s jiným klíčem.

  4. Zpráva:

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

    Rozlišení: Latence mezi ovladačem a serverem je příliš velká, ovladač to může vzdát. Nastavení můžete změnit přidáním možnosti connectionTimeout do připojovacího řetězce.

  5. Zpráva:

    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 }

    Rozlišení: Odstraňte duplikaci hodnoty pole _id z konfliktních dokumentů.

  6. Zpráva:

    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

    Rozlišení: Buď server neběží na portu 27017, nebo zkuste server restartovat se správným hostitelem a portem.

Nástroje pro správu protokolů

MongoDB 3.0 aktualizoval své funkce protokolování, aby poskytoval lepší přehled o všech databázových aktivitách. Na trhu je k dispozici mnoho nástrojů pro správu protokolů, jako je MongoDB Ops Manager, položky protokolu, mtools atd.

Závěr

Protokolování je pro dobrou a správnou správu databáze stejně důležité jako replikace nebo sdílení. Pro lepší správu databáze by člověk měl být schopen snadno dekódovat protokoly, aby bylo možné rychle opravit výjimky/chyby. Doufám, že po přečtení tohoto návodu se budete při analýze složitých protokolů MongoDB cítit pohodlněji.


  1. Atomicita, izolace a souběžnost v MongoDB

  2. Proces work-horse byl neočekávaně ukončen RQ a Scrapy

  3. Nastavte klíč/hodnotu redis pomocí camel-redis

  4. Cloudera Replication Plugin umožňuje replikaci na platformě x pro Apache HBase