Mongo DB y Mongo DB atlas

Plugin para coger los stats de una base de datos y de sus colecciones, soporta compatibilidad con Mongo DB atlas.

Introducción

Ver. 25-08-2021

Con este plug-in podremos ver los stats de una base de datos y de sus colecciones, soporta compatibilidad con Mongo DB atlas

Tipo: Plug-in de servidor o agente

Matriz de compatibilidad

Sistemas donde se ha probado

CentOS 7, Fedora

Sistemas donde debería funcionar

Cualquier sistema linux 

 

Pre requisitos

Se requiere:

Configuración

Para el uso del plugin será necesario tener instalado una serie de dependencias.

Lo primero es tener instalado python 3

yum install python3

El plugin viene con un archivo llamado requirements.txt que instalará las otras dependencias necesarias. Para ejecutarlo usaremos:

pip3 install -r requirements.txt

No obstante, si quieres instalar sus dependencias sin el archivo requirements, puedes usar los siguientes comandos (recomendado si no usas una base de datos Mongo DB atlas)

PyMongo 

python -m pip install pymongo

o con el siguiente comando si python 3 no es tu versión de python por defecto:

python3 -m pip install pymongo

dnspython

python -m pip install dnspython

o con el siguiente comando si python 3 no es tu versión de python por defecto:

python3 -m pip install pymongo

nota: dnspython solo es imprescindible si usas una base de datos MongoDB atlas.

 

Para conectarte, necesitas conocer tu ip o uri de conexión. Si te has montado la base de datos en docker puedes verlo con :

docker inspect <id-contenedor>

image-1629969157626.png

El puerto por defecto suele ser 27017. Por ejemplo con esta ip la url de conexión sería :

mongodb://172.17.0.2:27017

 

Para MongoDB atlas, necesitaremos la cadena de conexión, esta se obtiene haciendo lo siguiente.

Vamos a connect:

1.png

Nos saldrán varias opciones para conectarnos:

2.png

Yo por ejemplo, he optado por MongoDB compass, al darle, nos mostrará la cadena de conexión, si es que ya lo hemos instalado, o nos dará la opción de instalarlo.

3.png

Esa sería la cadena de conexión, obviamente habría que cambiar <password> por tu contraseña.

 

 

Parámetros generales del plugin

 

./pandora_mongodb -u <uri> -d <databases -s <server> -a <alldatabases> -p <prefix> -c <collectionstats> [ -g <group> ] [ --data_dir <data dir> ] [ --as_agent_plugin 1]

 

Si la ejecución es correcta veremos un número entero, que sera el numero de base de datos que tengamos.

4.png

Si queremos ejecutarlo como plugin de agente lo haremos usando el parámetro opcional "as_agent_plugin" con un "1" que nos devolverá un xml con los datos de nuestro servidor :

5.png

Esto solo funcionará si metes una única base de datos con el parámetro -d , no funcionara con -a que es el parámetro para todas las bases de datos.

Parámetros específicos del plugin

El plug-in contiene los siguientes parámetros:

Parameter Description
-u <uri> --u <uri> La uri de conexión (obligatorio)
-s <server> --server <server> Para activar los stats del server (cluster)
-d <name_database> --databases <name_database> Para coger los stats de una base de datos, la del nombre que tu introduzcas
-a <1> --alldatabases <1> Para coger los stats de todas las bases de datos, se activa con 1
-p <prefix> --prefix <prefix> Para poner un nombre en los agentes (opcional)
-c <1> --collectionstats <1> Para activar los stats de las colecciones de la base de datos, se activa con 1 (opcional)
-g GROUP, --group GROUP Grupo de destino de Pandora FMS (opcional)
--data_dir DATA_DIR Directorio de datos de Pandora FMS. Por defecto es /var/spool/pandora/data_in/ (opcional)
--as_agent_plugin Es opcional, si quieres que el plugin sea de agente y te meta los módulos en el agente de pandora, ejecuta esto con un 1 (opcional)

Ejemplo de ayuda:

./pandora_mongodb

6.png

Ejecución manual

Podemos comprobar el plugin desde el terminal para ver si funciona, para comprobarlo, ejecutamos el plugin:

image-1629973021245.png

Con as_agent_plugin:

image-1629973734411.png

Ejemplo de ejecución con ayuda:

image-1629973766276.png

Configuración en pandora

Instalación desde consola

Para el registro del plugin, desde la consola, se debe ir al apartado "registrar plugin".

register_plugin.png

Daremos a seleccionar archivo.

register_plugin2.png

Seleccionaremos el fichero pspz2 que contiene el plugin.

register1_mongodb.png

Una vez subido se podrá ver un mensaje indicando que esta registrado correctamente.

register2_mongodb.png

Una vez registrado el plugin, lo veremos en el apartado plugins.

serversingles.png

En el apartado parámetros veremos todos los que usa el plugin, no todos son imprescindibles para su funcionamiento, solo los que salen como obligatorios en parámetros.

register3_mongodb.png

En el apartado de abajo veremos todos los parámetros utilizados y se les podrá asignar el valor requerido.

register4_mongodb.png

 

Instalación manual

La mejor forma de manejar plugins de servidor en Pandora es desde "/usr/share/pandora_server/util/plugin" asi que lo enviaremos esa ruta.

Después nos moveremos a la carpeta en la que lo hemos metido ( "/usr/share/pandora_server/util/plugin" es la recomendada").

Recuerda: Tienes que instalar las dependencias que necesita el módulo PyMongo en tu sistema, esta explicado en el apartado configuración.

Nos movemos desde home con :
cd /usr/share/pandora_server/util/plugin/

Ejecutamos el plugin para ver que funciona :

./pandora_mongodb -u <uri> -s <server> -d <databases -a <alldatabases> -p <prefix> -c <collectionstats> [ -g <group> ] [ --data_dir <data dir> ] [ --as_agent_plugin 1]

image-1629974206435.png

Con as_agent_plugin 1 podremos ver un XML con los datos que nos saldrán en consola:

image-1629974241455.png

Si lo ejecutamos de la primera manera, sin "as_agent_plugin 1" se nos habrá creado un agente por cada database de nuestro cluster. El parámetro --as_agent_plugin solo podremos ejecutarlo si metemos las bases de datos una a una introduciendo su nombre con el parámetro -d.

De todas formas, por si se prefiere instalarlo manualmente desde la consola, el proceso sería el siguiente:

Como plugin de servidor

Iremos a servidores > plugins:

image-1629974405286.png

Pinchamos en añadir:

image-1629974430627.png

Le ponemos en nombre y la descripción que se prefiera:

7.png

Metemos como comando la ruta al plugin, y como parámetros los que hemos metido ejecutando el plugin, los campos "_field_" son macros definidas más abajo.

8.png

Ponemos por cada macro la descripción que se prefiera y como valor los datos de mongodb.

9.png

Hecho esto si ejecutamos el plugin desde el terminal se nos habrá creado el agente con los módulos.

 

Modulos generados

Se nos creara un agente por cada database de nuestro cluster con datos de los stats de las databases y de las colecciones y otro agente con módulos con los datos del server.

Módulos database

Nombre módulo 
collections
views
objects
avgObjSize
datasize
storagesize
totalfreestoragesize
numextents
indexes
indexsize
filesize
nssizemb
status

 

Módulos colecciones

Nombre módulo
size
count
avgobjsize
storagesize
freestoragesize
capped
nindexes
totalindexsizes
totalsizes
scalefactor
status

 

Módulos server :

connections current
connections avalaible
connections total created
network bytes in
network bytes out
network num requests
operations insert
operations query
operations update
operations delete

 

operations get more
operations command
writes latency
writes ops
reads latency
reads ops
commands latency
commands ops

 

modulos database collections.png

 

modulos server status.png