Los EndPoints se instalan y se encuentran en ejecución en los sistemas operativos de los cuales recogen información, realizando un chequeo para cada módulo.
Las directivas propias del EndPoint sirven para recoger ciertos datos directamente del sistema operativo (tales como uso de CPU, memoria, eventos, etcétera), ejecutando comandos propios del sistema operativo siguiendo instrucciones de scripts predefinidos.
El Dataserver Pandora FMS procesa y almacena en la base de datos toda la información generada y enviada en fichero XML por los EndPoints.
Toda la configuración y los parámetros se encuentran almacenados en el fichero pandora_agent.conf, el cual está instalado también localmente junto a su EndPoint. La configuración básica está tratada en "Configuración de los EndPoints Pandora FMS" y, para la monitorización WUX, en la sección de ejecución manual como plugin. A continuación se expone la configuración avanzada.
En el archivo de configuración del EndPoint los módulos están definidos con la siguiente estructura básica de texto:
module_begin module_name <your module name> module_type generic_data module_exec <your command> module_description <your description> module_end
module_name, si desea o necesita utilizar caracteres ASCII extendidos (áéíóú, entre otros) se debe utilizar un plugin o script externo. Consulte la sección de plugin para EndPoints.module_exec_powershell para la ejecución nativa de chequeos con PowerShell®.
Para habilitar la configuración remota se habilita el parámetro: remote_config 1 y se reinicia el EndPoint.
Es posible gestionar remotamente los ficheros de los EndPoints desde la Consola Web de Pandora FMS. La configuración de cada EndPoint se almacena en el servidor de Pandora FMS en dos ficheros: <md5>.conf y <md5>.md5, donde <md5> es el hash del nombre del EndPoint. Estos ficheros son almacenados respectivamente en:
/var/spool/pandora/data_in/conf
y
/var/spool/pandora/data_in/md5
Una vez que la configuración remota del EndPoint está activada, cualquier cambio que se haga localmente en el fichero de configuración será sobrescrita por la configuración almacenada en la consola. Para volver a la administración local del EndPoint, detenga su servicio, restablezca remote_config a cero e inicie el servicio de nuevo.
Los campos personalizados permiten añadir información adicional al EndPoint. Se pueden crear campos personalizados con la API 1.0 PFMS y el comando set create_custom_field o por medio de la Consola web en el menú Management → Resources → Custom fields → Create field.
Además, será necesario activar este token para enviar la información de los Custom Fields al Command Center.
<![CDATA[…]]>. Si el formato JSON del enlace es:["Web name","https://example.com"]
El XML tendría esta sintaxis:
<custom_fields> <name>![CDATA[web]]</name> <value>![CDATA[["Web name","https://example.com"|]]]</value> </custom_fields>
Consulte “Validación de XML”, la Arquitectura de Seguridad para el protocolo Tentacle (mecanismo encargado de entregar datos en formato XML al Data server PFMS) y la Arquitectura de Seguridad para el Data server PFMS (limitar la autocreación de EndPoint y establecer una contraseña para el grupo de EndPoints al cual pertenezca cada EndPoint).
Los custom fields también se pueden pasar desde el fichero de configuración del EndPoint, utilizando los token custom_fieldx_name y custom_fieldx_value:
custom_field1_name Serial Number custom_field1_value 56446456KS7000
El campo personalizado llamado Serial Number viene creado por defecto al instalar PFMS. Se pueden crear tantos campos personalizados como se necesiten y de cada tipo distinto (valor simple, enlace web, tipo contraseña y tipo lista de opciones). Es indiferente el orden del identificador numérico de cada campo personalizado, solamente se debe asegurar que el nombre sea exactamente el mismo:
custom_field11_name Simple custom field name custom_field11_value Simple custom field value custom_field12_name Custom field Link type custom_field12_value ["Pandora FMS web site","https://pandorafms.com"] custom_field13_name Custom field Password type custom_field13_value My;Password; custom_field14_name Custom field Combo type custom_field14_value Two
En los campos personalizados Combo type el valor enviado por al EndPoint debe corresponder exactamente con alguno de los item del mismo, de lo contrario el valor no será cambiado.
Parámetros más importantes para la configuración básica de EndPoints:
server_ip: Dirección IP del servidor de Pandora FMS.server_path: Ruta de la carpeta de entrada incoming del servidor Pandora FMS, por defecto /var/spool/pandora/data_in
temporal: Carpeta, por defecto /tmp.interval: Intervalo de ejecución del EndPoint, por defecto 300 segundos.logfile: Archivo de log del EndPoint, por defecto: /var/log/pandora/pandora_agent.log
Menú Management → Resources → Manage agent groups.
Por defecto, cuando un EndPoint envía datos por primera vez al servidor de Pandora FMS se añade de forma automática al grupo que se haya definido en el fichero de configuración del EndPoint.
Es posible configurar una contraseña (sin espacios ni símbolos) para un grupo, de esta manera un EndPoint no se añadirá a un grupo a menos que se haya especificado la contraseña correcta en el fichero de configuración del EndPoint.
Para añadir un EndPoint nuevo a este grupo, edite su fichero de configuración y añada la siguiente opción de configuración group_password y reinicie el EndPoint.
Según dato devuelto:
generic_data: Numérico.generic_data_inc: Incremental.generic_data_inc_abs: Absoluto incremental.generic_proc: Booleano.generic_data_string: Alfanuméricos.async_data: Numérico asíncrono.async_string: Alfanumérico asíncrono.async_proc: Booleano asíncrono.generic_data_string o async_string). Si el dato que contiene el módulo es una imagen codificada en base64(encabezado data:image) este será identificado como una imagen y habilitará en las vistas un enlace a una ventana para recuperar la imagen. Además se mostrarán en su respectivo histórico un contenido de las distintas imágenes que conforman las cadenas almacenadas.
Los módulos locales (o de EndPoint) tienen todos como “base” el intervalo de su EndPoint. Sin embargo, pueden tomar valores múltiplos de esa base si modifica el parámetro module_interval con un multiplicar entero mayor que cero.
Menú Management → Resources → Manage agents, acceso directo a Modules del agente respectivo, botón Create module → EndPoint module → Create.
La configuración remota del EndPoint respectivo debe estar habilitada.
La creación de módulos locales en la Consola web se realiza mediante un formulario donde, además de la configuración común de todo módulo (umbrales, tipo, grupo, etcétera), se dispone de una caja de texto donde se especifican los datos a establecer en el fichero de configuración del EndPoint.
El EndPoint soporta la ejecución de comandos y scripts en modo de postcondiciones. Esto quiere decir que se pueden realizar acciones dependiendo del valor obtenido en la ejecución del módulo. El parámetro module_condition se utiliza para ello.
El parámetro module_precondition permite evaluar una condición antes de la ejecución del módulo y con el resultado decidir si el módulo se debe ejecutar o no.
Existen ciertos módulos que tienen una importancia especial, tales como procesos o servicios críticos en ejecución. Para poder tener una monitorización más controlada de estos casos existe la monitorización intensiva.
Consiste en avisar en un intervalo más corto de que ha aparecido un problema serio sin necesidad de reducir el intervalo general del EndPoint.
Configuración en EndPoint:
interval: Obligatorio, tiempo de muestreo del EndPoint en segundos, es el intervalo general para todos los módulos locales.intensive_interval: Tiempo en que avisará si existe algún problema, y siempre se ejecutará en este período y si coincide con la condición se notificará en este período de tiempo (de lo contrario los datos se enviarán en el interval).Configuración en módulo:
module_intensive_condition = <value>: Si el módulo obtiene como resultado el valor indicado en este parámetro, notificará en el intervalo intensivo antes definido.<, >, !=, un rango de valores (m,n) y =~.
El servicio sshd es muy importante pues es utilizado para conectar por shell de manera remota y se necesita monitorizar su funcionamiento.
Fichero de configuración del EndPoint:
interval 300 intensive_interval 10
Módulo:
module_begin module_name SSH Daemon module_type generic_data module exec ps aux | grep sshd | grep -v grep | wc -l module_intensive_condition = 0 module_end
Si el servicio está ausente, se notificará en los próximos 10 segundos, si está funcionando notificará cada 5 minutos (intervalo normal, 300 segundos).
El EndPoint soporta la definición de módulos programados que se ejecutan en los instantes definidos. La sintaxis usada es la misma que la del fichero crontab.
Un EndPoint es capaz de realizar chequeos remotos, sustituyendo el servidor principal PFMS e incluso distribuirlos en agentes broker
Los chequeos ICMP o ping son muy útiles para saber si una máquina está conectada o no a una red.
Unix:
module_exec ping -c 1 dir_IP> /dev/null 2>&1; if [ $? -eq 0 ]; then echo 1; else echo 0; fi
MS Windows®:
module_ping dir_IP
Nota: module_advanced_optionspermite opciones avanzadas para ping.exe.
Los chequeos TCP son útiles para verificar que los puertos de una máquina permanecen abiertos y permiten conocer si una aplicación conecta o no a la red.
Unix:
Con el comando nmap y sus parámetros de configuración en la línea de comando, a una dirección IP se chequea si el puerto 80 está abierto (tiempo de espera de respuesta de 5 segundos):
module_begin module_name PortOpen module_type generic_proc module_exec nmap 192.168.100.54 -p 80 | grep open > /dev/null 2>&1; echo $?; if [ $? == 0 ]; then echo 1; else echo 0; fi module_timeout 5 module_end
MS Windows®:
Los parámetros se deben especificar en:
module_tcpcheck: Dirección IP del dispositivo.module_port: Número de puerto.module_timeout: Tiempo de espera para la respuesta, debe estar ubicado entre module_begin y module_end.Caso dado:
module_begin module_name TcpCheck module_type generic_proc module_tcpcheck 192.168.100.54 module_port 80 module_timeout 5 module_end
Los chequeos SNMP son comunes en la monitorización de dispositivos de red para comprobar el estado de interfaces, bytes de entrada/salida, etcétera.
Unix®:
module_exec snmpget dir_IP -v 1 -c public .1.3.6.1.2.1.2.2.1.1.148 | awk '{print $4}'
MS Windows®:
module_snmpget module_snmpversion 1 module_snmp_community public module_snmp_agent 192.168.100.54 module_snmp_oid .1.3.6.1.2.1.2.2.1.1.148 module_end
Para usar el modo proxy del EndPoint de Pandora FMS en Linux/Unix® no se puede utilizar el usuario root para su ejecución, por ello es necesario una instalación especial del EndPoint de Pandora FMS. Para ello consulte la Instalación personalizada del EndPoint.
Este modo permite redirigir los ficheros de datos generados por otros EndPoints al servidor de Pandora FMS. El EndPoint que actúa en Modo Proxy también puede realizar tareas de monitorización.
Configuración de los parámetros:
server_ip: Dirección IP del Pandora FMS server.proxy_mode: Activado (1) o desactivado (0).proxy_max_connection: Número de conexiones simultáneas del proxy, por defecto 10.proxy_timeout: Tiempo de espera de respuesta para el proxy, por defecto 1 segundo.proxy_address: Dirección IP en la que escucha el proxy.proxy_port: Número de puerto en el que escucha el proxy.
EL Modo Broker de los EndPoints permite a un solo EndPoint realizar chequeos y gestionar la configuración como si se tratara de varios EndPoint distintos.
Cuando se activa el Modo Broker en un EndPoint, se crea un nuevo fichero de configuración. A partir de ese momento, el EndPoint original y el nuevo Broker se gestionarán de forma separada con sus ficheros de configuración independientes, como si fuesen dos EndPoints totalmente separados en la misma máquina.
Para crear un Broker se añade una o más líneas con el parámetro broker_agent <broker_name> (una línea para cada Broker).
En la Consola web de Pandora FMS los Broker se ven y gestionan como EndPoint independientes.
module_logevent y module_regexp en MS Windows®) no funcionan cuando hay EndPoint broker configurados.
Para más información visite la sección Inventario local con EndPoints.
Para más información visite el tema Recolección y monitorización de logs.
Un EndPoint es capaz de recibir peticiones remotas y ejecutar órdenes.
Téngase siempre presente que UDP es por naturaleza inseguro (y eficiente para enviar mensajes sin comprometer una respuesta cierta).
Para permitir que el servidor PFMS envie órdenes a los EndPoints a su cargo, se debe configurar:
udp_server: Cero 0 por defecto, valor en uno 1 para activar esta funcionalidad.udp_server_port: Número de puerto de escucha en EndPoint.udp_server_auth_address: Dirección IP del Pandora FMS Server.Se debe reiniciar el EndPoint para que los cambios se apliquen.
0.0.0.0 para que acepte desde todos los orígenes, dicha práctica no es recomendada.2001:0db8:0000:130F:0000:0000:087C:140B, cuya abreviatura es 2001:0db8:0:130F::87C:140B, se deben utilizar ambas direcciones separadas por comas.
Se debe utilizar el script ubicado en:
/usr/share/pandora_server/util/udp_client.pl
Se puede ejecutar desde línea de comando o bien utilizarlo en una alerta, mediante el comando que viene preconfigurado en la consola Remote agent control.
Además de la acción de reiniciar servicio de EndPoint, se pueden especificar acciones personalizadas del tipo:
process_<order_name>_start command
También se pueden crear órdenes que llamen a scripts para realizar múltiples acciones remotas con solamente pulsar un botón.
A diferencia de los plugins de servidor, ejecutados por Pandora FMS server, los plugins de EndPoint reportan uno o varios módulos a la vez.
En MS Windows® los plugins registrados por defecto están programados en VBScript, para ejecutarlos se utiliza el intérprete cscript.exe.
A partir de la versión 776 se cuenta con module_exec_powershell el cual permite introducir comandos más complejos en PowerShell® con caracteres especiales e instrucciones complejas (una instrucción entrega resultados a la siguiente) que son imposibles mediante el módulo module_exec.
# Example of Powershell execution module module_begin module_name Powershell module_type generic_data_string module_exec_powershell <command_1> | <command_2> | … | <command_N> module_end
Los comandos se introducen tal cual, sin necesidad de comillas para que sean procesados por el EndPoint PFMS (los comandos de PowerShell, en cambio, sí pueden necesitar de comillas).
Si el comando no es válido se agrega un error al registro del EndPoint (fichero pandora_agent.log).
Los plugins de Unix estén ubicados por defecto en el directorio del EndPoint:
/usr/share/pandora_agent/plugins
Al tener su configuración remota activada, un EndPoint en su vista de administración dispondrá de la pestaña del editor de plugins. Aunque todos los plugins presentan acciones de edición y borrado algunos de ellos son solamente de lectura (inventario, seguridad) por lo que arrojarán mensajes de error si son manipulados.
Es posible agregar un token en la configuración de los plugins de EndPoint que al ser habilitado permite la opción de 'encapsular' las definiciones de plugins dentro de las etiquetas module_begin y module_end.
Este token habilitado permite insertar bloques de configuración como module_interval o module_crontab, entre otros.
Los plugin pueden ser creados en cualquier lenguaje de programación. Solamente se debe tener en cuenta las normas generales y las normas específicas para su desarrollo.
Asegúrese de terminar la salida del nuevo plugin (si es un script) con un errorlevel 0 o el EndPoint interpretará que el plugin ha tenido un error y no ha podido ejecutar el trabajo.
Nagios tiene un gran número de plugins que se pueden utilizar con Pandora FMS. Un modo de hacerlo es utilizar los plugins remotos con el Heavy Server, usando la compatibilidad de Nagios.
Un módulo singular en Pandora FMS es el tipo llamado keep_alive, utilizado para alertar si un EndPoint ha dejado de enviar información.
El módulo KeepAlive solamente se puede crear desde Consola web, aunque no se tenga configuración remota habilitada y no deja ninguna traza en el fichero pandora_agent.conf.
Se debe ir al menú de administración de agentes en Management → Resources → Manage agents y hacer clic en Modules de un agente.
Una vez esté visible la lista de módulos del agente seleccionado se debe pulsar el botón Create module y seleccionar Endpoint module en la lista Select module type y pulsar Create. El módulo se debe crear de la siguiente manera:
Comandos que presenten salidas extensas, como top o netstat -n pueden ser capturados completamente por un módulo y reproducidos tal cual. El módulo debe configurarse como tipo texto en la configuración remota de manera similar al siguiente código:
module_begin module_name process_table module_type generic_data_string module_exec ps aux module_description Command snapshot of running processes module_group System module_end
En la vista principal de edición de agente, sección inferior de módulos, en la columna Data presentará un icono con la descripción Command Snapshot view donde al hacer clic abrirá una nueva ventana:
Este método permite definir módulos de tipo cadena (generic_data_string o async_string) que contengan imágenes en formato texto con una codificación base64, pudiendo mostrar dicha imagen en lugar de un resultado concreto.
Se crea un fichero script tal como:
#!/bin/bash echo "<module>" echo "<name>Actual leader</name>" echo "<type>async_string</type>" echo "<data><![CDATA[data:image/jpeg;base64,/9j/4AAQSkZ....]]></data>" echo "</module>"
Se graba ese contenido a un archivo en el EndPoint (o distribuyase por colecciones) y se ejecuta así:
module_plugin <complete_path_to_the_file>
“ ” .taskmngr ) de MS Windows®, incluyendo la extensión .exe.
El parámetro module_proc comprueba si un determinado nombre de proceso está operando en esta máquina. Se debe configurar de manera similar:
module_begin module_name CMDProcess module_type generic_proc module_proc cmd.exe module_description Process Command line module_end
Se debe añadir el parámetro module_async yes:
module_begin module_name CMDProcess module_type generic_proc module_proc cmd.exe module_async yes module_description Process Command line module_end
La funcionalidad de Watchdog para MS Windows® permite iniciar de nuevo un proceso interrumpido.
En el siguiente código se configura para que el programa Bloc de notas se ejecute de manera persistente mediante el EndPoint instalado:
module_begin module_name Notepad module_type generic_data module_proc notepad.exe module_description Notepad module_async yes module_watchdog yes module_user_session yes module_start_command "%SystemRoot%\notepad.exe" module_startdelay 3000 module_retrydelay 2000 module_retries 5 module_end
El parámetro module_service comprueba si un determinado servicio se está ejecutando en la máquina. La definición de un módulo usando este parámetro sería:
module_begin module_name Service_Dhcp module_type generic_proc module_service Dhcp module_description Service DHCP Client module_end
Se debe añadir el parámetro module_async yes para que avise inmediatamente cuando un proceso deja de funcionar:
module_begin module_name Service_Dhcp module_type generic_proc module_service Dhcp module_description Service DHCP Client module_async yes module_end
Funciona de manera similar al Watchdog de procesos:
module_begin module_name ServiceSched module_type generic_proc module_service Schedule module_description Service Task scheduler module_async yes module_watchdog yes module_end
La definición del Watchdog para servicios no requiere ningún parámetro adicional como el de procesos porque esa información ya está dentro de la definición del servicio.
Al instalar el EndPoint PFMS para MS Windows® se incluyen los módulos básicos necesarios.
Algunos módulos vienen activos y otros se deben activar por Remote Configuration (o editando de manera local el fichero .conf del EndPoint).