# Meraki

# Introducción

**Este plugin tiene como finalidad poder monitorizar dispositivos de meraki**, de tipo appliance, switch y wireless.

El plugin conecta con la rest api de Meraki, para poder obtener todas las métricas.

# Matriz de compatibilidad

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

# Pre requisitos

- Es necesaria conectividad hacia los endpoints proporcionados por la API.
- Es necesario un token bearer para poder autenticar.
- El plugin server debe estar habilitado en el entorno.
- El dataserver debe estar habilitado en el entorno

# Parámetros

**Parámetros conexión Meraki**

<table border="1" id="bkmrk---url-url-de-conexi%C3%B3" style="border-collapse: collapse; width: 100%; height: 89.3907px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--url**</td><td style="height: 29.7969px;">Url de conexión de la API, ejemplo : [https://api.meraki.com/api/v1](https://api.meraki.com/api/v1) . Por defecto: https://api.meraki.com/api/v1</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--token**</td><td style="height: 29.7969px;">Token bearer necesario para la autenticación</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--id**</td><td style="height: 29.7969px;">ID de la tienda, que identificara si el grupo existe en Pandora y creara el agente en este, y si existe la network en Meraki.</td></tr><tr><td>**--organization**</td><td>ID de la organización en las que se escanearan las redes.</td></tr><tr><td>**--timespan**</td><td>Intervalo de monitorización para las estadísticas de los puertos de un switch.</td></tr></tbody></table>

**Parámetros configuración Pandora**

<table border="1" id="bkmrk---agent_name-nombre-" style="width: 62.8395%; height: 327.766px;"><colgroup><col style="width: 27.112%;"></col><col style="width: 72.4951%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--agent\_prefix**  
</td><td style="height: 29.7969px;">Prefijo para todos los agentes creados por el plugin  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--module\_prefix**</td><td style="height: 29.7969px;">Prefijo para todos los módulos creados por el plugin</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--location**</td><td style="height: 29.7969px;">Grupos secundarios añadidos al agente</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--interval**</td><td style="height: 29.7969px;">Intervalo de monitorización del agente</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--temporal**</td><td style="height: 29.7969px;">Directorio temporal de PandoraFMS</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--data\_dir**  
</td><td style="height: 29.7969px;">Directorio de datos de PandoraFMS</td></tr><tr><td>**--group**</td><td>Grupo del agente.</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--transfer\_mode**  
</td><td style="height: 29.7969px;">Modo de transferencia de datos, local o tentacle</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--tentacle\_client**  
</td><td style="height: 29.7969px;">Ruta del cliente de tentacle, por defecto "tentacle\_client"</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--tentacle\_opts**  
</td><td style="height: 29.7969px;">Opciones adicionales de tentacle  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--tentacle\_port**  
</td><td style="height: 29.7969px;">Puerto de tentacle  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**--tentacle\_address**  
</td><td style="height: 29.7969px;">IP de tentacle</td></tr></tbody></table>

**Parámetros Extra**

<table border="1" id="bkmrk---scan_appliance-des" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>**--scan\_appliance**</td><td>Deshabilitar el escaneo de dispositivos appliance con 0. Por defecto activado a 1.</td></tr><tr><td>**--scan\_switch**</td><td>Deshabilitar el escaneo de dispositivos switch con 0. Por defecto activado a 1.</td></tr><tr><td>**--scan\_wireless**</td><td>Deshabilitar el escaneo de dispositivos wireless con 0. Por defecto activado a 1.</td></tr><tr><td>**--log\_file**</td><td>Ruta en la que se guardará el fichero de logs, por ejemplo :  
/tmp/meraki\_logfile.txt  
</td></tr></tbody></table>

# Ejecución manual

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

```
./pandora_meraki --id < id > --url < url > --token < token > --location < location > --organization < organization > --timespan < interval switch port data monitoring in seconds >
--module_prefix < module prefix > --agent_prefix < agent prefix >
[ --scan_appliance < 1 or 0 > ] [ --scan_switch < 1 or 0 > ] [ --scan_wireless < 1 or 0 > ]
[ --transfer_mode < local o tentacle > ] [ --tentacle_port < tentacle_port > ] [ --tentacle_address < tentacle_address > ] [ --tentacle_client < tentacle client path ] [ --tentacle_opts < tentacle extra options ]
[ --data_dir < data dir > ] [ --group < group > ] [ --temporal < temporary directory path > ] [ --interval < interval agent monitorings in seconds > ] [--log_file < log file >]
```

# 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:**

```
/usr/share/pandora_server/util/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:**

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/image.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 son obligatorios, --id, --url, --token, --agent\_prefix, --localization y --tentacle\_address ya que todos los demás se pueden usar con los valores default.</p>

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/G2nimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/G2nimage.png)

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

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/3g0image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/3g0image.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 configurado y se le debe dar a "crear".**

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/Fcbimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/Fcbimage.png)

**8. Se crearan los agentes en la siguiente ejecución del plugin :**

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/scaled-1680-/oPIimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/oPIimage.png)

# Agentes y módulos generados por el plugin

La ejecución del plugin con la monitorización de todos los tipos de dispositivo habilidades creara los siguientes agentes:

- Un agente por cada dispositivo de tipo appliance , se creará en los grupos especificados, y contendrá la IP.

<table border="1" id="bkmrk-%3C-prefijo-%3E%3C-nombre-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td>&lt; prefijo &gt;&lt; nombre dispositivo &gt;</td></tr></tbody></table>

Con los siguientes módulos

<table border="1" id="bkmrk-%3C-prefijo-modulo-%3Est" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>&lt; prefijo modulo &gt;status</td><td>Estado del dispositivo, 1 si esta online, 0 de no ser el caso.</td></tr><tr><td>&lt; prefijo modulo &gt;perfScore</td><td>Indica como de ocupado esta el dispositivo.</td></tr></tbody></table>

Y uno por cada interface :

<table border="1" id="bkmrk-%3C-prefijo-modulo-%3E%3C-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>&lt; prefijo modulo &gt;&lt; Nombre interface &gt;</td><td> Estado de la interface.</td></tr></tbody></table>

- Un agente por cada dispositivo de tipo switch , se creará en los grupos especificados, y contendrá la IP.

<table border="1" id="bkmrk-%3C-prefijo-%3E%3C-nombre--1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td>&lt; prefijo &gt;&lt; nombre dispositivo &gt;</td></tr></tbody></table>

Con los siguientes módulos

<table border="1" id="bkmrk-%3C-prefijo-modulo-%3Est-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>&lt; prefijo modulo &gt;status</td><td>Estado del dispositivo, 1 si esta online, 0 de no ser el caso.</td></tr></tbody></table>

Y los siguientes por cada puerto:

<table border="1" id="bkmrk-portid%3A-%3C-port-id-%3E-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50.0618%;"></col><col style="width: 50.0618%;"></col></colgroup><tbody><tr><td>&lt; port ID &gt;\_ifOperStatus</td><td>1 si esta habilitado, 0 de no ser el caso</td></tr><tr><td>&lt; port ID &gt;.ifInOctets</td><td>Trafico total mandado en kb</td></tr><tr><td>&lt; port ID &gt;.T\_ifOutOctets</td><td>Tráfico total recibido en kb</td></tr></tbody></table>

- Un agente por cada dispositivo de tipo wireless , se creará en los grupos especificados, y contendrá la IP.

<table border="1" id="bkmrk-%3C-prefijo-%3E%3C-nombre--2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.8765%;"></col></colgroup><tbody><tr><td>&lt; prefijo &gt;&lt; nombre dispositivo &gt;</td></tr></tbody></table>

Con los siguientes módulos

<table border="1" id="bkmrk-%3C-prefijo-modulo-%3Est-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>&lt; prefijo modulo &gt;status</td><td>Estado del dispositivo, 1 si esta online, 0 de no ser el caso.</td></tr><tr><td>&lt; prefijo modulo &gt;totalKbps</td><td>Kb de uso el ultimo día totales</td></tr><tr><td>&lt; prefijo modulo &gt;sentKbps</td><td>Kb de uso el ultimo día envíados</td></tr><tr><td>&lt; prefijo modulo &gt;receivedKbps</td><td>Kb de uso el ultimo día recibidos</td></tr><tr><td>&lt; prefijo modulo &gt;clientCount</td><td>Conexiones de clientes totales</td></tr></tbody></table>