Difference between revisions of "Pandora: Documentation es: Monitorizacion logs"
(→Configuración del servidor) |
(→Configuración de la consola) |
||
Line 171: | Line 171: | ||
Esta operación liberará el espacio utilizado por el índice eliminado. | Esta operación liberará el espacio utilizado por el índice eliminado. | ||
+ | |||
+ | |||
=== Configuración de la consola === | === Configuración de la consola === | ||
Line 194: | Line 196: | ||
* Días para purgado: Para evitar que el tamaño del sistema, se puede definir un número máximo de días que se almacenará la información de logs, a partir de esa fecha se borrarán automáticamente en el proceso de limpieza de Pandora FMS. | * Días para purgado: Para evitar que el tamaño del sistema, se puede definir un número máximo de días que se almacenará la información de logs, a partir de esa fecha se borrarán automáticamente en el proceso de limpieza de Pandora FMS. | ||
− | |||
− | |||
== Migración al sistema LogStash + ElasticSearch == | == Migración al sistema LogStash + ElasticSearch == |
Revision as of 16:07, 6 September 2017
Volver a Indice de Documentacion Pandora FMS
Contents
- 1 Recolección de logs
- 1.1 Introducción
- 1.2 Cómo funciona
- 1.3 Configuración
- 1.4 Migración al sistema LogStash + ElasticSearch
- 1.5 Visualización y búsqueda
- 1.6 Configuración de los agentes
1 Recolección de logs
1.1 Introducción
Pandora FMS es un sistema de monitorización que -básicamente- recoge eventos, e información de rendimiento, en datos numéricos. A veces se usa para monitorizar el resultado de ciertos comandos en forma de texto, lo mismo se utiliza para "buscar" determinadas expresiones o trozos de texto dentro de un log y devolver únicamente esa información, no todo el log.
También se puede usar pandora para contar el número de ocurrencias de una expresion en un log, o simplemente el número de lineas totales de un fichero. En cualquier caso eso seria monitorización numérica no monitorización o recolección de logs.
El gran problema de la recolección masiva de logs es el gran tamaño que ocupan. Estamos hablando de entornos que van desde los 100MB diarios hasta los cientos de MB diarios. Esto significa, por supuesto que esta información no puede ir almacenada en la Base de datos.
Hasta ahora, Pandora FMS no tenia una solución a este problema, pero con la versión 5.0, Pandora FMS Enterprise ofrece una solución para poder gestionar cientos de megas de datos diarios. Esta solución permite reutilizar los mismos agentes de la monitorización para la recolección específica de datos de logs, utilizando una sintaxis muy similar a la actual para la monitorización de logs.
A partir de la versión 7.0NG 712, Pandora FMS incorpora LogStash + ElasticSearch para almacenar la información de logs, lo que implica una mejora sustancial del rendimiento.
1.2 Cómo funciona
El proceso es simple:
- Los logs analizados por los agentes (eventlog o ficheros de texto), son reenviados hacia el servidor de Pandora, en forma "literal" (RAW) dentro del XML de reporte del agente:
- El servidor de pandora (DataServer) recibe el XML del agente, que contiene información tanto de monitorización como de logs.
- Cuando el DataServer procesa los datos del XML, identifica la información de los logs, guardando en la base de datos principal las referencias del agente que ha reportado y el origen del log, enviando automáticamente la información a LogStash para su almacenado.
- LogStash almacena la información en ElasticSearch.
- Finalmente, podemos consultar la información de logs a través del visor en la consola de Pandora FMS. Esta realizará las consultas contra el servidor ElasticSearch configurado.
1.3 Configuración
1.3.1 Configuración del servidor
El nuevo sistema de almacenamiento de logs basado en ElasticSearch + LogStash, requiere configurar los diferentes componentes.
1.3.1.1 Requisitos para el servidor
Es posible distribuir cada componente (Pandora FMS Server, ElasticSearch, LogStash) en servidores independientes.
Si decide alojar ElasticSearch y LogStash en el mismo servidor recomendamos:
- Al menos 4GB de RAM
- Al menos 2 CPU cores
- Al menos 20 GB de espacio en disco para el sistema
- Al menos 50 GB de espacio en disco para el punto de montaje /var, montado como LVM
1.3.1.2 Instalación y configuración de ElasticSearch
Instalar ElasticSearch desde el RPM descargable de la página web del proyecto ElasticSearch: https://www.elastic.co/downloads/elasticsearch
Configurar el servicio:
Configuraremos las opciones de red y opcionalmente las ubicaciones de datos (y logs del propio ElasticSearch) en el fichero de configuración ubicado en /etc/elastic/elasticsearch.yml
# ---------------------------------- Network ----------------------------------- # Set the bind address to a specific IP (IPv4 or IPv6): network.host: 0.0.0.0 # Set a custom port for HTTP: http.port: 9200 # ----------------------------------- Paths ------------------------------------ # Path to directory where to store the data (separate multiple locations by comma): #path.data: /var/lib/elastic # Path to log files: #path.logs: /var/log/elastic
Habrá que ajustar las opciones de recursos asignados a ElasticSearch, ajustando los parámetros disponibles en el fichero de configuración ubicado en /etc/elastic/jvm.options
# Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space -Xms512m -Xmx512m
Iniciar el servicio:
systemctl start elasticsearch
1.3.1.3 Instalación y configuración de LogStash
Instalar LogStash desde el RPM descargable de la página web del proyecto ElasticSearch: https://www.elastic.co/downloads/logstash
Configurar el servicio
Dentro de la configuración de logstash existen tres bloques de configuración:
- Input: indica cómo le llega la información a logstash, formato, puerto, y un identificador que se utilizará para almacenar la información internamente en elastic
- Filter: Es posible agregar un post-procesado aquí, pero para nuestro caso no será necesario, por lo que lo dejaremos vacío.
- Output: Aquí viene la configuración de la IP y puerto donde estará escuchando ElasticSearch, es el sitio donde se guardará la información procesada por logstash.
Fichero de configuración:
/etc/logstash/conf.d/logstash.conf
Ejemplo de fichero de configuración:
# This input block will listen on port 10514 for logs to come in. # host should be an IP on the Logstash server. # codec => "json" indicates that we expect the lines we're receiving to be in JSON format # type => "rsyslog" is an optional identifier to help identify messaging streams in the pipeline. input { tcp { host => "127.0.0.1" port => "10514" codec => "json" type => "pandora_log_entry" } } # This is an empty filter block. You can later add other filters here to further process # your log lines filter { } output { elasticsearch { hosts => ["localhost:9200"] } }
Iniciar el servicio:
systemctl start logstash
1.3.1.4 Parámetros de configuración en Pandora FMS Server
Será necesario agregar la siguiente configuración para que Pandora FMS DataServer procese la información de logs.
Importante: Todo log que llegue a pandora sin tener activa esta configuración será descartado.
logstash_host eli.artica.lan logstash_port 10516
1.3.1.5 Recomendaciones
1.3.1.5.1 Rotación de logs para ElasticSearch y Logstash
Importante: Como recomendación, crear una nueva entrada para el demonio de rotado de logs en /etc/logrotate.d, para evitar que los logs de ElasticSearch o LogStash crezcan sin medida:
cat > /etc/logrotate.d/elastic <<EOF /var/log/elastic/elaticsearch.log /var/log/logstash/logstash-plain.log { weekly missingok size 300000 rotate 3 maxage 90 compress notifempty copytruncate } EOF
1.3.1.5.2 Purgado de índices
Puede consultar en todo momento el listado de índices y el tamaño que ocupan lanzando una petición cURL contra su servidor ElasticSearch:
curl -q http://elastic:9200/_cat/indices?
Para eliminar cualquiera de estos índices puede ejecutar la orden DELETE:
curl -q -XDELETE http://elastic:9200/logstash-2017.09.06
Esta operación liberará el espacio utilizado por el índice eliminado.
1.3.2 Configuración de la consola
Para activar el sistema de visualización de logs deberá activar la siguiente configuración:
Luego, podemos configurar el comportamiento del visor de logs en la pestaña 'Log Collector':
En esta pantalla podremos configurar:
- Dirección IP o FQDN del servidor que aloja el servicio ElasticSearch
- Puerto a través del que se está prestando el servicio ElasticSearch
- Número de logs mostrados. Para agilizar la respuesta de la consola, se ha añadido la carga dinámica de registros. Para usarla, el usuario debe hacer scroll hasta el final de la página, lo que obliga al cargar el siguiente grupo de registros disponible. El tamaño de estos grupos se puede configurar en este campo como el número de registros por grupo.
- Días para purgado: Para evitar que el tamaño del sistema, se puede definir un número máximo de días que se almacenará la información de logs, a partir de esa fecha se borrarán automáticamente en el proceso de limpieza de Pandora FMS.
1.4 Migración al sistema LogStash + ElasticSearch
Una vez configurado el nuevo sistema de almacenamiento de logs, puede migrar todos los datos almacenados previamente en Pandora FMS, en forma distribuída en directorios al nuevo sistema.
Para migrar al nuevo sistema, deberá ejecutar el siguiente script que puede encontrar en /usr/share/pandora_server/util/
# Migrate Log Data < 7.0NG 712 to >= 7.0NG 712 /usr/share/pandora_server/util/pandora_migrate_logs.pl /etc/pandora/pandora_server.conf
1.5 Visualización y búsqueda
En una herramienta de colección de logs, nos interesan principalmente dos cosas: buscar información, filtrando por fecha y/o fuentes de datos, y ver esa información dibujada en ocurrencias por unidad de tiempo. En este ejemplo, estamos buscando en la última semana, cualquier fuente de datos que contenga la expresion "named":
Existe una seria de filtros que podemos usar para mostrar la información: El más obvio es el rango de fechas (principio y fin), y otros como el modulo u origen de la informacion (definido a la hora de configurar el colector de logs en el agente) y el agente origen del log:
El campo más importante -y útil- para nosotros, será la cadena de búsqueda (search en la captura). Esto puede ser una simple cadena de texto, como en el caso anterior o una expresion regular, como por ejemplo una dirección ip:
192.168.[0-9]+.[0-9]+
Como vemos en la captura de pantalla siguiente, esto busca en el intervalo de fecha/hora definido (la ultima hora), para cualquier fuente de datos, cualquier dato que "parezca" una IP, dentro del rango 192.168.0.0/16
1.6 Configuración de los agentes
La recolección de logs se hace mediante los agentes, tanto en el agente Windows como en los agentes Unix (Linux, MacOsX, Solaris, HPUX, AIX, BSD, etc). En el caso de los agentes Windows, tambien se pueden obtener información del visor de eventos de windows, utilizando los mismos filtros que en el modulo de monitorización del visor de eventos.
Veamos dos ejemplos para capturar información de logs, en windows y en unix:
1.6.1 En Windows
module_begin module_name Eventlog_System module_type log module_logevent module_source System module_end
module_begin module_name PandoraAgent_log module_type log module_regexp C:\archivos de programa\pandora_agent\pandora_agent.log module_description This module will return all lines from the specified logfile module_pattern .* module_end
En ambos casos, la unica diferencia de un modulo de monitorización a la definición de una fuente de log, es:
module_type log
Esta nueva sintaxis sólo la entiende el agente de la version 5.0, por lo que debe actualizar los agentes si quiere utilizar esta nueva funcionalidad enterprise.
1.6.2 Sistemas Unix
En Unix se utiliza un nuevo plugin, que viene con el agente de la versión 5.0. Su sintaxis es bien sencilla:
module_plugin grep_log_module /var/log/messages Syslog \.\*
Similar al plugin de parseo de logs (grep_log) el plugin grep_log_module envia la información procesada del log al colector de logs con el nombre de "Syslog" como origen del log. Utiliza la expresion regular \.\* (en este caso "todo") como patron a la hora de elegir que lineas enviamos y cuales no.