Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Verifica dati registro

Ripristina il database se non viene avviato

Introduzione

In questo documento viene descritto come ripristinare MongoDB sull'appliance Secure Network Analytics (in precedenza Stealthwatch) Manager dopo un arresto anomalo.

Prerequisiti

Requisiti

Nessun requisito specifico previsto per questo documento.

Componenti usati

Il documento può essere consultato per tutte le versioni software o hardware.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi".

Verifica dati registro

Utilizzare il comando less per esaminare il file mongodb.log.

732smc:~# less /lancope/var/mongodb/log/mongodb.log

2021-06-21T14:54:43.029+0000 I CONTROL ***** SERVER RESTARTED *****

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] MongoDB starting : pid=87057 port=27017 dbpath=/lancope/var/database/dbs/mdb/ 64-bit host=ussecrapstwsmc1

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] db version v3.0.15

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] git version: b8ff507269c382bc100fc52f75f48d54cd42ec3b

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] build info: Linux 3555b2234f08 4.9.0-2-amd64 #1 SMP Debian 4.9.13-1 (2017-02-27) x86_64 BOOST_LIB_VERSION=1_49

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] allocator: tcmalloc

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] options: { config: "/etc/mongodb/mongodb.conf", net: { port: 27017 }, processManagement: { fork: true }, storage: { dbPath: "/lancope/var/database/dbs/mdb/" }, systemLog: { destination: "file", logAppend: true, path: "/lancope/var/mongodb/log/mongodb.log" } }

2021-06-21T14:54:43.050+0000 W - [initandlisten] Detected unclean shutdown - /lancope/var/database/dbs/mdb/mongod.lock is not empty.

2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] **************

old lock file: /lancope/var/database/dbs/mdb/mongod.lock. probably means unclean shutdown,

but there are no journal files to recover.

this is likely human error or filesystem corruption.

please make sure that your journal directory is mounted.

found 2 dbs.

see: http://dochub.mongodb.org/core/repair for more information

*************

2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] exception in initAndListen: 12596 old lock file, terminating

2021-06-21T14:54:43.063+0000 I CONTROL [initandlisten] dbexit: rc: 100

Ripristina il database se non viene avviato

Passaggio 1. Controlla lo stato di Mongo

Per controllare lo stato di lc-mongodb.service, usare il comando systemctl is-active lc-mongodb.

Se Mongo è in stato attivo, i risultati saranno simili a quelli riportati di seguito:

732smc:/# systemctl is-active lc-mongodb

active

732smc:/#

Se Mongo non è in uno stato attivo, i risultati saranno simili a quelli riportati di seguito:

732smc:/# systemctl is-active lc-mongodb

inactive

732smc:/#

Passaggio 2. Interrompere il servizio Mongo

Se il servizio lc-mongodb è in stato attivo, arrestarlo con il comando /bin/systemctl stop lc-mongodb.service.

732smc:/# /bin/systemctl stop lc-mongodb.service

732smc:/# /bin/systemctl status lc-mongodb.service | grep Active

Active: inactive (dead) since Thu 2022-04-07 12:33:49 UTC; 1s ago7

Attendere qualche minuto e assicurarsi che il mongo rimanga in stato di arresto. Utilizzare il comando /bin/systemctl status lc-mongodb.service per verificare che il servizio sia in stato inactive.

Passaggio 3. Raccogli ID processo (PID)

Verificare se il file di blocco contiene ancora un PID. Eseguire il comando cat /lancope/var/database/dbs/mdb/mongod.lock.

Questo output mostra che il file di blocco contiene il PID del servizio mongo. Questo file deve contenere dati solo se il servizio è in stato attivo.

Nota: prendere nota del PID, se ne viene restituito uno, in quanto viene utilizzato al punto 4

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

14259

732smc:/#

Questo output mostra che il file di blocco non contiene un PID. Questo file deve essere vuoto se il processo non si trova in uno stato attivo. Se non è presente alcun PID, passare al punto 7.

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

732smc:/#

Passaggio 4. Controlla stato PID

Se il file mongood.lock archiviato nel passaggio 3 conteneva un PID, eseguire il fax ps | grep [1]4259 (modificare [1]4259 con il PID dal passaggio 3) per verificare l'esistenza del PID e successivamente terminare il PID se viene rilevato.

Nota: l'espressione tra parentesi non è necessaria, ma determina l'esclusione del comando "grep" nell'output.

732smc:/# ps faux | grep [1]4259

mongodb 14259 0.3 0.4 516180 71520 ? Sl 12:38 0:03 /lancope/mongodb/bin/mongod --fork --config /etc/mongodb/mongodb.conf

732smc:/# kill -9 14259

732smc:/#

Passaggio 5. Cancella contenuto file di blocco

Cancellare il contenuto del file di blocco con il comando > /lancope/var/database/dbs/mdb/mongod.lock. Verificare che il file sia vuoto con il comando cat /lancope/var/database/dbs/mdb/mongo.lock.

732smc:/# > /lancope/var/database/dbs/mdb/mongod.lock

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

732smc:/#

Passaggio 6. Tentativo di avvio di MongoDB

Provare ad avviare il servizio lc-mongodb con il comando /bin/systemctl start lc-mongodb.service. Quando il prompt viene restituito, controllare lo stato del processo selezionando /bin/systemctl status lc-mongodb.service | grep Active.

732smc:/# /bin/systemctl start lc-mongodb.service

732smc:/# /bin/systemctl status lc-mongodb.service | grep Active

Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago

732smc:/#

Se lo stato del processo è attivo, verificare di nuovo tra qualche minuto per assicurarsi che rimanga attivo. Se il database rimane in uno stato funzionante, non è necessario ripristinarlo.  Se il processo non rimane attivo, andare al passo 7 e avviare un processo di riparazione.

Passaggio 7. Avvia ripristino

Eseguire il comando sudo -u mongodb /lancope/mongodb/bin/mongod —dbpath /lancope/var/database/dbs/mdb —repair

732smc:/# sudo -u mongodb /lancope/mongodb/bin/mongod --dbpath /lancope/var/database/dbs/mdb/ --repair

732smc:/#

Passaggio 8. Tentativo di avviare il database MongoDB ripristinato

Eseguire il comando /bin/systemctl start lc-mongodb.service per avviare il servizio.  Il processo deve rimanere in uno stato attivo e può essere controllato con il comando /bin/systemctl status lc-mongodb.service.

732smc:/# /bin/systemctl start lc-mongodb.service

732smc:/# /bin/systemctl status lc-mongodb.service | grep Active

Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago