# 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
**Sistemas donde se ha probado** | Rocky linux, Fedora 34 |
**Sistemas donde funciona** | Cualquier sistema linux |
# Pre requisitos
- Es necesaria conectividad hacia los endpoints proporcionados por la API.
- Es necesario un token bearer para poder autenticar.
- Que se definan como grupos de agentes, grupos en cuyo nombre se contenga
el código de la tienda.
- El plugin server debe estar habilitado en el entorno.
- El dataserver debe estar habilitado en el entorno
# Parámetros
**Parámetros conexión Meraki**
**--url** | 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 |
**--token** | Token bearer necesario para la autenticación |
**--id** | 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. |
**--organization** | ID de la organización en las que se escanearan las redes. |
**--timespan** | Intervalo de monitorización para las estadísticas de los puertos de un switch. |
**Parámetros configuración Pandora**
**--agent\_prefix**
| Prefijo para todos los agentes creados por el plugin
|
**--module\_prefix** | Prefijo para todos los módulos creados por el plugin |
**--location** | Grupos secundarios añadidos al agente |
**--interval** | Intervalo de monitorización del agente |
**--temporal** | Directorio temporal de PandoraFMS |
**--data\_dir**
| Directorio de datos de PandoraFMS |
**--transfer\_mode**
| Modo de transferencia de datos, local o tentacle |
**--tentacle\_client**
| Ruta del cliente de tentacle, por defecto "tentacle\_client" |
**--tentacle\_opts**
| Opciones adicionales de tentacle
|
**--tentacle\_port**
| Puerto de tentacle
|
**--tentacle\_address**
| IP de tentacle |
**Parámetros API Pandora**
**--api\_url**
| Url de la API de Pandora. Ejemplo: [http://172.42.42.101](http://172.42.42.101/)
**Default:** [http://localhost](http://172.42.42.101/)
|
**--api\_user**
| Usuario de la API de Pandora. Ejemplo: admin. **Default:** admin
|
**--api\_pass**
| Contraseña del usuario de la API de Pandora. Ejemplo : pandora. **Default :** pandora
|
**--api\_user\_pass**
| Contraseña del usuario de la API de Pandora. Ejemplo: 1234. **Default:** 1234 |
**Parámetros Extra**
**--scan\_appliance** | Deshabilitar el escaneo de dispositivos appliance con 0. Por defecto activado a 1. |
**--scan\_switch** | Deshabilitar el escaneo de dispositivos switch con 0. Por defecto activado a 1. |
**--scan\_wireless** | Deshabilitar el escaneo de dispositivos wireless con 0. Por defecto activado a 1. |
**--log\_file** | Ruta en la que se guardará el fichero de logs, por ejemplo :
/tmp/meraki\_logfile.txt
|
# 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 > ]
[ --api_url < api url > ] [ --api_user < api user> ] [ --api_pass < api pass > ][ --api_user_pass < api user pass > ]
[ --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 > ] [ --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:**
[](https://pandorafms.com/guides/public/uploads/images/gallery/2024-01/VNOimagen.png)
**3. Se le añade nombre, descripción y timeout:**
[](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.**
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, --api\_url y --tentacle\_address ya que todos los demás se pueden usar con los valores default.
[](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:**
[](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:**
[](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".**
[](https://pandorafms.com/guides/public/uploads/images/gallery/2024-02/Fcbimage.png)
**8. Se crearan los agentes en la siguiente ejecución del plugin :**
[](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 que exista en la red que coincida con el id introducido por parámetro, se creará en los grupos especificados, y contendrá la IP.
< prefijo >< nombre dispositivo > |
Con los siguientes módulos
< prefijo modulo >status | Estado del dispositivo, 1 si esta online, 0 de no ser el caso. |
< prefijo modulo >perfScore | Indica como de ocupado esta el dispositivo. |
Y uno por cada interface :
< prefijo modulo >< Nombre interface > | Estado de la interface. |
- Un agente por cada dispositivo de tipo switch que exista en la red que coincida con el id introducido por parámetro, se creará en los grupos especificados, y contendrá la IP.
< prefijo >< nombre dispositivo > |
Con los siguientes módulos
< prefijo modulo >status | Estado del dispositivo, 1 si esta online, 0 de no ser el caso. |
Y los siguientes por cada puerto:
< port ID >\_ifOperStatus | 1 si esta habilitado, 0 de no ser el caso |
< port ID >.ifInOctets | Trafico total mandado en kb |
< port ID >.T\_ifOutOctets | Tráfico total recibido en kb |
- Un agente por cada dispositivo de tipo wireless que exista en la red que coincida con el id introducido por parámetro, se creará en los grupos especificados, y contendrá la IP.
< prefijo >< nombre dispositivo > |
Con los siguientes módulos
< prefijo modulo >status | Estado del dispositivo, 1 si esta online, 0 de no ser el caso. |
< prefijo modulo >totalKbps | Kb de uso el ultimo día totales |
< prefijo modulo >sentKbps | Kb de uso el ultimo día envíados |
< prefijo modulo >receivedKbps | Kb de uso el ultimo día recibidos |
< prefijo modulo >clientCount | Conexiones de clientes totales |