Difference between revisions of "Pandora: Documentation es: Monitorizacion logs"

From Pandora FMS Wiki
Jump to: navigation, search
(Introducción)
(Boleto GitLab # 6368 .)
 
(100 intermediate revisions by 13 users not shown)
Line 1: Line 1:
[[Pandora:Documentation|Volver a Indice de Documentacion Pandora FMS]]
+
[[Pandora:Documentation|Volver al Índice de Documentación Pandora FMS]]
 +
 
  
 
= Recolección de logs =
 
= Recolección de logs =
  
==Introducción==
+
== Introducción ==
 
 
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.
 
  
La monitorización de logs en Pandora FMS se plantea de dos formas diferentes:
+
{{Tip|[[Image:icono-modulo-enterprise.png|Versión Enterprise.]]<br>Versión 5.0 o superior.}}
#<b>basada en módulos</b>: representa logs en Pandora como monitores asíncronos, pudiendo asociar alertas a las entradas detectadas que cumplan una serie de condiciones preconfiguradas por el usuario. La representación modular de los logs nos permite:
 
##Crear módulos que cuenten las ocurrencias de una expresión regular en un log.
 
##Obtener las líneas y el contexto de los mensajes de log
 
  
#<b>basada en visualización combinada</b>: permite al usuario visualizar en una única consola toda la información de logs de múltiples orígenes que se desee capturar, organizando la información secuencialmente utilizando la marca de tiempo en que se procesaron los logs.
+
La monitorización de ''logs'' en Pandora FMS está establecida de dos formas diferentes:
 +
#'''Basada en módulos''': Representa ''logs'' en Pandora FMS como monitores asíncronos, pudiendo asociar alertas a las entradas detectadas que cumplan una serie de condiciones preconfiguradas por el usuario. La representación modular de los ''logs'' permite:
 +
##Crear módulos que cuenten las ocurrencias de una expresión regular en un ''log''.
 +
##Obtener las líneas y el contexto de los mensajes de ''log''.
 +
#'''Basada en visualización combinada''': Permite al usuario visualizar en una única Consola toda la información de ''logs'' de múltiples orígenes que se desee capturar, organizando la información de manera secuencial, utilizando la marca de tiempo en que se procesaron los ''logs''.
  
A partir de la versión 7.0NG 712, Pandora FMS incorpora <b>LogStash + ElasticSearch</b> para almacenar la información de logs, lo que implica una mejora sustancial del rendimiento.
+
A partir de la versión 7.0 NG 712, Pandora FMS incorpora [https://es.wikipedia.org/wiki/Elasticsearch '''ElasticSearch'''] para almacenar la información de ''logs'', lo que implica una mejora sustancial del rendimiento.
<br><br>
 
  
 
== Cómo funciona ==
 
== Cómo funciona ==
El proceso es simple:
 
 
<center><br><br>
 
[[Image:Esquemas-logs.png|650px]]
 
</center><br><br>
 
  
* 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:
+
[[Image:LogsEsquema.png|center|650px|Pandora FMS y ElasticSearch, funcionamiento.]]
  
* El servidor de pandora (DataServer) recibe el XML del agente, que contiene información tanto de monitorización como de logs.
+
* Los ''logs'' analizados por los [[Pandora:Documentation_es:Glosario_Terminos#Agente_software|Agentes Software]] ('''eventlog''' o ficheros de texto), son reenviados hacia el servidor de Pandora FMS, en forma "literal" (RAW) dentro del [[Pandora:Documentation_es:Glosario_Terminos#Ficheros_de_datos_.2F_XML_de_datos|XML]] de reporte del agente.
  
* 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.
+
* El Data Server Pandora FMS recibe el XML del agente, que contiene información tanto de monitorización como de ''logs''.
  
* LogStash almacena la información en ElasticSearch.
+
* Cuando el Data Server 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'' y luego enviando automáticamente la información a 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.
 
  
 +
* Pandora FMS almacena los datos en índices de ElasticSearch generando diariamente un índice único por cada instancia de Pandora FMS.
  
 +
* El servidor de Pandora FMS dispone de una tarea de mantenimiento que elimina los índices en el intervalo definido por el administrador del sistema (por defecto, 90 días).
  
 
== Configuración ==
 
== Configuración ==
Line 40: Line 34:
 
=== Configuración del servidor ===
 
=== Configuración del servidor ===
  
El nuevo sistema de almacenamiento de logs basado en ElasticSearch + LogStash, requiere configurar los diferentes componentes.
+
El sistema de almacenamiento de ''logs'' basado en ElasticSearch, requiere configurar y afinar sus componentes.
 
 
  
 
==== Requisitos para el servidor ====
 
==== Requisitos para el servidor ====
  
Es posible distribuir cada componente (Pandora FMS Server, ElasticSearch, LogStash) en servidores independientes.
+
Es posible distribuir a Pandora FMS Server y ElasticSearch en servidores independientes.
  
Si decide alojar ElasticSearch y LogStash en el mismo servidor recomendamos:
+
* CentOS 7 o superior.
 +
* Al menos 4 gigabytes de RAM, aunque se recomiendan 6 GB de RAM por cada instancia de ElasticSearch.
 +
* Al menos 2 CPU ''cores''.
 +
* 20 GB de espacio en disco para el sistema.
 +
* 50 GB de espacio en disco para los datos de ElasticSearch (el número puede variar dependiendo de la cantidad de datos que se desee almacenar).
 +
* Conectividad desde el Servidor y Consola de Pandora FMS a la API de ElasticSearch (por defecto puerto 9200/TCP ).
  
* Centos 7
+
==== Instalación y configuración de ElasticSearch ====
* 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
 
* Conectividad con el puerto 10516/TCP desde el servidor de Pandora a LogStash y el 9200/TCP desde la consola de Pandora a ElasticSearch
 
 
 
Si se dispone de máquina que aloje base de datos de histórico se podria usar la misma para la instalación de ElasticSearch y LogStash. En ese caso los requisitos mínimos de la máquina se deberán ajustar al número de datos que vayamos a procesar en ambos casos, siendo los mínimos:
 
 
 
* Centos 7
 
* Al menos 4GB de RAM
 
* Al menos 4 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
 
  
==== Instalación y configuración de ElasticSearch ====
+
Antes de empezar con la instalación de estos componentes es necesaria la instalación de Java en una máquina CentOS:
Antes de empezar con la instalación de estos componentes es necesaria la instalación de java en la máquina:
 
  
 
  yum install java
 
  yum install java
  
Una vez instalado java, instalar ElasticSearch desde el RPM descargable de la página web del proyecto ElasticSearch: https://www.elastic.co/downloads/elasticsearch
+
Una vez instalado Java, instalar ElasticSearch [https://www.elastic.co/guide/en/elasticsearch/reference/7.6/rpm.html siguiendo la documentación oficial]; para  [https://www.elastic.co/guide/en/elasticsearch/reference/7.6/deb.html entornos Debian cuenta con sus propias instrucciones].
  
 
Configurar el servicio:
 
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/elasticsearch/elasticsearch.yml''
+
Se deben configurar las opciones de red y, opcionalmente, las ubicaciones de datos (y logs del propio ElasticSearch) en el fichero de configuración ubicado en <code>/etc/elasticsearch/elasticsearch.yml</code>.
  
 
  # ---------------------------------- Network -----------------------------------
 
  # ---------------------------------- Network -----------------------------------
# Set the bind address to a specific IP (IPv4 or IPv6):
 
network.host: 0.0.0.0
 
 
  # Set a custom port for HTTP:
 
  # Set a custom port for HTTP:
 
  http.port: 9200
 
  http.port: 9200
 
  # ----------------------------------- Paths ------------------------------------
 
  # ----------------------------------- Paths ------------------------------------
 
  # Path to directory where to store the data (separate multiple locations by comma):
 
  # Path to directory where to store the data (separate multiple locations by comma):
  #path.data: /var/lib/elastic
+
  path.data: /var/lib/elastic
 
  # Path to log files:
 
  # Path to log files:
  #path.logs: /var/log/elastic
+
  path.logs: /var/log/elastic
 +
 
 +
 
 +
Será necesario ''descomentar'' y definir también las siguientes líneas:
 +
 
 +
cluster.name: elkpandora
 +
node.name: ${HOSTNAME}
 +
bootstrap.memory_lock: true
 +
network.host: ["127.0.0.1", “IP"]
 +
 
 +
;cluster.name: Será el nombre que recibirá el grupo o ''cluster''.
 +
;node.name: Para nombrar el nodo utilizando la variable de sistema <code>${HOSTNAME}</code>, este tomará automáticamente el nombre del anfitrión.
 +
;bootstrap.memory_lock: Siempre deberá ser verdadero "true".
 +
;network.host: La dirección IP del servidor.
 +
 
 +
** En caso de trabajar con un solo nodo, será necesario añadir también la siguiente línea:
 +
 
 +
discovery.type: single-node
 +
 
 +
** En caso de trabajar con un ''cluster'' necesitaremos completar el parámetro <code>discovery.seed_hosts</code>.
 +
 
 +
discover.seed_hosts : ["ip:port", "ip", "ip"]
 +
 
 +
O bien:
  
 +
discovery.seed_hosts:
 +
  - 192.168.1.10:9300
 +
  - 192.168.1.11
 +
  - seeds.mydomain.com
  
Habrá que ajustar las opciones de recursos asignados a ElasticSearch, ajustando los parámetros disponibles en el fichero de configuración ubicado en ''/etc/elasticsearch/jvm.options''
+
Determine las opciones de recursos asignados a ElasticSearch, ajustando los parámetros disponibles en el fichero de configuración ubicado en <code>/etc/elasticsearch/jvm.options</code>. Se recomienda utilizar al menos 2 GB de espacio en XMS.
  
  # Xms represents the initial size of total heap space
+
  # Xms represDeents the initial size of total heap space
 
  # Xmx represents the maximum size of total heap space
 
  # Xmx represents the maximum size of total heap space
  -Xms512m
+
  -Xms2g
  -Xmx512m
+
  -Xmx2g
 +
 
 +
La asignación de recursos se asignará en función del uso que se quiera dar a ElasticSearch, recomendamos seguir [https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html la documentación oficial].
 +
 
 +
Es necesario cambiar también en el fichero de configuración de ElasticSearch el parámetro <code>memlock unlimited</code>, ubicado en el fichero <code>/usr/lib/systemd/system/elasticsearch.service</code> para añadir el siguiente parámetro:
 +
 
 +
MAX_LOCKED_MEMORY=unlimited
  
 +
Una vez finalizado será necesario ejecutar:
  
Iniciar el servicio:
+
systemctl daemon-reload && systemctl restart elasticsearch
 +
 
 +
El comando para iniciar el servicio es:
  
 
  systemctl start elasticsearch
 
  systemctl start elasticsearch
  
 +
{{Tip|Si el servicio no consigue iniciarse, revise los logs ubicados en <code>/var/log/elasticsearch/</code>}}
 +
 +
Para comprobar la instalación de ElasticSearch ejecute el siguiente comando en una ventana terminal:
 +
 +
curl -q <nowiki>http://{IP}:9200/</nowiki>
  
<b>Nota</b> Si el servicio no consigue iniciarse, revise los logs ubicados en /var/log/elasticsearch/
+
Recibirá una respuesta similar a la siguiente:
 +
 
 +
{
 +
  "name" : "3743885b95f9",
 +
  "cluster_name" : "docker-cluster",
 +
  "cluster_uuid" : "7oJV9hXqRwOIZVPBRbWIYw",
 +
  "version" : {
 +
    "number" : "7.6.2",
 +
    "build_flavor" : "default",
 +
    "build_type" : "docker",
 +
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
 +
    "build_date" : "2020-03-26T06:34:37.794943Z",
 +
    "build_snapshot" : false,
 +
    "lucene_version" : "8.4.0",
 +
    "minimum_wire_compatibility_version" : "6.8.0",
 +
    "minimum_index_compatibility_version" : "6.0.0-beta1"
 +
  },
 +
  "tagline" : "You Know, for Search"
 +
}
  
<b>Nota 2</b> Si está intentando instalar en Centos 6 contra nuestra recomendación, puede agregar al fichero de configuración yml las siguientes líneas para deshabilitar el uso de bootstrap contra sistema.
+
Se recomienda visitar el enlace a las best practices de ElasticSearch para entornos de producción:
  
bootstrap.system_call_filter: false
+
https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod
transport.host: localhost
 
  
==== Instalación y configuración de LogStash ====
+
==== Pandora FMS Syslog Server ====
  
Instalar LogStash desde el RPM descargable de la página web del proyecto ElasticSearch: https://www.elastic.co/downloads/logstash
+
{{Tip|[[Image:icono-modulo-enterprise.png|Versión Enterprise.]]<br>Versión NG 717 o superior.}}
  
Configurar el servicio
+
Este componente permite a Pandora FMS analizar el [https://es.wikipedia.org/wiki/Syslog '''syslog'''] de la máquina donde está ubicado, analizando su contenido y almacenando las referencias en el servidor ElasticSearch correspondiente.
  
Dentro de la configuración de logstash existen tres bloques de configuración:
+
La ventaja principal del Syslog Server consiste en complementar la unificación de ''logs''. Con apoyo de las características de exportado de Syslog Server de los entornos Linux® y Unix®, Syslog Server permite la consulta de ''logs'' independientemente del origen, buscando en un único punto común (visor de ''logs'' de la consola de Pandora FMS).
* 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:
+
La instalación de Syslog Server se debe realizar tanto en cliente como en servidor, y para ejecutarla es necesario lanzar el siguiente comando:  
  
  /etc/logstash/conf.d/logstash.conf
+
  yum install rsyslog
  
 +
Una vez instalado '''syslog''' en los equipos a trabajar, hay que acceder al fichero de configuración <code>/etc/rsyslog.conf</code> para habilitar el ''input'' de '''TCP''' y '''UDP'''.
  
Ejemplo de fichero de configuración:
+
(...)
 +
 +
# Provides UDP syslog reception
 +
$ModLoad imudp
 +
$UDPServerRun 514
 +
 +
# Provides TCP syslog reception
 +
$ModLoad imtcp
 +
$InputTCPServerRun 514
 +
 +
(...)
  
# This input block will listen on port 10514 for logs to come in.
+
Tras realizar este ajuste será necesario detener y volver a arrancar el servicio '''rsyslog'''. Una vez el servicio esté disponible, comprobar que el puerto <code>514</code> está accesible con:
# 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  => "0.0.0.0"
 
    port  => 10516
 
    codec => "json"
 
    type  => "pandora_remote_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"] }
 
}
 
  
 +
netstat -ltnp
  
Iniciar el servicio:
+
Para más información de la configuración de rsyslog,  [https://www.rsyslog.com/ visite la web oficial].
  
systemctl start logstash
+
'''En el cliente''' configurar para que pueda enviar los ''logs'' al Syslog Server. Para ello acceda una vez más al fichero de configuración de '''rsyslog''' <code>/etc/rsyslog.conf</code> '''''en el cliente'''''. Localice y habilite la línea que permite configurar el ''host'' remoto.
  
 +
*.* @@remote-host:514
  
<b>Nota</b> Si está intentando instalar LogStash en Centos 6 en contra de nuestra recomendación, puede iniciarlo con el siguiente comando:
+
{{Tip|El envío de ''logs'' genera un agente contenedor con el nombre del cliente por lo que se recomienda crear los agentes con “'''alias as name'''” haciendo que coincida con el ''hostname'' del cliente, así se evitará duplicidad en los agentes.}}
  
initctl start logstash
+
Para activar esta funcionalidad en Pandora FMS Server, habilite en el archivo <code>pandora_server.conf</code> el siguiente contenido:
  
==== Parámetros de configuración en Pandora FMS Server ====
+
# Enable (1) or disable (0) the Pandora FMS Syslog Server
 +
#  (PANDORA FMS ENTERPRISE ONLY).
 +
syslogserver 1
 +
 +
# Full path to syslog's output file (PANDORA FMS ENTERPRISE ONLY).
 +
syslog_file /var/log/messages
 +
 +
# Number of threads for the Syslog Server
 +
#  (PANDORA FMS ENTERPRISE ONLY).
 +
syslog_threads 2
 +
 +
# Maximum number of lines queued by the Syslog Server's
 +
#  producer on each run (PANDORA FMS ENTERPRISE ONLY).
 +
syslog_max 65535
  
Será necesario agregar la siguiente configuración al archivo de configuración de Pandora FMS Server (/etc/pandora/pandora_server.conf)  para que Pandora FMS DataServer procese la información de logs.
+
;syslogserver: ''Booleano'', habilita (1) o deshabilita (0) el motor de análisis de SYSLOG local.
 +
;syslog_file: Ubicación del fichero donde se entregan las entradas de los SYSLOG.
 +
;syslog_threads: Número de hilos máximo que se utilizarán en el sistema productor/consumidor del Syslog Server.
 +
;syslog_max: Es la ventana de procesado máxima para Syslog Server; será el número máximo de entradas del SYSLOG que se procesarán en cada iteración.
  
'''Importante''': Todo log que llegue a pandora sin tener activa esta configuración será '''descartado'''.
+
{{Warning|Necesitará un servidor ElasticSearch habilitado y configurado; por favor, revise los puntos precedentes para saber cómo ello.}}
  
logstash_host eli.artica.lan
+
{{Tip|Recuerde que es necesario que modifique la configuración de su dispositivo para que los ''logs'' se envíen al servidor de Pandora FMS.}}
logstash_port 10516
 
  
 
==== Recomendaciones ====
 
==== Recomendaciones ====
  
===== Rotación de logs para ElasticSearch y Logstash =====
+
===== Rotación de logs para ElasticSearch =====
  
'''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:
+
'''Importante''': para evitar que los logs de ElasticSearch crezcan sin medida, debe crear una nueva entrada para el demonio o ''daemon'' de rotado de ''logs'' en <code>/etc/logrotate.d</code>:
  
 
  cat > /etc/logrotate.d/elastic <<EOF
 
  cat > /etc/logrotate.d/elastic <<EOF
  /var/log/elastic/elaticsearch.log
+
  /var/log/elastic/elaticsearch.log {
/var/log/logstash/logstash-plain.log {
 
 
         weekly
 
         weekly
 
         missingok
 
         missingok
Line 185: Line 232:
 
===== Purgado de índices =====
 
===== 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:
+
Puede consultar en todo momento el listado de índices y el tamaño que ocupan lanzando una petición '''cURL''' contra el servidor ElasticSearch:
 +
 
 +
curl -q <nowiki>http://<elastic>:9200/_cat/indices?</nowiki>
 +
 
 +
Donde <code>elastic</code> se refiere a la dirección IP del servidor.
 +
 
 +
Para eliminar cualquiera de estos índices puede ejecutar la orden <code>DELETE</code>:
 +
 
 +
curl -q -XDELETE <nowiki>http://<elastic>:9200/{index-name}</nowiki>
 +
 
 +
Donde <code>{index-name}</code> es el fichero de salida del comando anterior. Esta operación liberará el espacio utilizado por el índice eliminado.
 +
 
 +
=== Configuración de la consola ===
 +
 
 +
Para activar el sistema de visualización de ''logs'' debe activar la siguiente configuración:
 +
 
 +
[[image:Logs1.JPG|800px]]
  
curl -q http://elastic:9200/_cat/indices?
+
Luego puede configurar el comportamiento del visor de logs en '''Configuration''' > '''Log Collector''':
  
 +
[[image:Logs2.JPG|800px]]
  
Para eliminar cualquiera de estos índices puede ejecutar la orden DELETE:
+
* Dirección IP o FQDN y puerto del servidor que aloja el servicio ElasticSearch
 +
* '''Number of logs viewed''': Para agilizar la respuesta de la consola se ha añadido la carga dinámica de registros. El usuario debe avanzar hasta el final de la página, lo que obliga a cargar el siguiente grupo de registros disponible, agrupados en el número definido aquí.
 +
* '''Days to purge old information''': Para evitar que el tamaño del sistema se sobrecargue, 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.
  
curl -q -XDELETE http://elastic:9200/logstash-2017.09.06
+
=== ElasticSearch Interface ===
  
Esta operación liberará el espacio utilizado por el índice eliminado.
+
{{Tip|[[Image:icono-modulo-enterprise.png|Versión Enterprise.]]<br>Versión NG 747 o superior.}}
  
 +
[[image:ES_Interface.png|800px]]
  
 +
En la configuración por defecto Pandora FMS genera un índice por día, el cual ElasticSearch se encarga de fragmentar y repartir para futuras búsquedas.
  
=== Configuración de la consola ===
+
Para que estas búsquedas sean óptimas, por defecto ElasticSearch genera un índice por cada una de ellas, por lo que '''debemos configurar en nuestro entorno tantas '''search''' como nodos de ElasticSearch estén instalados'''.
Para activar el sistema de visualización de logs deberá activar la siguiente configuración:
 
  
<br><center>
+
Estos '''search''' y réplicas '''se configuran cuando se crea un índice''', que Pandora FMS genera automáticamente, por lo que para modificar esta configuración debemos hacer uso de las plantillas o ''templates''.
[[image:activate_logcollection.png|850px]]
 
<br></center>
 
  
Luego, podemos configurar el comportamiento del visor de logs en la pestaña 'Log Collector':
+
==== Templates de Elasticsearch ====
  
<br><center>
+
{{warning|Las plantillas o ''templates'' son configuraciones que solo se aplican en el momento de la creación del índice. Cambiar un ''template'' no tendrá ningún impacto en los índices ya existentes.}}
[[image:Log_config_consola.PNG|850px]]
 
<br></center>
 
  
En esta pantalla podremos configurar:
+
Para crear un ''' ''template'' básico''', solo debe definir los siguientes campos:
 +
{
 +
  "index_patterns": ["pandorafms*"],
 +
  "settings": {
 +
    "number_of_shards": 1,
 +
    "auto_expand_replicas" : "0-1",
 +
    "number_of_replicas" : "0"
 +
  },
 +
"mappings" : {
 +
      "properties" : {
 +
        "agent_id" : {
 +
          "type" : "long",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "group_id" : {
 +
          "type" : "long",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "group_name" : {
 +
          "type" : "text",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "logcontent" : {
 +
          "type" : "text",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "source_id" : {
 +
          "type" : "text",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "suid" : {
 +
          "type" : "text",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "type" : {
 +
          "type" : "text",
 +
          "fields" : {
 +
            "keyword" : {
 +
              "type" : "keyword",
 +
              "ignore_above" : 256
 +
            }
 +
          }
 +
        },
 +
        "utimestamp" : {
 +
          "type" : "long"
 +
        }
 +
      }
 +
    }
 +
  }
 +
}
  
* Dirección IP o FQDN del servidor que aloja el servicio ElasticSearch
+
Si necesita '''definir un ''template'' multinodo''' debe tener en cuenta la siguiente información:
  
* Puerto a través del que se está prestando el servicio ElasticSearch
+
Cuando realice la configuración del ''template''(formato JSON), '''necesita configurar tantos ''search'' como nodos tenga''', sin embargo para configurar correctamente las réplicas '''debe restar 1 al número de nodos del entorno'''.
  
* 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.
+
Por ejemplo, en un entorno de Pandora FMS con ElasticSearch con 3 nodos configurados, cuando modifique los campos <code>number_of_search</code> y <code>number_of_replicas</code> debe quedar de la siguiente manera:
  
* 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.
+
{
 +
  "index_patterns": ["pandorafms*"],
 +
  "settings": {
 +
    '''"number_of_shards"''': 3,
 +
    "auto_expand_replicas" : "0-1",
 +
    '''"number_of_replicas"''' : "2"
 +
  },
  
== Migración al sistema LogStash + ElasticSearch ==
+
Puede realizar estas operaciones a través de la interfaz de ElasticSearch en Pandora FMS utilizando los comandos nativos de 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.
+
*'''PUT _template/<nombredeltemplate>''': permite introducir los datos de nuestro ''template''.
 +
*'''GET _template/><nombredeltemplate>''': permite visualizar el ''template''.
  
 +
[[Image:GetInterface.png|center|750px]]
  
Para migrar al nuevo sistema, deberá ejecutar el siguiente script que puede encontrar en /usr/share/pandora_server/util/
+
== Migración al sistema ElasticSearch ==
  
 +
Una vez configurado el nuevo sistema de almacenamiento de ''logs'', puede migrar todos los datos almacenados previamente en Pandora FMS, en forma distribuida en directorios al nuevo sistema.
 +
 +
Para ello deberá ejecutar el siguiente ''script'' que se encuentra en <code>/usr/share/pandora_server/util/</code>:
  
 
  # Migrate Log Data < 7.0NG 712 to >= 7.0NG 712
 
  # Migrate Log Data < 7.0NG 712 to >= 7.0NG 712
Line 234: Line 387:
 
== Visualización y búsqueda ==
 
== 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 todos los mensajes de log de todos los orígenes en la última hora:
+
En una herramienta de recolección de ''logs''  interesan principalmente dos características: el poder buscar información -filtrando por fecha, fuentes de datos y/o palabras clave, etc.- y poder visualizar esa información dibujada en ocurrencias por unidad de tiempo. En este ejemplo, estamos buscando todos los mensajes de ''log'' de todos los orígenes en la última hora; fije su atención en '''Search''', '''Start date''' y '''End date''':
 +
 
 +
[[Image:LogsVistaNew.png|center|700px|Haga clic para ampliar]]
 +
<center>''Vista de ocurrencias a lo largo del tiempo''</center><br>
 +
 
 +
El campo más importante -y útil- será la cadena a buscar a introducir en el cuadro de texto '''Search''' en combinación con los tres tipos de búsqueda disponibles ( '''Search mode''' ).
 +
 
 +
;Exact match: Búsqueda de cadena literal, el ''log'' '''contiene''' una coincidencia exacta.
 +
 
 +
[[Image:LogsVistaNew2.png|700px|Haga clic para ampliar]]
 +
 
 +
;All words: Búsqueda '''que contenga ''todas''''' las palabras indicadas, independientemente del orden en una misma línea de ''log'' (tenga en cuenta, en lo sucesivo, que cada palabra está separada por espacios).
 +
 
 +
[[image:LogsVistaNew4.png|700px|Haga clic para ampliar]]
 +
 
 +
;Any word: Búsqueda '''que contenga ''alguna''''' de las palabras indicadas, independientemente del orden.
 +
 
 +
[[image:LogsVistaNew5.png|700px|Haga clic para ampliar]]
 +
 
 +
Si marcamos la opción de ver el contexto del contenido filtrado, obtendremos una vista general de la situación con información de otras líneas de ''logs'' relacionadas con nuestra búsqueda:
 +
 
 +
[[Image:LogsVistaNew3.png|center|700px|Haga clic para ampliar]]
 +
 
 +
=== Visualización y búsqueda avanzadas ===
 +
 
 +
{{Tip|[[Image:icono-modulo-enterprise.png|Versión Enterprise.]]<br>Versión NG 727 o superior.}}
 +
 
 +
Con esta característica se puede mostrar de manera gráfica las entradas de ''log'', clasificando la información en base a '''modelos de captura de datos'''.
 +
 
 +
Estos modelos de captura de datos son básicamente expresiones regulares e identificadores que permiten analizar los orígenes de datos y mostrarlos como un gráfico.
 +
 
 +
Para acceder a las opciones avanzadas pulse en '''Advanced options'''. Se mostrará un formulario donde podrá elegir el tipo de vista de resultados:
 +
 
 +
* Mostrar entradas de ''log'' (texto plano).
 +
* Mostrar gráfica de ''log''.
 +
 
 +
[[Image:graph_log.png|center|700px]]
 +
 
 +
Bajo la opción ''mostrar gráfica de log'' podemos seleccionar el modelo de captura.
 +
 
 +
El modelo por defecto, ''Apache log model'', ofrece la posibilidad de procesar o ''parsear logs''' de Apache en formato estándar ([https://httpd.apache.org/docs/2.4/en/logs.html#access-log access_log]), pudiendo extraer gráficas comparativas de tiempo de respuesta, agrupando por página visitada y código de respuesta:
 +
 
 +
[[Image:graph_log2.png|center|700px]]
 +
 
 +
Bien puede pulsar el botón de editar [[Image:edit_icon.png]], o el botón de crear [[Image:new_icon.png]] para realizar un nuevo modelo de captura.
  
<br><center>
 
[[image:log_viewer.PNG|850px]]
 
<i>Vista de ocurrencias a lo largo del tiempo</i>
 
<br></center>
 
  
<br>
+
[[Image: graph_log3.png|center|600px]]
<br>
 
Existe una serie de opciones para filtrar la información que muestra el visor:
 
* Filtro por contenido del mensaje: Busca en el contenido del mensaje el texto indicado.
 
* Filtro por origen de log (source id)
 
* Filtro por agente: limita los resultados de búsqueda a los generados por el agente seleccionado.
 
* Filtro por grupo: limita la selección de agentes en el filtro por agente
 
* Filtro por fecha
 
  
<br><center>
+
;Capture regexp: Una expresión regular de captura de datos, cada campo a extraer se identifica con la subexpresión entre paréntesis ''(expresión a capturar)''.
[[image:log_viewer_filtros.PNG|850px]]
+
;Fields: Campos en el orden en que los hemos capturado con la expresión regular. Los resultados se agruparán por la concatenación de los campos clave, que son aquellos cuyo nombre no esté entre guiones bajos:
<br></center>
 
  
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 comodín, como por ejemplo una dirección ip:
+
clave, _valor_
  
192.168*
 
  
<b>Nota</b>: Las búsquedas deben realizarse utilizando palabras completas o subcadenas iniciales de las palabras a buscar:
+
clave1,clave2,_valor_
Ejemplos
+
 
 +
 
 +
clave1,_valor_,clave2
 +
 
 +
 
 +
''Observación:'' Si no especificamos un campo valor, será automáticamente el conteo de apariciones que coinciden con la expresión regular.
 +
 
 +
''Observación 2:'' Si especificamos una columna ''valor'' podremos elegir entre representar el valor acumulado (comportamiento por defecto) o marcar la casilla de verificación para representar el promedio.
 +
 
 +
''Ejemplo''
 +
 
 +
Extraer entradas de un ''log'' con el siguiente formato:
 +
 
 +
Sep 19 12:05:01 nova systemd: Starting Session 6132 of user root.
 +
Sep 19 12:05:01 nova systemd: Starting Session 6131 of user root.
 +
 
 +
Para contar el número de veces que han iniciado sesión, agrupando por usuario:
 +
 
 +
Expresión regular
 +
 
 +
Starting Session \d+ of user (.*?)\.
  
192.168.80.14
 
192.168*
 
Alerta en sistema
 
Alerta en sis
 
 
  
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*
+
Campos:
  
<br><center>
+
username
[[image:Log_filtered.PNG|850px]]
 
<br></center>
 
  
  
Si marcamos la opción de ver el contexto del contenido filtrado, obtendremos una vista general de la situación:
+
Este modelo de captura nos devolverá el número de inicios de sesión por usuario del intervalo de tiempo que seleccionemos.
  
<br><center>
+
[[Image: graph_log4.png|center|600px]]
[[image:Log_filtered_context.PNG|850px]]
 
<br></center>
 
  
 
== Configuración de los agentes ==
 
== 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.
+
La recolección de ''logs'' se hace mediante los agentes, tanto en el agente para Microsoft Windows® como en los agentes Unix® (Linux®, MacOsX®, Solaris®, HPUX®, AIX®, BSD®, etc). En el caso de los agentes Windows, también se puede obtener información del visor de eventos del sistema operativo, utilizando los mismos filtros que en el módulo de monitorización del visor de eventos.
  
Veamos dos ejemplos para capturar información de logs, en windows y en unix:
+
Veamos dos ejemplos para capturar información de ''logs'', en Windows y en Unix:
  
 
=== En Windows ===
 
=== En Windows ===
  
 +
A partir de la versión 750 esta acción se podrá realizar mediante los [[Pandora:Documentation_es:Operacion#Gesti.C3.B3n_de_plugins_de_Agente_Software_desde_la_Consola|plugins de agente]] activando la opción ''Advanced''.
 +
 +
Se podrán realizar ejecuciones del tipo a las que se muestran a continuación:
 +
 +
 +
'''Módulo logchannel'''
 +
module_begin
 +
module_name MyEvent
 +
module_type async_string
 +
module_logchannel
 +
module_source <logChannel>
 +
module_eventtype <event_type/level>
 +
module_eventcode <event_id>
 +
module_pattern <text substring to match>
 +
module_description <description>
 +
module_end
 +
 +
 +
'''Módulo logevent'''
 
  module_begin
 
  module_begin
 
  module_name Eventlog_System
 
  module_name Eventlog_System
Line 295: Line 509:
 
  module_end  
 
  module_end  
  
 +
 +
'''Módulo regexp'''
 
  module_begin
 
  module_begin
 
  module_name PandoraAgent_log
 
  module_name PandoraAgent_log
 
  module_type log
 
  module_type log
  module_regexp C:\archivos de programa\pandora_agent\pandora_agent.log
+
  module_regexp <%PROGRAMFILES%>\pandora_agent\pandora_agent.log
 
  module_description This module will return all lines from the specified logfile
 
  module_description This module will return all lines from the specified logfile
 
  module_pattern .*
 
  module_pattern .*
 
  module_end
 
  module_end
  
En ambos casos, la unica diferencia de un modulo de monitorización a la definición de una fuente de log, es:
+
 
 +
Para más información sobre la descripción de módulos de tipo ''log'' puede consultarse la siguiente sección referente a [[Pandora:Documentation_es:Configuracion_Agentes#Directivas_espec.C3.ADficas_para_obtener_informaci.C3.B3n|Directivas específicas]].
  
 
  module_type log  
 
  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.
+
Al definir este tipo de etiqueta, <code>module_type log</code>, se indica que '''no''' almacene en base de datos, sino que se envíe al colector de ''log''.
 +
Cualquier módulo con este tipo de dato se mandará al colector, siempre y cuando esté habilitado: ''caso contrario se descartará la información.''
 +
 
 +
'''Nota''': Esta nueva sintaxis es válida para el agente con versión 5.0 o superior, ''recuerde mantener actualizada'' su versión '''Enterprise'''.
  
 
=== Sistemas Unix ===
 
=== 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:
+
Con el agente versión 5.0 o superior, puede usar la siguiente sintaxis.
  
 
  module_plugin grep_log_module /var/log/messages Syslog \.\*
 
  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.
+
Similar al plugin de ''parseo de logs'' ('''grep_log'''), el ''plugin'' '''grep_log_module''' envía la información procesada del ''log'' al Colector de logs con el nombre de "Syslog" como origen. Utiliza la expresión regular <code>\.\*</code> (en este caso "''todo''") como patrón a la hora de elegir qué líneas enviamos y cuáles no.
  
 +
== Log Source en la Vista de Agentes ==
 +
 +
A partir de la versión 749 de Pandora FMS, se ha añadido en la Vista del agente un cuadro llamado '''Log sources status''', en el cual aparecerá la fecha de la última actualización de los ''logs'' por parte de ese agente. Al pulsar en el icono de la lupa de '''Review''', redirige a la vista del '''Log Viewer''' filtrada por ese ''log''.
 +
 +
[[Image: agent_view_log.png|800px|Haga clic para ampliar]]
  
 
[[Pandora:Documentation|Volver a Indice de Documentacion Pandora FMS]]
 
[[Pandora:Documentation|Volver a Indice de Documentacion Pandora FMS]]
Line 322: Line 547:
 
[[Category: Pandora FMS]]
 
[[Category: Pandora FMS]]
 
[[Category:Documentation]]
 
[[Category:Documentation]]
 +
 +
<!--- Fin de 2ª revisión (texto) JJOS 2020-dic-15 --->

Latest revision as of 00:27, 29 January 2021

Volver al Índice de Documentación Pandora FMS


1 Recolección de logs

1.1 Introducción

Info.png

Versión Enterprise.
Versión 5.0 o superior.

 


La monitorización de logs en Pandora FMS está establecida de dos formas diferentes:

  1. Basada en módulos: Representa logs en Pandora FMS como monitores asíncronos, pudiendo asociar alertas a las entradas detectadas que cumplan una serie de condiciones preconfiguradas por el usuario. La representación modular de los logs permite:
    1. Crear módulos que cuenten las ocurrencias de una expresión regular en un log.
    2. Obtener las líneas y el contexto de los mensajes de log.
  2. Basada en visualización combinada: Permite al usuario visualizar en una única Consola toda la información de logs de múltiples orígenes que se desee capturar, organizando la información de manera secuencial, utilizando la marca de tiempo en que se procesaron los logs.

A partir de la versión 7.0 NG 712, Pandora FMS incorpora ElasticSearch para almacenar la información de logs, lo que implica una mejora sustancial del rendimiento.

1.2 Cómo funciona

Pandora FMS y ElasticSearch, funcionamiento.
  • Los logs analizados por los Agentes Software (eventlog o ficheros de texto), son reenviados hacia el servidor de Pandora FMS, en forma "literal" (RAW) dentro del XML de reporte del agente.
  • El Data Server Pandora FMS recibe el XML del agente, que contiene información tanto de monitorización como de logs.
  • Cuando el Data Server 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 y luego enviando automáticamente la información a ElasticSearch.
  • Pandora FMS almacena los datos en índices de ElasticSearch generando diariamente un índice único por cada instancia de Pandora FMS.
  • El servidor de Pandora FMS dispone de una tarea de mantenimiento que elimina los índices en el intervalo definido por el administrador del sistema (por defecto, 90 días).

1.3 Configuración

1.3.1 Configuración del servidor

El sistema de almacenamiento de logs basado en ElasticSearch, requiere configurar y afinar sus componentes.

1.3.1.1 Requisitos para el servidor

Es posible distribuir a Pandora FMS Server y ElasticSearch en servidores independientes.

  • CentOS 7 o superior.
  • Al menos 4 gigabytes de RAM, aunque se recomiendan 6 GB de RAM por cada instancia de ElasticSearch.
  • Al menos 2 CPU cores.
  • 20 GB de espacio en disco para el sistema.
  • 50 GB de espacio en disco para los datos de ElasticSearch (el número puede variar dependiendo de la cantidad de datos que se desee almacenar).
  • Conectividad desde el Servidor y Consola de Pandora FMS a la API de ElasticSearch (por defecto puerto 9200/TCP ).

1.3.1.2 Instalación y configuración de ElasticSearch

Antes de empezar con la instalación de estos componentes es necesaria la instalación de Java en una máquina CentOS:

yum install java

Una vez instalado Java, instalar ElasticSearch siguiendo la documentación oficial; para entornos Debian cuenta con sus propias instrucciones.

Configurar el servicio:

Se deben configurar las opciones de red y, opcionalmente, las ubicaciones de datos (y logs del propio ElasticSearch) en el fichero de configuración ubicado en /etc/elasticsearch/elasticsearch.yml.

# ---------------------------------- Network -----------------------------------
# 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


Será necesario descomentar y definir también las siguientes líneas:

cluster.name: elkpandora
node.name: ${HOSTNAME}
bootstrap.memory_lock: true
network.host: ["127.0.0.1", “IP"]
cluster.name
Será el nombre que recibirá el grupo o cluster.
node.name
Para nombrar el nodo utilizando la variable de sistema ${HOSTNAME}, este tomará automáticamente el nombre del anfitrión.
bootstrap.memory_lock
Siempre deberá ser verdadero "true".
network.host
La dirección IP del servidor.
    • En caso de trabajar con un solo nodo, será necesario añadir también la siguiente línea:
discovery.type: single-node
    • En caso de trabajar con un cluster necesitaremos completar el parámetro discovery.seed_hosts.
discover.seed_hosts : ["ip:port", "ip", "ip"]

O bien:

discovery.seed_hosts:
 - 192.168.1.10:9300
 - 192.168.1.11
 - seeds.mydomain.com

Determine las opciones de recursos asignados a ElasticSearch, ajustando los parámetros disponibles en el fichero de configuración ubicado en /etc/elasticsearch/jvm.options. Se recomienda utilizar al menos 2 GB de espacio en XMS.

# Xms represDeents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms2g
-Xmx2g

La asignación de recursos se asignará en función del uso que se quiera dar a ElasticSearch, recomendamos seguir la documentación oficial.

Es necesario cambiar también en el fichero de configuración de ElasticSearch el parámetro memlock unlimited, ubicado en el fichero /usr/lib/systemd/system/elasticsearch.service para añadir el siguiente parámetro:

MAX_LOCKED_MEMORY=unlimited

Una vez finalizado será necesario ejecutar:

systemctl daemon-reload && systemctl restart elasticsearch

El comando para iniciar el servicio es:

systemctl start elasticsearch

Info.png

Si el servicio no consigue iniciarse, revise los logs ubicados en /var/log/elasticsearch/

 


Para comprobar la instalación de ElasticSearch ejecute el siguiente comando en una ventana terminal:

curl -q http://{IP}:9200/

Recibirá una respuesta similar a la siguiente:

{
  "name" : "3743885b95f9",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "7oJV9hXqRwOIZVPBRbWIYw",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Se recomienda visitar el enlace a las best practices de ElasticSearch para entornos de producción:

https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html#dev-vs-prod

1.3.1.3 Pandora FMS Syslog Server

Info.png

Versión Enterprise.
Versión NG 717 o superior.

 


Este componente permite a Pandora FMS analizar el syslog de la máquina donde está ubicado, analizando su contenido y almacenando las referencias en el servidor ElasticSearch correspondiente.

La ventaja principal del Syslog Server consiste en complementar la unificación de logs. Con apoyo de las características de exportado de Syslog Server de los entornos Linux® y Unix®, Syslog Server permite la consulta de logs independientemente del origen, buscando en un único punto común (visor de logs de la consola de Pandora FMS).

La instalación de Syslog Server se debe realizar tanto en cliente como en servidor, y para ejecutarla es necesario lanzar el siguiente comando:

yum install rsyslog

Una vez instalado syslog en los equipos a trabajar, hay que acceder al fichero de configuración /etc/rsyslog.conf para habilitar el input de TCP y UDP.

(...)

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

(...)

Tras realizar este ajuste será necesario detener y volver a arrancar el servicio rsyslog. Una vez el servicio esté disponible, comprobar que el puerto 514 está accesible con:

netstat -ltnp

Para más información de la configuración de rsyslog, visite la web oficial.

En el cliente configurar para que pueda enviar los logs al Syslog Server. Para ello acceda una vez más al fichero de configuración de rsyslog /etc/rsyslog.conf en el cliente. Localice y habilite la línea que permite configurar el host remoto.

*.* @@remote-host:514

Info.png

El envío de logs genera un agente contenedor con el nombre del cliente por lo que se recomienda crear los agentes con “alias as name” haciendo que coincida con el hostname del cliente, así se evitará duplicidad en los agentes.

 


Para activar esta funcionalidad en Pandora FMS Server, habilite en el archivo pandora_server.conf el siguiente contenido:

# Enable (1) or disable (0) the Pandora FMS Syslog Server
#  (PANDORA FMS ENTERPRISE ONLY).
syslogserver 1

# Full path to syslog's output file (PANDORA FMS ENTERPRISE ONLY).
syslog_file /var/log/messages

# Number of threads for the Syslog Server
#  (PANDORA FMS ENTERPRISE ONLY).
syslog_threads 2

# Maximum number of lines queued by the Syslog Server's 
#   producer on each run (PANDORA FMS ENTERPRISE ONLY).
syslog_max 65535
syslogserver
Booleano, habilita (1) o deshabilita (0) el motor de análisis de SYSLOG local.
syslog_file
Ubicación del fichero donde se entregan las entradas de los SYSLOG.
syslog_threads
Número de hilos máximo que se utilizarán en el sistema productor/consumidor del Syslog Server.
syslog_max
Es la ventana de procesado máxima para Syslog Server; será el número máximo de entradas del SYSLOG que se procesarán en cada iteración.

Template warning.png

Necesitará un servidor ElasticSearch habilitado y configurado; por favor, revise los puntos precedentes para saber cómo ello.

 


Info.png

Recuerde que es necesario que modifique la configuración de su dispositivo para que los logs se envíen al servidor de Pandora FMS.

 


1.3.1.4 Recomendaciones

1.3.1.4.1 Rotación de logs para ElasticSearch

Importante: para evitar que los logs de ElasticSearch crezcan sin medida, debe crear una nueva entrada para el demonio o daemon de rotado de logs en /etc/logrotate.d:

cat > /etc/logrotate.d/elastic <<EOF
/var/log/elastic/elaticsearch.log {
       weekly
       missingok
       size 300000
       rotate 3
       maxage 90
       compress
       notifempty
       copytruncate
}
EOF
1.3.1.4.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 el servidor ElasticSearch:

curl -q http://<elastic>:9200/_cat/indices?

Donde elastic se refiere a la dirección IP del servidor.

Para eliminar cualquiera de estos índices puede ejecutar la orden DELETE:

curl -q -XDELETE http://<elastic>:9200/{index-name}

Donde {index-name} es el fichero de salida del comando anterior. 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 debe activar la siguiente configuración:

Logs1.JPG

Luego puede configurar el comportamiento del visor de logs en Configuration > Log Collector:

Logs2.JPG

  • Dirección IP o FQDN y puerto del servidor que aloja el servicio ElasticSearch
  • Number of logs viewed: Para agilizar la respuesta de la consola se ha añadido la carga dinámica de registros. El usuario debe avanzar hasta el final de la página, lo que obliga a cargar el siguiente grupo de registros disponible, agrupados en el número definido aquí.
  • Days to purge old information: Para evitar que el tamaño del sistema se sobrecargue, 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.3.3 ElasticSearch Interface

Info.png

Versión Enterprise.
Versión NG 747 o superior.

 


ES Interface.png

En la configuración por defecto Pandora FMS genera un índice por día, el cual ElasticSearch se encarga de fragmentar y repartir para futuras búsquedas.

Para que estas búsquedas sean óptimas, por defecto ElasticSearch genera un índice por cada una de ellas, por lo que debemos configurar en nuestro entorno tantas search como nodos de ElasticSearch estén instalados.

Estos search y réplicas se configuran cuando se crea un índice, que Pandora FMS genera automáticamente, por lo que para modificar esta configuración debemos hacer uso de las plantillas o templates.

1.3.3.1 Templates de Elasticsearch

Template warning.png

Las plantillas o templates son configuraciones que solo se aplican en el momento de la creación del índice. Cambiar un template no tendrá ningún impacto en los índices ya existentes.

 


Para crear un template básico, solo debe definir los siguientes campos:

{
 "index_patterns": ["pandorafms*"],
 "settings": {
   "number_of_shards": 1,
   "auto_expand_replicas" : "0-1",
   "number_of_replicas" : "0"
 },
"mappings" : {
     "properties" : {
       "agent_id" : {
         "type" : "long",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "group_id" : {
         "type" : "long",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "group_name" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "logcontent" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "source_id" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "suid" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "type" : {
         "type" : "text",
         "fields" : {
           "keyword" : {
             "type" : "keyword",
             "ignore_above" : 256
           }
         }
       },
       "utimestamp" : {
         "type" : "long"
       }
     }
   }
 }
}

Si necesita definir un template multinodo debe tener en cuenta la siguiente información:

Cuando realice la configuración del template(formato JSON), necesita configurar tantos search como nodos tenga, sin embargo para configurar correctamente las réplicas debe restar 1 al número de nodos del entorno.

Por ejemplo, en un entorno de Pandora FMS con ElasticSearch con 3 nodos configurados, cuando modifique los campos number_of_search y number_of_replicas debe quedar de la siguiente manera:

{
 "index_patterns": ["pandorafms*"],
 "settings": {
   "number_of_shards": 3,
   "auto_expand_replicas" : "0-1",
   "number_of_replicas" : "2"
 },

Puede realizar estas operaciones a través de la interfaz de ElasticSearch en Pandora FMS utilizando los comandos nativos de ElasticSearch.

  • PUT _template/<nombredeltemplate>: permite introducir los datos de nuestro template.
  • GET _template/><nombredeltemplate>: permite visualizar el template.
GetInterface.png

1.4 Migración al sistema ElasticSearch

Una vez configurado el nuevo sistema de almacenamiento de logs, puede migrar todos los datos almacenados previamente en Pandora FMS, en forma distribuida en directorios al nuevo sistema.

Para ello deberá ejecutar el siguiente script que se encuentra 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 recolección de logs interesan principalmente dos características: el poder buscar información -filtrando por fecha, fuentes de datos y/o palabras clave, etc.- y poder visualizar esa información dibujada en ocurrencias por unidad de tiempo. En este ejemplo, estamos buscando todos los mensajes de log de todos los orígenes en la última hora; fije su atención en Search, Start date y End date:

Haga clic para ampliar
Vista de ocurrencias a lo largo del tiempo

El campo más importante -y útil- será la cadena a buscar a introducir en el cuadro de texto Search en combinación con los tres tipos de búsqueda disponibles ( Search mode ).

Exact match
Búsqueda de cadena literal, el log contiene una coincidencia exacta.

Haga clic para ampliar

All words
Búsqueda que contenga todas las palabras indicadas, independientemente del orden en una misma línea de log (tenga en cuenta, en lo sucesivo, que cada palabra está separada por espacios).

Haga clic para ampliar

Any word
Búsqueda que contenga alguna de las palabras indicadas, independientemente del orden.

Haga clic para ampliar

Si marcamos la opción de ver el contexto del contenido filtrado, obtendremos una vista general de la situación con información de otras líneas de logs relacionadas con nuestra búsqueda:

Haga clic para ampliar

1.5.1 Visualización y búsqueda avanzadas

Info.png

Versión Enterprise.
Versión NG 727 o superior.

 


Con esta característica se puede mostrar de manera gráfica las entradas de log, clasificando la información en base a modelos de captura de datos.

Estos modelos de captura de datos son básicamente expresiones regulares e identificadores que permiten analizar los orígenes de datos y mostrarlos como un gráfico.

Para acceder a las opciones avanzadas pulse en Advanced options. Se mostrará un formulario donde podrá elegir el tipo de vista de resultados:

  • Mostrar entradas de log (texto plano).
  • Mostrar gráfica de log.
Graph log.png

Bajo la opción mostrar gráfica de log podemos seleccionar el modelo de captura.

El modelo por defecto, Apache log model, ofrece la posibilidad de procesar o parsear logs' de Apache en formato estándar (access_log), pudiendo extraer gráficas comparativas de tiempo de respuesta, agrupando por página visitada y código de respuesta:

Graph log2.png

Bien puede pulsar el botón de editar Edit icon.png, o el botón de crear New icon.png para realizar un nuevo modelo de captura.


Graph log3.png
Capture regexp
Una expresión regular de captura de datos, cada campo a extraer se identifica con la subexpresión entre paréntesis (expresión a capturar).
Fields
Campos en el orden en que los hemos capturado con la expresión regular. Los resultados se agruparán por la concatenación de los campos clave, que son aquellos cuyo nombre no esté entre guiones bajos:
clave, _valor_


clave1,clave2,_valor_


clave1,_valor_,clave2


Observación: Si no especificamos un campo valor, será automáticamente el conteo de apariciones que coinciden con la expresión regular.

Observación 2: Si especificamos una columna valor podremos elegir entre representar el valor acumulado (comportamiento por defecto) o marcar la casilla de verificación para representar el promedio.

Ejemplo

Extraer entradas de un log con el siguiente formato:

Sep 19 12:05:01 nova systemd: Starting Session 6132 of user root.
Sep 19 12:05:01 nova systemd: Starting Session 6131 of user root.

Para contar el número de veces que han iniciado sesión, agrupando por usuario:

Expresión regular

Starting Session \d+ of user (.*?)\.


Campos:

username


Este modelo de captura nos devolverá el número de inicios de sesión por usuario del intervalo de tiempo que seleccionemos.

Graph log4.png

1.6 Configuración de los agentes

La recolección de logs se hace mediante los agentes, tanto en el agente para Microsoft Windows® como en los agentes Unix® (Linux®, MacOsX®, Solaris®, HPUX®, AIX®, BSD®, etc). En el caso de los agentes Windows, también se puede obtener información del visor de eventos del sistema operativo, utilizando los mismos filtros que en el módulo 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

A partir de la versión 750 esta acción se podrá realizar mediante los plugins de agente activando la opción Advanced.

Se podrán realizar ejecuciones del tipo a las que se muestran a continuación:


Módulo logchannel

module_begin
module_name MyEvent
module_type async_string
module_logchannel
module_source <logChannel>
module_eventtype <event_type/level>
module_eventcode <event_id>
module_pattern <text substring to match>
module_description <description>
module_end


Módulo logevent

module_begin
module_name Eventlog_System
module_type log
module_logevent
module_source System
module_end 


Módulo regexp

module_begin
module_name PandoraAgent_log
module_type log
module_regexp <%PROGRAMFILES%>\pandora_agent\pandora_agent.log
module_description This module will return all lines from the specified logfile
module_pattern .*
module_end


Para más información sobre la descripción de módulos de tipo log puede consultarse la siguiente sección referente a Directivas específicas.

module_type log 

Al definir este tipo de etiqueta, module_type log, se indica que no almacene en base de datos, sino que se envíe al colector de log. Cualquier módulo con este tipo de dato se mandará al colector, siempre y cuando esté habilitado: caso contrario se descartará la información.

Nota: Esta nueva sintaxis es válida para el agente con versión 5.0 o superior, recuerde mantener actualizada su versión Enterprise.

1.6.2 Sistemas Unix

Con el agente versión 5.0 o superior, puede usar la siguiente sintaxis.

module_plugin grep_log_module /var/log/messages Syslog \.\*

Similar al plugin de parseo de logs (grep_log), el plugin grep_log_module envía la información procesada del log al Colector de logs con el nombre de "Syslog" como origen. Utiliza la expresión regular \.\* (en este caso "todo") como patrón a la hora de elegir qué líneas enviamos y cuáles no.

1.7 Log Source en la Vista de Agentes

A partir de la versión 749 de Pandora FMS, se ha añadido en la Vista del agente un cuadro llamado Log sources status, en el cual aparecerá la fecha de la última actualización de los logs por parte de ese agente. Al pulsar en el icono de la lupa de Review, redirige a la vista del Log Viewer filtrada por ese log.

Haga clic para ampliar

Volver a Indice de Documentacion Pandora FMS