• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
El Blog de Jorge de la Cruz

El Blog de Jorge de la Cruz

El Blog de Jorge de la Cruz - Todas las novedades sobre VMware, Veeam, InfluxData, Grafana, Zimbra, etc.

  • Home
  • VMware
    • VMworld
    • VMware vSphere 6.7
    • VMware vSphere 6.5
  • Veeam
    • Resumen Contenido 2021
    • Veeam v11
      • Continuous Data Protection (CDP
      • Ransomware Protection
      • Archive Tier
      • Mejoras en Instant Recovery
      • Veeam Agent for Mac
      • Veeam Backup for AHV v2.1
    • Veeam Backup for Microsoft Office 365
      • 1 – Razones para proteger nuestra información en Microsoft Office 365
      • 2 – Componentes lógicos de Veeam Backup for Microsoft Office 365 2.0
      • 3 – Instalación paso a paso de Veeam Backup for Microsoft Office 365 v2.0
      • 4 – Configuración inicial de Veeam Backup for Microsoft Office 365 v2.0
      • 5 – Creando trabajos de copia en Veeam Backup for Microsoft Office 365 v2.0
      • 6 – Restaurando elementos en Veeam Backup for Microsoft Office 365 v2.0
    • Veeam Backup for AWS
      • Veeam: Veeam anuncia Veeam Backup for AWS Free Edition
      • Veeam: Cómo Desplegar Veeam Backup for AWS – paso a paso
      • Veeam: Vistazo en profundidad al nuevo Veeam Backup for AWS – Creación de Políticas de Backup y Restauración
      • Veeam: Cómo conectar nuestro Veeam Backup & Replication a Veeam Backup for AWS
    • Veaam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte I – Introducción a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte II – Descarga e Instalación de Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte III – Añadir una Infraestructura de VMware vSphere a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte IV – Añadir una Infraestructura de Veeam Backup and Replication a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte V – Realizando troubleshooting de vSphere usando Veeam ONE Monitor
      • En busca del Dashboard perfecto: Veeam ONE – Parte VI – Realizando troubleshooting de Veeam Backup and Replication usando Veeam ONE Monitor
      • En busca del Dashboard perfecto: Veeam ONE – Parte VII – Vistazo profundo a los Dashboards en Veeam ONE Reporter
      • En busca del Dashboard perfecto: Veeam ONE – Parte VIII – Vistazo profundo a Reportes en Veeam ONE Reporter
      • En busca del Dashboard perfecto: Veeam ONE – Parte IX – Chargeback para crear reportes de coste de nuestra Infraestructura
    • Veeam Availability Console
      • 1 – Teoría e información útil sobre el producto
      • 2 – Instalación de Veeam Availability Console
      • 3 – Configuración y conexión con VBR Server
      • 4 – Administración centralizada de Veeam Backup Agents
      • 5 – Backup de Agentes a diferentes destinos, SMB, Repositorio Veeam o Cloud Connect
      • 6 – Reportes de Backup de Veeam Agent y Veeam Backup and Replication
      • 7 – Manejando la Facturación de Veeam Agents, Backup and Replication y Cloud Connect
    • Backup y restore de cargas de trabajo a Microsoft Azure
      • 1 – Introducción
      • 2 – Conectividad entre nuestro Datacenter y Microsoft Azure
      • 3 – Desplegar Veeam Backup and Replication en Microsoft Azure
      • 4 – Configuración en nuestro Datacenter para backup a Microsoft Azure
      • 5 – Restaurando a Microsoft Azure, desde Microsoft Azure
      • 6 – Migrar cargas de trabajo desde Microsoft Azure hacía nuestro Datacenter
    • Veeam v9.5 Update 4
      • Veeam Cloud Tier
        • Cómo controlar el ancho de banda en Veeam Cloud Tier
      • Secure Restore y Staged Restore
      • Mejoras en Veeam Agent Management
      • Veeam Community Edition
      • Actualizar Veeam Enterprise Manager y Veeam Backup and Replication a la última versión
      • VeeamONE con Intelligent Diagnostics, Remediation actions, Business View 2.0 y Application Monitoring
    • VeeamON 2022
      • Novedades en Veeam ONE v12
    • VeeamON 2021
      • VBO v6 – Self-Service y Backup Copy Glacier-Azure Archive
    • VeeamON 2020
      • Veeam Backup for AWS v2.0
    • VeeamON 2019
      • Veeam Availability Orchestrator v2.0 – ¡novedades!
    • VeeamON 2017
      • Sesiones recomendadas
      • Día I – Veeam Availability Suite v10 – ¡novedades!
      • Día II – Veeam Azure PN (Powered Network), Scale-out Archive Tier y mucho más
    • VeeamON 2015
      • VeeamON 2015 volverá a Las Vegas en el único Evento sobre Disponibilidad en el Data Center
      • Completo resumen, keynotes e imágenes
      • vBrownBag – Jorge de la Cruz – Stop sending postcards to your customers
  • Zextras
  • PRTG
  • Office 365
    • Microsoft – Añadiendo nuestro dominio a Office 365, configuración de DNS y migración de actual Mailbox
    • Veeam: Usando Microsoft Office 365 para nuestras notificaciones por correo electrónico
    • PRTG: Usando Microsoft Office 365 para nuestras notificaciones por correo electrónico
  • Zimbra
    • Instalación
      • Instalando Zimbra 8.7.6 sobre Ubuntu 14.04 LTS – ¡con Chat y Drive!
      • Amazon Lightsail para instalar Zimbra Collaboration 8.7.1, Parte II
      • Amazon Lightsail para instalar Zimbra Collaboration 8.7.1, Parte I
      • Instalando Zimbra 8.7.x con un solo comando, incluye Chat y Drive
  • Linux
    • InfluxDB, Grafana y Telegraf
      • 1 – Instalación y configuración de los components
      • 2 – Instalar agente en Linux
      • 3 – Integración con PRTG
      • 4 – Instalar agente Telegraf en Nodos remotos Windows
      • 5 – Activar inputs específicos, Red, MySQL/MariaDB, Nginx
      • 6 – Monitorizando Veeam
    • Ansible y Zabbix
      • 1 – Inicio
      • 2 – Instalación de Ansible e integración con Active Directory
      • 3 – Configuración de AutoDiscovery en Zabbix
      • 4 – Instalación del agente de Zabbix en Windows
      • 5 – Instalación del agente de Zabbix en Linux y Auto Remove en Zabbix
    • Jenkins
      • 1 – Inicio
      • 2 – Instalación de Jenkins en Ubuntu
      • 3 – Instalando nuestro primer plugin
      • 4 – Sincronización NTP de Linux
      • 5 – Añadir un Slave Windows a Jenkins
      • 6 – Ejecutar tareas en Linux
      • 7 – Ejecutar tareas en Windows
    • Kubernetes
      • 1 – Introducción a Kubernetes
      • 2 – Instalación paso a paso
      • 3 – RollingUpdate con Kubernetes
      • 4 – Dashboard
      • 5 – Volúmenes NFS
      • 6 – Registry
      • 7 – Traefik
      • 8 – Systemd con Traefik y Proxy de Kubernetes
      • 9 – Heapster Influx Grafana
      • 10 – Labels de Kubernetes
      • 11 – API: Swagger
      • 12 – API: Creando nuestro primer POD
  • Contribuidores
    • Acerca de Jorge
    • Acerca de Oscar Mas
      • Clúster SQL
        • 1 – Introducción
        • 2 – Preparación de los equipos virtuales
        • 3 – Instalación del Clúster de Microsoft
        • 4 – Instalación de SQL Server para Clúster de Microsoft
        • 5 – Configuración de nuestro Clúster de SQL
        • 6 – Monitorización de Clúster de SQL con Zabbix
        • 7 – Actualizando clúster de SQL

En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte I

10 May, 2017 - Escrito en: elastic

Saludos amigos, hoy os traigo otra serie sobre Dashboards, en este caso os quiero presentar Elastic Stack, que incluye varios componentes que harán de la tarea de monitorizar Logs, y la ingestión de datos desde aplicaciones, una tarea mucho más sencilla, además Elastic incluye el X-Pack, que nos permite funcionalidades adicionales como pueden ser el reporting, monitoring de nuestros servicios de Elastic, Alertas y mucho más.

Como esta entrada es extremadamente larga, os dejo un menú para moveros con agilidad:

  • Esquema lógico de la Infraestructura
  • Orden de instalación
  • Requerimientos de Hardware y Software
  • Instalando Elasticsearch
    • Añadiendo la llave PGP y Repositorios
    • Instalación de los paquetes de Elasticsearch
    • SysV init vs. systemd
    • Revisar Logs de Elasticsearch en caso de fallo al ejecutarse
    • Comprobar que hemos instalado correctamente Elasticsearch
  • Instalando Kibana
  • Instalando Logstash
    • Creando el certificado SSL para Logstash
    • Creando los ficheros de configuración
  • Comprobar los puertos de Elastic Stack
  • Instalar y configurar Filebeat en un cliente basado en Ubuntu
  • Realizando la primera prueba con Kibana

Esquema lógico de la Infraestructura

Os dejo un gráfico ara que comprendamos los componentes que vamos a instalar y configurar en este laboratorio:

  • Logstash: Es un servicio que se encarga de ingerir información , normalmente logs, los procesa y los transforma en información que se puede almacenar y mostrar de manera mas humana en Elasticsearch.
  • Beats: Los Beats son agentes ligeros que se integran en las aplicaciones o servicios que tenemos y que mandan todo tipo de información hacía Logstash o Elasticsearch. Hay varios Beats ya disponibles como son: Logs, Metrics, Network, Windows y uptime.
  • Elasticsearch: Es la pieza principal de Elastic Stack y se encarga de almacenar y realizar búsquedas de información almacenada de manera muy, muy rápida.
  • Kibana: Es el Dashboard que se encarga de mostrar toda la información que Elastic Stack tiene almacenada en la Elasticsearch.

X-Pack y Elastic Cloud serán cubiertos en sus propias entradas posteriormente, con lo que estar atentos para conocer mas detalles de estas dos funcionalidades Corporativas que nos proporciona Elastic.

Orden de instalación

La recomendación de Elastic es la siguiente para conseguir un Elastic Stack perfectamente instalado, y asegurarnos que los componentes se instalan en el orden adecuado:.

  • Elasticsearch
  • Kibana
  • Logstash
  • Beats

Requerimientos de Hardware y Software

No hay unos requerimientos específicos para Elastic Stack, ya que depende de la cantidad de Logs y el tamaño de los mismos a procesar, pero para un pequeño Homelab como el mío he decidido crear una VM con:

  • CPU – 4vCPU
  • RAM – 8GB
  • SSD – 60GB

Configurar el tamaño adecuado para vuestro entorno de Elastic Stack es una operación que debe hacerse con paciencia y planearlo sabiendo el tamaño de logs a ingerir, etc. Si tenéis dudas os recomiendo abrir un thread en los Foros de Elastic, o contactar con algún Partner recomendado, por ejemplo Seacom.

Es muy importante instalar Java antes de instalar Elasticsearch o cualquier otro componente de Elastic Stack, tan sencillo como:

sudo apt-get install default-jre

Instalando Elasticsearch

Existen varias maneras de instalar Elasticsearch, en mi caso voy a instalar todo Elastic Stack en Ubuntu 16.04 LTS. Una vez que tenemos la VM o server cloud preparado realizaremos los siguientes pasos para una instalación automática desde los repositorios oficiales de Elastic.

Añadiendo la llave PGP y Repositorios

El primer paso es importar la llave PGP en nuestro sistema

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Ahora necesitaremos instalar el paquete de transport https de la siguiente manera, es probable que en Ubuntu 16.04 LTS ya lo tengáis en todo caso:

sudo apt-get install apt-transport-https

Añadiremos los repositorios de Elastic de la siguiente manera a nuestra lista de repositorios de apt:

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

Instalación de los paquetes de Elasticsearch

Ya estamos listos para lanzar la instalación de Elasticsearch con el siguiente comando, este comando hará un update de los paquetes y procederá a la instalación de Elasticsearch:

sudo apt-get update && sudo apt-get install elasticsearch

Deberíamos ver un output similar al siguiente:

The following NEW packages will be installed:
  elasticsearch
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 33.2 MB of archives.
After this operation, 37.1 MB of additional disk space will be used.
Get:1 https://artifacts.elastic.co/packages/5.x/apt stable/main amd64 elasticsearch all 5.4.0 [33.2 MB]
Fetched 33.2 MB in 50s (654 kB/s)                                                                                                                                                                                                       
Selecting previously unselected package elasticsearch.
(Reading database ... 59575 files and directories currently installed.)
Preparing to unpack .../elasticsearch_5.4.0_all.deb ...
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Unpacking elasticsearch (5.4.0) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up elasticsearch (5.4.0) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...

SysV init vs. systemd

Elasticsearch por defecto no arranca automáticamente, por lo que tendremos que lanzar un comando u otro dependiendo de nuestro sistema, si estamos usando Ubuntu 16.04 LTS será systemd seguramente, pero para estar seguros lanzaremos el siguiente comando:

 ps -p 1

Ejecutar Elasticsearch con SysV init

Si el resultado del comando anterior nos ha devuelto que estamos usando init, entonces ejecutaremos el siguiente comando:

sudo update-rc.d elasticsearch defaults 95 10

Podemos arrancar o parar el servicio con los típicos comandos:

sudo -i service elasticsearch start
sudo -i service elasticsearch stop

Ejecutar Elasticsearch con systemd

Si estamos en una versión moderna de Ubuntu, seguramente el resultado del ps -p 1 será que usamos systemd, para ejecutar Elasticsearch de manera automática en cada arranque lanzaremos los siguientes comandos:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Elasticsearch podrá ser arrancado con los siguientes comandos:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

Revisar Logs de Elasticsearch en caso de fallo al ejecutarse

Si por cualquier motivo tuvieramos un error al arrancar el servicio, podremos encontrar los logs en la siguiente ubicación – /var/log/elasticsearch/

Si estamos usando systemd Elasticsearch no guarda información por defecto en el journal de systemd, por lo que hay que eliminar la opción de –quiet de la línea llamada ExectStart dentro del fichero /usr/lib/systemd/system/elasticsearch.service

ExecStart=/usr/share/elasticsearch/bin/elasticsearch \
                                                -p ${PID_DIR}/elasticsearch.pid \
                                                --quiet \
                                                -Edefault.path.logs=${LOG_DIR} \
                                                -Edefault.path.data=${DATA_DIR} \
                                                -Edefault.path.conf=${CONF_DIR}

Una vez que hemos realizado esta operación podremos consultar directamente al journal de systemd de la siguiente manera:

sudo journalctl -f

Si queremos solamente las entradas referentes al servicio de elasticsearch ejecutaremos lo siguiente:

sudo journalctl --unit elasticsearch

Comprobar que hemos instalado correctamente Elasticsearch

Podemos ejecutar el siguiente comando para saber si tenemos nuestro Elasticsearch arriba y funcionando:

curl -i -XGET 'localhost:9200/'

Y si todo está bien, nos devolverá lo siguiente:

HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 327

{
  "name" : "u-pjjoX",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "-lfWywfyT4aw0UXb9wGZYw",
  "version" : {
    "number" : "5.4.0",
    "build_hash" : "780f8c4",
    "build_date" : "2017-04-28T17:43:27.229Z",
    "build_snapshot" : false,
    "lucene_version" : "6.5.0"
  },
  "tagline" : "You Know, for Search"
}

Si tuvieramos cualquier error aquí, nos tendremos que ir a la sección anterior y depurar el error que tengamos.

Instalando Kibana

Una vez que hemos realizado la instalación de Elasticsearch, el resto de módulos no tienen mucho misterio, en este caso instalaremos Kibana con el siguiente comando:

sudo apt-get update && sudo apt-get install kibana

Que nos devolverá algo similar a este output:

The following NEW packages will be installed:
  kibana
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 55.1 MB of archives.
After this operation, 208 MB of additional disk space will be used.
Get:1 https://artifacts.elastic.co/packages/5.x/apt stable/main amd64 kibana amd64 5.4.0 [55.1 MB]
Fetched 55.1 MB in 36s (1,519 kB/s)                                                                                                                                                                                                     
Selecting previously unselected package kibana.
(Reading database ... 62124 files and directories currently installed.)
Preparing to unpack .../kibana_5.4.0_amd64.deb ...
Unpacking kibana (5.4.0) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...
Setting up kibana (5.4.0) ...
Processing triggers for systemd (229-4ubuntu17) ...
Processing triggers for ureadahead (0.100.0-19) ...

Lanzaremos ahora el comando que nos corresponda, dependiendo de init o systemd para ejecutar Kibana en el arranque del sistema, si tenéis dudas consultar la sección anterior sobre este tema, en mi caso para systemd:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service

Para parar y arrancar el servicio, si tenemos systemd, con los siguientes comandos:

sudo systemctl start kibana.service
sudo systemctl stop kibana.service

Nos quedaría un paso importante para al menos comprobar que podemos acceder a Kibana correctamente, editaremos el fichero de confguración vi /etc/kibana/kibana.yml y cambiar la siguiente línea por un host que se pueda resolver en la red, si dejamos localhost no podremos acceder desde equipos externos:

server.port: 5601
server.host: "elastic.zimbra.io"
elasticsearch.url: "http://elastic.zimbra.io:9200"

Y reiniciaremos Kibana:

sudo systemctl stop kibana.service
sudo systemctl start kibana.service

Si nos vamos a esta dirección con el puerto 5206 ya podremos acceder a Kibana

Vamos a pasar al siguiente elemento ahora antes de seguir tocando nada más.

Instalando Logstash

Vamos a realizar ahora la instalación de Logtash de la siguiente manera, ya que ya tenemos el repositorio, java y demás, es tan sencillo como:

sudo apt-get update && sudo apt-get install logstash

Seguramente veamos un output similar a este:

The following NEW packages will be installed:
  logstash
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 93.9 MB of archives.
After this operation, 173 MB of additional disk space will be used.
Get:1 https://artifacts.elastic.co/packages/5.x/apt stable/main amd64 logstash all 1:5.4.0-1 [93.9 MB]
Fetched 93.9 MB in 1min 18s (1,191 kB/s)                                                                                                                                                                                                
Selecting previously unselected package logstash.
(Reading database ... 119618 files and directories currently installed.)
Preparing to unpack .../logstash_1%3a5.4.0-1_all.deb ...
Unpacking logstash (1:5.4.0-1) ...
Setting up logstash (1:5.4.0-1) ...
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash

Ya vimos anteriormente la diferencia entre init y systemd, por lo que en mi caso voy a ejecutar ahora el comando para que Logstash se ejecute automáticamente:

sudo /bin/systemctl daemon-reload 
sudo /bin/systemctl enable logstash.service

Y para arrancarlo o pararlo, los comandos de siempre, si usas systemd:

sudo systemctl start logstash.service
sudo systemctl stop logstash.service

Parece que hay un pequeño bug que nos mostrará varios errores en los logs y que corregiremos antes de nada ejecutando este comando:

sudo touch /etc/logstash/conf.d/empty.conf

Creando el certificado SSL para Logstash

Logtash necesita un certificado SSL para poder ser verificado por los clientes que le envían información, podremos crear un certificado SSL de la siguiente manera, por favor recordar poner vuestro hostname en el /CN

cd /etc/logstash/
openssl req -subj /CN=elastic.zimbra.io -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt

Creando los ficheros de configuración

Vamos a crear ahora tres ficheros de configuración diferentes, uno para beats, otro para syslog, y el último para el output de Elasticsearch.

Vamos a empezar con el file beats, nos iremos hasta el siguiente directorio y crearemos el siguiente fichero de configuración:

cd /etc/logstash/
vi conf.d/filebeat-input.conf

E introduciremos los siguientes valores:

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/logstash.crt"
    ssl_key => "/etc/logstash/logstash.key"
  }
}

Crearemos ahora el fichero para syslog de la siguiente manera:

vi conf.d/syslog-filter.conf

E introduciremos lo siguiente, que basicamente usa el plugin llamado grok para hacer el parseo de los ficheros:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Y por último crearemos el fichero para el output de elasticsearch:

vi conf.d/output-elasticsearch.conf

Con el siguiente contenido:

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

Comprobar los puertos de Elastic Stack

Realizando el siguiente comando podremos ver si tenemos todos los servicios escuchando de la manera adecuada, algunos comentarios:

  • Hemos cambiado la configuración de Kibana para que escuche por la IP. Configuraremos NGINX en futuras entradas. Puerto 5601
  • Elasticsearch está escuchando en el puerto 9200 y 9300
  • Logstash está escuchando en el puerto 5443
root@elastic:/etc/logstash# netstat -plntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5378/sshd       
tcp        0      0 192.168.1.85:5601       0.0.0.0:*               LISTEN      27553/node      
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      25943/java      
tcp6       0      0 ::1:9200                :::*                    LISTEN      25943/java      
tcp6       0      0 127.0.0.1:9300          :::*                    LISTEN      25943/java      
tcp6       0      0 ::1:9300                :::*                    LISTEN      25943/java      
tcp6       0      0 :::22                   :::*                    LISTEN      5378/sshd       
tcp6       0      0 127.0.0.1:9600          :::*                    LISTEN      31301/java      
tcp6       0      0 :::5443                 :::*                    LISTEN      31301/java

Instalar y configurar Filebeat en un cliente basado en Ubuntu

Ha llegado la hora de configurar un agente de Filebeat para mandar información hacía Elastic Stack, en mi caso sobre Ubuntu.

El primer paso será comprobar que podemos resolver por DNS al hostname de Elasticsearch, en mi caso al tener un server DNS para mi homelab, todo va bien, si hubiera la necesidad, se podría editar el fichero de /etc/hosts en el cliente y añadir el server de Elasticsearch de manera manual:

root@tig-monitor:/home/oper# ping elastic
PING elastic.zimbra.io (192.168.1.85) 56(84) bytes of data.
64 bytes from 192.168.1.85: icmp_seq=1 ttl=64 time=0.297 ms

El tercer paso es añadir la llave PGP al cliente ubuntu:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Necesitaremos el paquete de https transport para poder descargar e instalar los paquetes de Elastic:

sudo apt-get install -y apt-transport-https

Añadiremos los repositorios de Elastic de la siguiente manera a nuestra lista de repositorios de apt:

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update

El tercer paso es instalar el paquete de beats de Elastic de la siguiente manera:

sudo apt-get install -y filebeat

El cuarto paso será copiar el certificado SSL del server de Elasticsearch en este cliente, en la carpeta que deseemos, en mi caso podéis ver que he ubicado una copia en /tmp para acceder más sencillo y con un usuario con menos privilegios, y que al final es copiado a la carpeta /etc/filebeat del cliente:

cd /etc/filebeat
scp oper@elastic:/tmp/logstash.crt .

Y ahora ya podremos comenzar con la configuración del agente, editaremos el siguiente fichero:

vi /etc/filebeat/filebeat.yml

Podremos por ejemplo añadir todos los logs en el directorio de logs y los mensajes de sistema, y el tipo que estamos añadiendo en este caso syslog, debería quedar de la siguiente manera:

- input_type: log

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/messages
    - /var/log/*.log
  document_type: syslog

En este mismo fichero tendremos que comentar la sección de Elasticsearch, con lo que tendría que quedar de la siguiente manera:

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Editaremos ahora la sección de output de Logstash que debería quedar más o menos del siguiente modo, recordar usar el hostname de vuestro Elastic Stack server, no solo eso, sino que además debe ser exacto al /CN que pusimos al crear el SSL:

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["elastic.zimbra.io:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Y por último en la sección de Logging añadiremos un valor, de manera que quedaría así:

#================================ Logging =====================================

# Sets log level. The default log level is info.
# Available log levels are: critical, error, warning, info, debug
#logging.level: debug
logging.metrics.period: 1m

Y ya podemos guardarlo y cerrarlo, vamos ahora a configurar beats para que se inicie al inicio y arrancaremos el servicio, en este caso al usar una versión antigua de Ubuntu, tengo que usar init, de nuevo si teneis dudas, volver al punto donde se explica init y systemd

 sudo update-rc.d filebeat defaults 95 10
 Adding system startup for /etc/init.d/filebeat ...
   /etc/rc0.d/K10filebeat -> ../init.d/filebeat
   /etc/rc1.d/K10filebeat -> ../init.d/filebeat
   /etc/rc6.d/K10filebeat -> ../init.d/filebeat
   /etc/rc2.d/S95filebeat -> ../init.d/filebeat
   /etc/rc3.d/S95filebeat -> ../init.d/filebeat
   /etc/rc4.d/S95filebeat -> ../init.d/filebeat
   /etc/rc5.d/S95filebeat -> ../init.d/filebeat
sudo -i service elasticsearch start

Al arrancar el servicio veremos un output similar a este:

2017/05/07 18:47:10.292117 beat.go:285: INFO Home path: [/usr/share/filebeat] Config path: [/etc/filebeat] Data path: [/var/lib/filebeat] Logs path: [/var/log/filebeat]
2017/05/07 18:47:10.292163 beat.go:186: INFO Setup Beat: filebeat; Version: 5.4.0
2017/05/07 18:47:10.292249 metrics.go:23: INFO Metrics logging every 30s
2017/05/07 18:47:10.292473 logstash.go:90: INFO Max Retries set to: 3
2017/05/07 18:47:10.292566 outputs.go:108: INFO Activated logstash as output plugin.
2017/05/07 18:47:10.292642 publish.go:295: INFO Publisher name: tig-monitor
2017/05/07 18:47:10.292807 async.go:63: INFO Flush Interval set to: 1s
2017/05/07 18:47:10.292830 async.go:64: INFO Max Bulk Size set to: 2048
Config OK

Si queremos ojear si Beats está enviando correctamente datos hacía nuestro server un tail a los logs debe devolvernos más o menos lo siguiente:

root@tig-monitor:/home/oper# tail -f /var/log/filebeat/filebeat
2017-05-07T19:58:45+01:00 INFO Starting prospector of type: log; id: 15553102747449154808 
2017-05-07T19:58:45+01:00 INFO Loading and starting Prospectors completed. Enabled prospectors: 1
2017-05-07T19:58:45+01:00 INFO Starting spooler: spool_size: 2048; idle_timeout: 5s
2017-05-07T19:58:45+01:00 INFO Harvester started for file: /var/log/kern.log
2017-05-07T19:58:45+01:00 INFO Harvester started for file: /var/log/boot.log
2017-05-07T19:58:45+01:00 INFO Harvester started for file: /var/log/alternatives.log
2017-05-07T19:58:45+01:00 INFO Harvester started for file: /var/log/auth.log
2017-05-07T19:58:45+01:00 INFO Harvester started for file: /var/log/dpkg.log
2017-05-07T19:58:45+01:00 INFO Harvester started for file: /var/log/bootstrap.log
2017-05-07T19:59:15+01:00 INFO Non-zero metrics in the last 30s: filebeat.harvester.open_files=6 filebeat.harvester.running=6 filebeat.harvester.started=6 libbeat.logstash.call_count.PublishEvents=46 libbeat.logstash.publish.read_bytes=4191 libbeat.logstash.publish.write_bytes=2670150 libbeat.logstash.published_and_acked_events=92928 libbeat.publisher.published_events=92928 publish.events=93026 registrar.states.current=6 registrar.states.update=93026 registrar.writes=46

Realizando la primera prueba con Kibana

Después de todos estos pasos, es el momento de irnos a nuestro Kibana, y crearemos un nuevo index pattern, seleccionaremos que sea de tipo filebeat-* y en timestamp seleccionaremos @timestamp

El index ha sido generado y ahora podríamos editar todos los campos que estamos ingiriendo, si queremos mostrarlos, analizarlos, etc:

Si nos fueramos ahora a Discover, podríamos ver que Kibana ya nos muestra datos de los logs que tenemos ya dentro de Logstash y Elasticsearch:

Por ejemplo, podemos ver de manera sencilla un ataque denegado de SSH, y desde que IP se está originando:

En siguientes entradas vamos a ver lo siguiente:

  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte I
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte II (Logs de Windows)
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte III (X-Pack)
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte IV (Nginx y mapa con GeoIP)
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte V (Dashboard con Web Analytics)
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte VI (Monitorizando Veeam)
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte VII (Monitorizando VMware vSphere)
  • En busca del Dashboard perfecto: Elastic Stack 5.x (Beats, Logstash, Elasticsearch y Kibana) – Parte VIII (Monitorizando Zimbra Collaboration)

Filed Under: elastic Tagged With: dashboard, elastic, elastic beats, elastic dashboard, elastic grafana, elastic logstash

Reader Interactions

Comments

  1. Luismi says

    11 May, 2017 at 7:06

    Buen articulo. Yo uso ELK en conjunto con Wazuh,un fork de Ossec, y la verdad que va de fábula.

    Reply
  2. Alvaro says

    16 April, 2018 at 0:23

    Muchas gracias
    Muy buen artículo: bien explicado, paso a paso, detallado, … una pena que no haya continuado la serie

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

  • Email
  • GitHub
  • LinkedIn
  • RSS
  • Twitter
  • YouTube

Gold Partners

Silver Partners

Libros Gratuitos

Cloud por vExperts
VMware por vExperts

VMware vExpert

Puesto 16 en Top vBlog

Calendario de Posts

May 2017
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
293031  
« Apr   Jun »

Disclaimer

Todas las opiniones expresadas en este sitio son las mías propias y no representan las opiniones de ninguna compañía con la que haya trabajado, esté trabajando o vaya a estar trabajando.

Copyright © 2026 · El Blog de Jorge de la Cruz