# Elasticsearch monitoring

# Introducción

Plugin para la monitorización de servidores ELK, última revisión 17/04/2019.  
  
ELK es un conjunto de herramientas compuesto por Elasticsearch (servidor de búsqueda basado en Lucene), Logctash (herramienta de administración de logs) y Kibana (herramienta para visualizar y explorar datos).   
  
Un potente motor de búsqueda de texto, una herramienta de administración de logs y otra para visualizar y explorar datos.

# Matriz de compatibilidad

Desarrollado contra Kibana 6.2.4.

# Prerrequisitos

Se requiere

- Conexión con el servicio Tentacle asociado a su servidor de Pandora FMS (para la ejecución remota del plugin) para así enviar los datos (ﬁcheros XML) generados por el plugin.

El despliegue de este plugin por binarios no requiere ningún requisito especial.  
  
Requiere la librería PandoraFMS::PluginTools.pm  
  
Esta librería está disponible con la instalación del paquete Pandora FMS OpenSource.  
  
Puede descargar la última versión de:

[https://github.com/pandorafms/pandorafms/blob/develop/pandora\_server/lib/PandoraFMS/PluginTools.pm](https://github.com/pandorafms/pandorafms/blob/develop/pandora_server/lib/PandoraFMS/PluginTools.pm)

# Configuración

##### **Conexión:**

```bash
# Archivo de configuración del complemento ELK
# Define la dirección IP y el puerto del servidor ELK.
elastic_server=127.0.0.1
elastic_port=9200
```

  
**elastic\_server**  
 Dirección IP o FQDN del servidor ELK.  
**elastic\_port**  
 Puerto donde escucha el servidor ELK (9200 por defecto).

El ﬁchero de conﬁguración del plugin Pandora FMS para ELK permite ejecutarlo de dos maneras:

##### **Agente:**  


```bash
# Archivo de configuración del complemento ELK
# Define si se debe ejecutar como complemento de agente o como complemento de servidor. Establezca 0 para ejecutarlo como complemento de servidor o 1 para ejecutarlo como complemento de agente.
as_agent_plugin=1
```

#####   
**Remoto:**  


```bash
# Archivo de configuración del complemento ELK
# Define si se debe ejecutar como complemento de agente o como complemento de servidor. Establezca 0 para ejecutarlo como complemento de servidor o 1 para ejecutarlo como complemento de agente.
as_agent_plugin=0
```

  
**as\_agent\_plugin**  
 1 para ejecutar como plugin de agente.  
 0 para ejecutar como plugin remoto.

Si la ejecución del plugin se va a realizar de manera remota es necesario configurar los siguientes parámetros:

```bash
# Si as_agent_plugin es 0, configure el agente:
agent_name=adama
agent_interval=300
agent_group=Servers
# Y las opciones de transferencia
## Configuración del servidor Pandora
mode=tentacle
tentacle_ip=127.0.0.1
tentacle_port=41121
tentacle_opts
tentacle_client="tentacle_client"
local_folder=/var/spool/pandora/data_in
temporal=/tmp
```

  
**agent\_name**  
 Nombre del agente donde se entregará la información.

**agent\_interval**  
 Intervalo en seg. de ejecución del agente.

**agent\_group**  
 Grupo al que va a pertenecer el agente en Pandora FMS.  
**mode**  
 Modo de transferencia de ﬁcheros XML, puede ser:  
 local: copia los ﬁcheros a local\_folder.  
 tentacle: transﬁere los ﬁcheros a tentacle\_ip por tentacle\_port.

**tentacle\_ip**  
 Dirección IP o FQDN donde Pandora FMS está trabajando.

**tentacle\_port**  
 Puerto donde el servicio Tentacle asociado a su servidor Pandora FMS está escuchando.

**tentacle\_opts**  
 Opciones extra para el cliente Tentacle.

**tentacle\_client**  
 Path donde encontrar el binario del cliente tentacle.

**local\_folder**  
 Ubicación donde mover los archivos en el modo local.

**temp**  
 Ubicación temporal donde almacenar los archivos antes de enviarlos.

##### **Módulos:**   


```bash
## Establezca 1 si desea supervisar el número de índices.
total_index=1
red_index=1
yellow_index=1
## Establezca 1 si desea supervisar el tamaño del índice.
total_index_size=1
red_index_size=1
yellow_index_size=1
## Establezca 1 si desea supervisar las instantáneas.
snapshots=1
## Establezca 1 si desea supervisar las conexiones de puerto.
elastic_conections=1
kibana_conections=1
## Establezca 1 si desea supervisar el uso de memoria de ELK.
memory_usage=1
## Establezca 1 si desea supervisar el uso de la CPU de ELK.
cpu_usage=1
## Establezca 1 si desea supervisar las métricas del disco de ELK.
disk_indices=1
disk_used=1
## Establezca 1 si desea supervisar el recuento de documentos de ELK.
document_count=1
## Check ELK services, 1 enabled 0 disabled.
nginx_status=1
elastic_status=1
logstash_status=1
kibana_status=1
```

0 → Deshabilita la monitorización.  
1 → Habilita la monitorización.

  
**total\_index**  
 Cantidad de índices generados.

**red\_index**  
 Cantidad de índices en estado rojo.

**yellow\_index**  
 Cantidad de índices en estado amarillo.

**total\_index\_size**  
 Tamaño total de índices en mb.

**red\_index\_size**  
 Tamaño de índices en estado rojo en mb.

**yellow\_index\_size**  
 Tamaño de índices en estado amarillo en mb.

**snapshots**  
 Cantidad de capturats generadas.

**elastic\_connections**  
 Número de conexiones al puerto donde escucha elastic (puerto 9200).  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**kibana\_connections**  
 Número de conexiones al puerto donde escucha kibana (puerto 5601).  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**memory\_usage**  
 Uso de memoria del servidor ELK.  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**cpu\_usage**  
 Uso de cpu del servidor ELK.  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**disk\_used**  
 Uso de disco en porcentaje del servidor ELK.

**disk\_indices**  
 Tamaño de disco usado por los índices del servidor ELK.

**document\_count**  
 Cuenta el número de documentos usado por el servidor ELK.

**nginx\_status**  
 Estado del servicio nginx, 0 down, 1 up.  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**elastic\_status**  
 Estado del servicio elastic, 0 down, 1 up.  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**logstash\_status**  
 Estado del servicio logstash, 0 down, 1 up.  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

**kibana\_status**  
 Estado del servicio kibana, 0 down, 1 up.  
 Este módulo SOLO ESTÁ DISPONIBLE en la ejecución como plugin de agente.

# Ejecución manual

Para ejecutar el plugin conﬁgure el archivo de conﬁguración según las instrucciones precedentes.  
  
Ejecución del plugin:  
  
Versión binaria:

```
./pandora_elk.64 pandora_elk.conf
```

  
Versión código sin librerías desplegadas:

```
perl -I ./lib pandora_elk.pl pandora_elk.conf
```

  
Donde, lib es un directorio que contiene la carpeta PandoraFMS, donde se almacena la librería PluginTools.pm

\*\*Se recomienda la ejecución binaria\*\*

# Módulos generados por el plugin

La ejecución estándar de este plugin devolverá los siguientes módulos por defecto (con todos los bloques opcionales habilitados):}

- **Disk\_indices.**
- **Disk\_used.**
- **Document\_count.**
- **Elasticsearch\_status** (sólo en ejecución como plugin de agente).
- **Elastic\_port\_Connections** (sólo en ejecución como plugin de agente).
- **ELK\_Cpu\_use** (solo en ejecución como plugin de agente).
- **ELK\_Memory\_use** (solo en ejecución como plugin de agente).
- **Index\_size.**
- **Kibana\_Port\_Connections** (sólo en ejecución como plugin de agente).
- **Kibana\_status** (sólo en ejecución como plugin de agente).
- **Logstash\_sta**tus (sólo en ejecución como plugin de agente).
- **Nginx\_status** (sólo en ejecución como plugin de agente).
- **Red\_Index.**
- **Red\_Index\_size.**
- **Snapshots.**
- **Total\_index.**
- **Yellow\_index.**
- **Yellow\_inex\_size.**