Redireccionando eventos del Visor de Sucesos de equipos Windows a Elasticsearch con Winlogbeat y visualizando con Grafana

Bien, una vez tenemos ya montada nuestra plataforma con Elasticsearch, Logstash y Kibana, vamos en este primer post a analizar los eventos del Visor de Sucesos de nuestros equipos Windows mediante Winlogbeat! Instalaremos el pequeño agente y enviaremos los eventos que decidamos a Logstash para tratarlos y almacenarlos en Elasticsearch, y posteriormente los visualizaremos con Grafana!

 

 

El proceso será sencillo, primeramente descargaremos Winlogbeat de https://www.elastic.co/downloads/beats/winlogbeat, lo descomprimimos y , por ejemplo lo dejamos en ‘ C:\Program Files\winlogbeat\’. Editaremos el fichero de configuración ‘winlogbeat.yml’ en base a nuestras necesidades, de todas formas en ‘winlogbeat.full.yml’ tenemos todas las opciones y características que podremos utilizar.

 

Configurando Winlogbeat,

En la primera sección de ‘winlogbeat.yml’ podremos indicar qué Registros de eventos y qué tipo queremos redireccionar, configuramos en base a nuestra necesidad. Vienen por defecto habilitados Application, Security o System, (escritos en inglés), para ver cuales son nuestros tenemos desde una Powershell ejecutando ‘Get-EventLog *’ lo tenemos!

winlogbeat.event_logs:
  - name: Application
    ignore_older: 72h
  - name: Security
    level: critical, error, warning
  - name: System
  - name: Veeam Agent

 

En la sección de ===== General ===== podremos añadir tags o campos adicionales por si nos interesaría asociar este Winlogbeat del equipo a distintas palabras claves, para luego poder usarlas en distintas búsquedas, como indicar si es un Servidor, es un servidor de BBDD o web, o tiene IIS, su SO…

tags: ["Portatil", "Windows 10", "OS-PO-01"]
fields:
  globo_environment: Produccion

 

En la sección del Output, en vez de enviar a Elasticsearch los datos directamente, los pasaremos por Logstash inicialmente para que sean tratados. Así que en el apartado correcto indicamos el servidor de Logstash y el puerto que queramos utilizar (en este ejemplo el 5044), recordar comentar el Output de Elasticsearch con # y dejamos algo así:

#--------- Logstash output ---------
output.logstash:
  # The Logstash hosts
  hosts: ["DIRECCION_IP_LOGSTASH:5044"]

 

Si tenemos problemas o queremos que Winlogbeat genere un log de registro para temas de debugging deberemos habilitar:

logging.to_files: true
logging.files:
  path: C:\Program Files\winlogbeat\logs
logging.level: info

 

Una vez configurado Winlogbeat podremos probar si tenemos bien configurado su fichero de configuración, abrimos un PowerShell con privilegios de administrador y vamos a su path, ejecutamos:

.\winlogbeat.exe test config -c .\winlogbeat.yml -e

 

La primera vez debemos importar la plantilla con el formato de campos que debe generar en nuestro Elasticsearch, ejecutamos:

.\winlogbeat.exe setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["direccion_ip_elasticsearch:9200"]'

 

Configurando Logstash,

Antes de seguir, nos vamos a ir al servidor de Logstash, y vamos a permitir que Logstash acepte los logs de Winlogbeat y los almacene en Elasticsearch. Utilizaremos un único fichero de configuración llamado ‘/etc/logstash/conf.d/beats.conf’ para tratar los logs que recibamos de otros productos de Beats de la suit de Elasticsearch, y nos generará un índice para cada uno, algo como esto nos ayudará:

input{
  beats{
        port => "5044"
  }
}

output{
  elasticsearch {
        hosts => ["DIRECCION_IP_ELASTICSEARCH:9200"]
        index => "%{[@metadata][beat]}-%{+YYYY-MM-dd}"
        document_type => "%{[@metadata][type]}"
  }
}

Reiniciamos Logstash para que los cambios srurjan efecto:

service logstash restart

 

Volvemos a nuestro equipo Windows, instalarnos Winlogbeat como servicio en nuestro Windows y ya podremos iniciarlo:

.\install-service-winlogbeat.ps1 → Instalar como Servicio
 Start-Service winlogbeat

 

y si queremos ver el estado de la conexión podremos ejecutar:

Get-Content .\logs\winlogbeat -Wait

 

Desde Kibana,

 

Bien, ahora desde Kibana crearemos el patrón para este índice, abrimos Kibana, “Management” >” Index Patterns” > “Create Index Pattern”, indicamos como patrón ‘winlogbeat-*’ y seguimos el asistente,

 

Seleccionamos el campo ‘@timestamp’ para usar como filtro de tiempo, y “Create index pattern”.

 

Para ver los datos que hemos ido obteniendo, vamos a “Discover”, seleccionamos el patrón recién creado de Winlogbeat, si todo ha ido como debe, nuestros equipos Windows le estarán mandando los eventos a Logstash y éste a Elasticsearch, tendremos almacenados los registros de todos los eventos que hemos redirigido!

 

 

Podremos ir agregando los campos que queremos visualizar, o todos… así como hacer filtros de búsquedas con la sintaxis de Lucene, para ver los eventos de un equipo algo como ‘computer_name: “NOMBRE_EQUIPO_WINDOWS”‘, o ‘level: “error”‘ nos filtrará y mostrará los eventos de los Windows de nivel Error. Toqueteando podrás ver que sencillamente podrás hacer consultas como te interesen para visualizar los datos que quieras…

 

Si queremos, con Kibana podremos crear visualizaciones de estos datos y plasmarlos de una manera gráfica, algo mucho más intuitivo que lo que acabamos de ver, desde “Visualize”!

 

Veremos que podremos crear visualizaciones de tipo tablas, áreas, mapas de calor, barras, lineas, quesitos… Pero, personalmente como me gusta más Grafana es lo que veremos a continuación. No quiero decir con ello que no te anime a descubrir Kibana, que es una auténtica pasada, verás que de manera muy sencilla podrás visualizar cualquier dato que gustes.

 

Desde Grafana,

Lo que vamos a ver en esta parte, es cómo inicialmente crear un conector de Grafana a Elasticsearch, luego cómo crear nuestro primer Dashboard y visualizar los datos que estamos almacenando en Elasticsearch de una manera diferente y molona.

 

Desde nuestro Grafana, podremos ir a “Configuración” > “Data Sources”, le indicaremos un nombre a la conexión, en la URL debemos indicar la URL de nuestro Elasticsearch ‘http://DIRECCION_IP_ELASTIC:9200’. Seleccionamos ‘winlogbeat-*’ para usar como nombre para los índices, indicamos el campo @timestamp para el campo de tiempo y seleccionamos la versión de Elasticsearch, pulsamos en “Save & Test”,

 

Y ya es hora de crear nuestro primer Dashboard! Dentro de él creamos un Panel, en este caso será el típico de barras, donde visualizaremos todos los eventos que generan un par de máquinas. Seleccionamos nuestro conector contra los índices de Winlogbeat en Elasticsearch, y podemos usar las mismas consultas Lucene desde aquí para visualizar lo que nos interese.

 

Y bueno, crearemos los tipos de visualizaciones que nos interese ver, aquí vemos las últimas 24 horas de mis equipos, sus eventos de Información, los que son Warning y los marcados con Errores, visualizacion de quesito y barras, veréis que en pocos segundos os haréis los vuestros!!! Espero os haya resultado de interés,

 

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!