A continuación, se desarrollarán los pasos a seguir para la compactación, restauración e indexación de la base de datos de mongo y así poder liberar espacio en el filesystem /data. Este proceso es realizado en NMIS9.

Nota: en algunos casos, la información se encuentra en /var/lib/mongo; si se desea realizar el cambio del path, debe modificarse /etc/mongod.conf.

Advertencia: si se modifica el path del archivo, este proceso eliminará los datos históricos de la interfaz gráfica de NMIS y sus módulos.

Depuración de la base de datos de mongo

El procedimiento referido en este punto es recomendado para cuando la partición /data tiene demasiado espacio utilizado. Esto está provocando que NMIS y sus módulos funcionen de manera incorrecta.

En el ejemplo actual, se describe el procedimiento para mantener el histórico del último año, por lo cual el equipo de Opmantek LATAM recomienda realizar la compactación de la base de datos a partir de la fecha que se indica en los siguientes pasos.

Proceso

Nota: no es necesaria la detención de los demonios del servidor, este proceso puede aplicarse directamente.

1. Para este ejemplo, se purgan las colecciones de mongo "events", "actionlog" y "rawlogs", removiendo todo lo anterior a la fecha del miércoles 1 de enero de 2020 (1579651200 en formato Epoch). Esta fecha debe acordarse con cada cliente y se recomienda utilizar la página web https://www.epochconverter.com/ para poder realizar la conversión.

Se ejecutan los siguientes comandos, uno a uno:

mongo

> use opevents

> db.getCollection('events').remove({time: {$lt: 1579651200}})

> db.getCollection('actionlog').remove({time: {$lt: 1579651200}})

> db.getCollection('rawlogs').remove({time: {$lt: 1579651200}})


2. A continuación, se compactan cada una de las colecciones purgadas para liberar el espacio en disco, mediante la ejecución de los siguientes comandos, uno a uno:

mongo

> use opevents

> db.runCommand({compact: 'events'})

> db.runCommand({compact: 'rawlogs'})

> db.runCommand({compact: 'actionlog'})


3. Al final, se logra la reducción de /data a 70%:


Base de datos correcta: copia y restauración

Importante: Este proceso aplica cuando la base de datos funciona de manera correcta y solo se desea realizar una copia para restaurarla posteriormente, ya sea en el mismo servidor o en otro.

El procedimiento referido en este punto es recomendado cuando se desea realizar una copia de la base de datos y una restauración.

Proceso

Ejecutar el siguiente comando para generar un mongodump, lo cual creará una carpeta que contendrá las bases de datos del servidor:

mongodump -u=opUserRW -p=op42flow42 --out=/data/mongodump


Borrar el contenido de la carpeta de mongo:

cd /data/mongo o cd /var/lib/mongo #según aplique
rm -rf *


Ejecutar el setup de mongo para que se genere nuevamente la base de datos (este script debe activar el demonio mongod):

/usr/local/omk/bin/setup_mongodb.pl


Ejecutar el siguiente comando para restaurar la base de datos, lo cual va a restaurar las bases de datos que se generaron con en el primer comando:

mongorestore -u=opUserRW -p=op42flow42 /data/mongodump

Base de datos corrupta: procedimiento para restauración

Importante: Cuando la base de datos se corrompe no es posible recuperar los datos y únicamente es posible reiniciarla desde cero.

Advertencia: si se realiza este procedimiento, se creará una nueva base de datos y todo el histórico del servidor se perderá.

El procedimiento referido en este punto es recomendado cuando mongod no pueda iniciarse de manera correcta, lo cual puede deberse a una corrupción de la base de datos. Esto está provocando que NMIS y sus módulos funcionen de manera incorrecta.

Proceso

Detener nmis9d y mongod.

[root@noc ~]# service nmis9d stop
[root@noc ~]# service mongod stop


Situarse en la carpeta de mongo y eliminar todo su contenido:

cd /data/mongo o cd /var/lib/mongo #según aplique
rm -rf *


Eliminar los archivos .lock y .sock de mongo (si es que existen):

rm /data/mongodb/mongod.lock o /var/lib/mongo/mongod.lock #según aplique
rm /tmp/mongodb-27017.sock


Ejecutar el setup de mongo para que se genere nuevamente la base de datos (este script debe activar el demonio mongod):

/usr/local/omk/bin/setup_mongodb.pl


Iniciar nmis9d

[root@noc ~]# service nmis9d start


Al finalizar, revisar la carpeta /data/mongo para verificar que se hayan generado correctamente los archivos .wt de la base de datos.

Comandos útiles para la indexación de histórico de mongodb

El procedimiento referido en este punto es recomendado para cuando mongod utiliza demasiados recursos del servidor, como puede verse en los siguientes ejemplos:

Proceso

Ejecutar los siguientes comandos, uno a uno:

/usr/local/omk/bin/opcharts-cli.pl act=setup-db
/usr/local/omk/bin/opevents-cli.pl act=setup-db
/usr/local/omk/bin/opconfig-cli.pl act=setup-db
/usr/local/nmis9/bin/nmis-cli act=ensure_indexes

Los cuales ajustarán los índices de la base de datos para optimizar el desempeño de la misma.


Después de un tiempo, el servidor deberá estabilizarse y mongod no deberá de utilizar más allá del 80-100%.

  • No labels