Advanced Log Monitoring

Este documento describe la monitorización genérica de logs basada en el plugin de monitorización de logs avanzado

Introducción

Este documento describe la configuracion y uso del plugin Advanced Log Parser para la monitorizacion de logs en Pandora FMS. El plugin escanea un directorio en busca de ficheros de log, aplica filtros mediante expresiones regulares sobre el nombre de fichero y el contenido de las lineas, y genera modulos de tipo log con los resultados codificados en base64.

A diferencia de otros plugins de monitorizacion de logs, Advanced Log Parser utiliza un sistema de indices incremental: solo procesa las lineas nuevas que aparecen en los ficheros desde la ultima ejecucion, evitando relecturas y duplicados.

Requisitos

El plugin tiene los requisitos para funcionar correctamente:

Matriz de compatibilidad


Linux

Sistemas donde se ha probado

Rocky 9

Sistemas donde debería funcionar

Cualquier sistema linux soportado por PandoraFMS

Windows

Sistemas donde se ha probado

Windows Server 2022

Sistemas donde debería funcionar

Cualquier sistema Windows soportado por PandoraFMS


Parámetros de configuración

El plugin se configura mediante un fichero de configuración externo. Este archivo de configuración tiene una serie de parámetros «generales» , una serie de parámetros específicos para cada registro, y un conjunto de parámetros específicos para cada bloque de expresión regular.

Parametros generales

Parametros específicos de log

Definicion de expresiones regulares

File\sdoes\snot\sexist → Find “File does not exist”
[0-9]*\serrores → Find strings “043 errores”


Para entender cada elemento, a continuación se muestra un ejemplo de fichero de configuración.

Linux

# Include, para cargar archivos de configuración externos/adicionales
# include /tmp/my_other_configuration.conf

# Directorio donde se almacenarán los índices temporales (/tmp por defecto)
#index_dir /tmp

# Registrar problemas con el logparser, (/tmp/pandora_logparser.log por defecto)
#logfile /tmp/pandora_logparser.log

#Ejemplo de creacion de modulo de tipo log
log_begin
log_module_name errors file
log_force_readall
log_location_file /var/log/errors.out
log_description get errors
log_type log_module
log_regexp_begin
log_regexp_rule (?i)error
log_regexp_severity CRITICAL
log_return_message Error
log_regexp_end
log_end

# Ejemplo de coincidencia en un unico archivo de registro
log_begin
log_module_name Weekly
log_location_file /var/log/weekly.out
log_description Errors cannot find
log_type return_lines
log_regexp_begin
log_regexp_rule output
log_regexp_severity WARNING
log_return_message Cannot find process to run
log_regexp_end
log_end

# Ejemplo de coincidencia en varios archivos de registro dentro del mismo módulo
log_begin
log_rotate_mode md5
log_module_name system_log
log_force_readall
log_location_multiple /var/log/system.log*
log_description Errors cannot find
log_type return_lines
log_regexp_begin
log_regexp_rule Cannot
log_regexp_severity WARNING
log_return_message Cannot find process to run
log_regexp_end
log_end

# Ejemplo con distintos patrones dentro de un mismo archivo
log_begin
log_module_name hits_apache
log_location_file /var/log/apache2
log_description Access log from Apache, we will get the integria access
log_type return_ocurrences
log_regexp_begin
log_regexp_rule Error -($1)\-($2) [0-9a-zA-Z]*
log_regexp_severity WARNING
log_return_message Otro bonito texto de error
log_regexp_end
log_regexp_begin
log_regexp_rule File\sdoes\snot\sexist
log_regexp_severity WARNING
log_regexp_end
log_regexp_begin
log_regexp_rule pandora_backend\.html
log_regexp_severity WARNING
log_return_message Something possible harmful happen
log_regexp_end
log_end

# Ejemplo con varios patrones en varios ficheros de registro con diferentes módulos dinámicos
log_begin
log_rotate_mode inode
log_module_name test_log
log_force_readall
# Si se activa, este token creará un módulo diferente utilizando el module_name
# y el nombre completo del archivo de registro sustituyendo / por " ".
log_create_module_for_each_log
log_location_multiple /tmp/log*/hola*
log_description Errors cannot find
log_type return_lines
log_regexp_begin
log_regexp_rule adios
log_regexp_severity WARNING
log_return_message Cannot find process to run
log_regexp_end
log_end


Windows

# Include external/additional configuration files
# include C:\PandoraFMS\conf\extra.conf

# Temporary index directory
index_dir C:\PandoraFMS\tmp\logparser

# Log file for logparser errors
logfile C:\PandoraFMS\logs\pandora_logparser.log


# Example: log module creation
log_begin
log_module_name errors_file
log_force_readall
log_location_file C:\Logs\errors.log
log_description get_errors
log_type log_module
log_regexp_begin
log_regexp_rule (?i)error
log_regexp_severity CRITICAL
log_return_message Error_detected
log_regexp_end
log_end


# Example: single log file matching
log_begin
log_module_name weekly_log
log_location_file C:\Logs\weekly.log
log_description weekly_errors
log_type return_lines
log_regexp_begin
log_regexp_rule output
log_regexp_severity WARNING
log_return_message Cannot_find_process_to_run
log_regexp_end
log_end


# Example: multiple log files in same module
log_begin
log_rotate_mode md5
log_module_name system_log
log_force_readall
log_location_multiple C:\Logs\system.log*
log_description system_errors
log_type return_lines
log_regexp_begin
log_regexp_rule Cannot
log_regexp_severity WARNING
log_return_message Cannot_find_process_to_run
log_regexp_end
log_end


# Example: multiple patterns in one log file
log_begin
log_module_name apache_access
log_location_file C:\Logs\apache\access.log
log_description apache_access_log
log_type return_occurrences

log_regexp_begin
log_regexp_rule Error\-([0-9]+)
log_regexp_severity WARNING
log_return_message Apache_error_detected
log_regexp_end

log_regexp_begin
log_regexp_rule File\sdoes\snot\sexist
log_regexp_severity WARNING
log_regexp_end

log_regexp_begin
log_regexp_rule pandora_backend\.html
log_regexp_severity WARNING
log_return_message Potential_issue_detected
log_regexp_end

log_end


# Example: dynamic modules for multiple files
log_begin
log_rotate_mode inode
log_module_name test_log_dynamic
log_force_readall

log_create_module_for_each_log
log_location_multiple C:\Logs\app*.log
log_description application_logs
log_type return_lines

log_regexp_begin
log_regexp_rule adios
log_regexp_severity WARNING
log_return_message Match_found
log_regexp_end

log_end


Configuración del plugin

Copie los plugins al directorio de plugins del agente, distribúyalo a través de colecciones de ficheros o copiándolo en la carpeta del agente de pandora. Haga lo mismo con los ficheros adicionales que necesiten. El comando de ejecución del plugin dentro de la configuración del agente será similar a este, pero utilizando las rutas donde estarían ubicados el plugin y el fichero de configuración. 

Ejemplo de ejecución en Linux:

module_plugin /var/opt/PandoraFMS/etc/pandora/plugins/pandora_logparser /var/opt/PandoraFMS/etc/pandora/collections/fc_23/log_example.conf

En windows sería lo mismo, pero adaptandolo a las rutas de tu maquina :

module_plugin C:\Program Files\PandoraFMS\Pandora Agent\plugins\pandora_logparser.exe C:\Program Files\PandoraFMS\Pandora Agent\collections\fc_23\log_example.conf