Docker swarm monitoring El plugin de Pandora FMS para la monitorización de Docker le permite escanear su swarm y recuperar la información en su consola de Pandora FMS como vistas de cluster Introduccion Docker nos permite desplegar aplicaciones de manera ágil, dinámica, precisa y simple. Con Docker Swarm estas aplicaciones correrán como servicios, pudiendo balancear la carga de manera dinámica. El plugin de monitorización de servicios en Docker permite visualizar en Pandora el estado de estos servicios, así como las estadísticas de uso de recursos por parte de los contenedores desplegados en el docker local. El plugin docker_services escaneará el swarm, recuperando la lista de servicios, tareas y nodos a través de los métodos proporcionados por los comandos de docker. Con los datos recolectados, se enviarán XML a Pandora FMS, para representar como agentes los nodos del swarm. Una vez creados los agentes de nodos, se creará vía API tantas vistas de cluster como servicios se hayan encontrado. Utilizando la API, se enlazarán los recursos, crearán los agentes pertinentes, y agregarán los módulos de monitorización de los servicios. Matriz de compatibilidad Este plugin se ha desarrollado utilizando Docker versión 18.03.1-ce, build 9ee9f40 Pre requisitos Se requiere: ● Requiere lanzarse desde el nodo MANAGER (o REACHABLE ) del docker swarm. ● Puede lanzarlo desde máquinas remotas utilizando docker_machine . Se requiere conectividad con la API de Pandora FMS. https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_es:Anexo_API_external Se requiere conexión con el servicio Tentacle asociado a su servidor de Pandora FMS (para ejecuciones locales del plugin) bajo las siguientes condiciones: ● Si tiene as_server_plugin habilitado. El despliegue de este plugin por binarios no requiere ningún requisito especial. El script 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 Configuracion # Launch a pre-command before invoke docker commands pre_command = eval $(docker-machine env ml1) docker = docker # Log file log_file = /tmp/pandora_docker.log # Show all modules instead only those with values all_modules = 1 pre_command Configura un comando de precarga de entorno previa ejecución de los comandos para extraer información. Defina el siguiente contenido si utiliza docker_machine : pre_command = eval $(docker-machine env nombre_de_nodo) docker Ubicación del binario docker completa, si existe en el PATH de sistema puede dejar el valor por defecto ‘docker ’ log_file Ubicación y nombre del fichero de log que utilizará el plugin all_modules Se generarán tantos módulos como estados posibles existan para las tareas con su respectivo valor si este parámetro está activo (1). En caso de estar desactivado (0) sólo se mostrarán los módulos de tareas cuyo estado se haya alcanzado. Por ejemplo, si tenemos el parámetro desactivado y el número de tareas en estado pending fuera 0, no se mostraría este módulo. Configuración general # Agent configuration agent_interval = 300 agent_group = Unknow agent_group_id = 10 # Module interval module_interval = 1 #module_tags = docker,services module_group = Docker # Pandora API configuration api_url = http://nova.lab.artica.lan/pandora_console/include/api.php api_user = admin api_user_pass = pandora api_pass = pandora # Pandora FMS API flow process timeout (seconds) api_timeout = 10 api_retries = 3 agent_interval Establece el valor del intervalo del agente. agent_group Establece el grupo de los agentes y las vistas de clúster que se crearán en Pandora FMS Console. agent_group_id Establece manualmente una id al grupo. module_interval Es un factor multiplicativo del valor del intervalo del agente. Define el intervalo de ejecución de los módulos. Evitará que los módulos se vayan a desconocido si tenemos que el intervalo de ejecución del plugin es mayor que el del agente. module_tags Define la lista de etiquetas que se aplicarán a los módulos generados por el plugin. Deben estar previamente definidos en Pandora FMS. module_group Define el grupo de módulos en el que se clasificarán los módulos generados por el plugin. Debe estar previamente definido en Pandora FMS. api_url Define la url donde acceder a la API de la consola de Pandora FMS. api_user Define el usuario con acceso a la API. api_user_pass Contraseña del usuario con acceso a la API. api_pass Contraseña de la API de la consola de Pandora FMS. api_timeout Establece el tiempo máximo que se dedicará el plugin a intentar recuperar información de la API de Pandora FMS. api_retries Establece el número máximo de reintentos en llamadas a la API de Pandora FMS. Modos de ejecución y transferencia de datos # Pandora Server configuration mode = tentacle tentacle_ip = nova.lab.artica.lan tentacle_port = 41121 tentacle_opts = tentacle_client = tentacle_client local_folder = /var/spool/pandora/data_in temp = /tmp mode Modo de transferencia de ficheros XML, puede ser: ● local: copia los ficheros a local_folder ● tentacle: transfiere los ficheros 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. Ejecución manual Para ejecutar el plugin configure el archivo de configuración según las instrucciones precedentes. Ejecución del plugin: Versión binaria: ./docker_services.64 docker_services.conf Versión código sin librerías desplegadas: perl -I lib pandora_mysql.pl pandora_mysql.conf Donde, lib es un directorio que contiene la carpeta PandoraFMS que contiene la librería PluginTools.pm Nota : Puede personalizar las opciones indicadas por el fichero de configuración agregando ‘-campo valor’ tras la llamada: ./docker_services.64 docker_services.conf -agent_interval 200 Ejecución programada Se ejecuta como plugin de servidor, como module_exec en un agente, o desde el cron del sistema. Resultados posibles: ● si devuelve 1 el resultado es correcto ● distinto de 1, ha habido un error y deberá consultar el log del programa Modulos 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): Se crearán los siguientes agentes: ● Un agente por nodo del docker swarm con los siguientes módulos: ○ [nombre del servicio] estado ○ [nombre del servicio] running ○ Node availability ○ Node status ○ Node TLS status