# MQTT

# Introducción

**Este plugin tiene como finalidad poder recibir mensajes de un topic de MQTT**, teniendo la posibilidad de aplicar filtros como palabras o el formato del texto de los mensajes esperados.

El plugin realiza todas estas acciones mediante un cliente con el que conecta.

<div class="notranslate" id="bkmrk-" style="all: initial;"></div>

# Matriz de compatibilidad

<table border="1" id="bkmrk-sistemas-donde-se-ha-1" style="width: 88.3951%;"><tbody><tr><td style="width: 42.8064%;">**Sistemas donde se ha probado**</td><td style="width: 57.1966%;">Rocky linux, Fedora 34</td></tr><tr><td style="width: 42.8064%;">**Sistemas donde funciona**</td><td style="width: 57.1966%;">Cualquier sistema linux</td></tr></tbody></table>

# Pre requisitos

- Es necesaria conectividad hacia el host y topic del que se pretende recibir mensajes.

# Parámetros

**Parámetros de conectividad**

<table border="1" id="bkmrk--i%2C---host-direcci%C3%B3n" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>-i, --host  
</td><td>Dirección del servidor MQTT'</td></tr><tr><td>-p, --port  
</td><td>Puerto del servidor MQTT</td></tr></tbody></table>

**Parámetros para recibir mensajes y filtrar**

<table border="1" id="bkmrk--r%2C---suscribe_topic" style="border-collapse: collapse; width: 100%; height: 149px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">-r, --suscribe\_topic  
</td><td style="height: 29.8px;">Tema de suscripción MQTT</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-t, --time  
</td><td style="height: 29.8px;">Duración del tiempo de ejecución en segundos</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-f, --filter  
</td><td style="height: 29.8px;">Filtro (palabra) a aplicar. Solo se recibiran mensajes que contengan la palabra.  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-k, --format  
</td><td style="height: 29.8px;">Formato de texto de los mensajes esperados a recibir  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">-l, --limit  
</td><td style="height: 29.8px;">Limite de mensajes</td></tr></tbody></table>

**Parámetros configuración Pandora**

<table border="1" id="bkmrk---agent_name-nombre-" style="border-collapse: collapse; width: 100%; height: 314.8px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">--agent\_name  
</td><td style="height: 46.6px;">Nombre del agente que se creará o en el que se creará el módulo  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--interval</td><td style="height: 29.8px;">Intervalo de monitorización del agente</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--temporal</td><td style="height: 29.8px;">Directorio temporal de PandoraFMS</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--data\_dir  
</td><td style="height: 29.8px;">Directorio de datos de PandoraFMS</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--group  
</td><td style="height: 29.8px;">Grupo de destino de PandoraFMS</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--transfer\_mode  
</td><td style="height: 29.8px;">Modo de transferencia de datos, local o tentacle</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--tentacle\_client  
</td><td style="height: 29.8px;">Ruta del cliente de tentacle, por defecto "tentacle\_client"</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--tentacle\_opts  
</td><td style="height: 29.8px;">Opciones adicionales de tentacle  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--tentacle\_port  
</td><td style="height: 29.8px;">Puerto de tentacle  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">--tentacle\_address  
</td><td style="height: 29.8px;">IP de tentacle</td></tr></tbody></table>

**Parámetros extra**

<table border="1" id="bkmrk---log_file-ruta-dond" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>--log\_file  
</td><td>Ruta donde se generará el archivo de logs</td></tr></tbody></table>

# Ejecución manual

El formato de ejecución del plugin es el siguiente:

```
./pandora_mqtt --agent_name < agent name > --host < host > --port < port >  \
[ --subscribe_topic < subscribe_topic > ] [ --time < time > ] \
[ --filter < filter > ] [ --format < format > ] [ --limit < limit > ] \
[ --transfer_mode < local o tentacle > ] [ --tentacle_port < tentacle_port > ] \
[ --tentacle_address < tentacle_address > ] [ --tentacle_client < tentacle client path ] \
[ --tentacle_opts < tentacle extra options ][ -g < group > ] [ --data_dir < data dir > ] \
[ --temporal < temporary directory path > ] [ --interval < interval agent monitorings in seconds > ] \ 
[ --logfile < logfile path > ]
```

# Configuración en PandoraFMS

Para configurar el plugin en PandoraFMS, se deben seguir los siguientes pasos :

**1. Subir el plugin a PandoraFMS, por ejemplo en la siguiente ruta:**

```
/etc/pandora/plugin
```

**2. Dirigirse al apartado plugins y crear uno nuevo:**

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/VNOimagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/VNOimagen.png)

 **3. Se le añade nombre, descripción y timeout:**

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/ERUimagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/ERUimagen.png)

**4. Se añade la ruta del plugin en el comando y los parámetros necesarios para la ejecución de este.**

<p class="callout info">Para cada parámetro se debe configurar una macro, siendo la sintaxis de esta macro la siguiente : \_fieldx\_, siendo x el numero posicional del parámetro, por ejemplo en la siguiente imagen vemos los parámetros que es necesario usar para suscribirse a un topic y recibir mensajes.</p>

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/HPnimagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/HPnimagen.png)

**5. Se configurar las macros anteriores, añadiendo en cada una el valor del parámetro:**

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/sDmimagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/sDmimagen.png)

**6.** **Una vez configurado se debe crear un módulo en un agente que ejecute el plugin. En el menu de módulos de un agente creamos un módulo de tipo plugin nuevo:**

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/503imagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/503imagen.png)

**7. En el menú de configuración del módulo, le ponemos un nombre, seleccionamos el plugin antes cnfigurado y se le debe dar a "crear".**

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/kZHimagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/kZHimagen.png)

**8. En el agente seleccionado con el parámetro --agent\_name, se creará un nuevo módulo de formato lista, que contendrá los mensajes recibidos por la ejecución del plugin**

[![imagen.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/scaled-1680-/3G0imagen.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/3G0imagen.png)

# Agente y módulos generados por el plugin

- El plugin creará un agente con el nombre seleccionado con el parámetro --agent\_name. O en su defecto introducirá el módulo en un agente que ya exista con este nombre.
- El plugin creará un módulo:

<table border="1" id="bkmrk-mqtt.%3Ctopic-de-subsc" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>MQTT.&lt;topic de subscripción&gt;.results  
</td><td>Resultados obtenidos en formato lista, es decir, los mensajes recibidos que han pasado los filtros usados.</td></tr></tbody></table>