Cómo instalar Elastic Stack (Elasticsearch, Logstash y Kibana) en CentOS 8

Elasticsearch es un motor de búsqueda de código abierto basado en Lucene, desarrollado en Java. Proporciona un motor de búsqueda de texto completo distribuido y multitante con una interfaz web HTTP Dashboard (Kibana). Los datos se consultan, recuperan y almacenan con un esquema de documentos JSON. Elasticsearch es un motor de búsqueda escalable que puede utilizarse para buscar todo tipo de documentos de texto, incluidos los archivos de registro. Elasticsearch es el corazón de la «pila elástica» o pila ELK.

Logstash es una herramienta de código abierto para gestionar eventos y registros. Proporciona una canalización en tiempo real para la recogida de datos. Logstash recogerá tus datos de registro, los convertirá en documentos JSON y los almacenará en Elasticsearch.

Kibana es una herramienta de visualización de datos de código abierto para Elasticsearch. Kibana proporciona una bonita interfaz web de panel de control. Te permite gestionar y visualizar los datos de Elasticsearch. No sólo es bonito, sino también potente.

En este tutorial, te mostraremos paso a paso la instalación y configuración de ‘Elastic Stack’ en el servidor CentOS 8. Instalaremos y configuraremos Elasticsearch, Logstash y Kibana. Y luego configuraremos el ‘filebeat’ de Beats en los clientes del sistema Ubuntu y CentOS.

Requisitos previos

  • CentOS 8 64 bits con 4 GB de RAM – elk-master
  • CentOS 8 64 bits con 1 GB de RAM – client01
  • Ubuntu 18.04 64 bits con 1 GB de RAM – cliente02

Qué vamos a hacer

  • Añadir el repositorio Elastic al servidor CentOS 8
  • Instalar y configurar Elasticsearch
  • Instalar y configurar Kibana Dashboard
  • Configurar Nginx como proxy inverso para Kibana
  • Instalar y configurar Logstash
  • Instalar y configurar Filebeat
  • Prueba de

Paso 1 – Añadir el Repositorio Elástico

En primer lugar, vamos a añadir la clave y el repositorio de Elasticsearc al servidor CentOS 8. Con el repositorio de elasticsearch proporcionado por elastic.co, podremos instalar productos elásticos como Elasticsearch, Logstash, Kibana y Beats.

Añade la clave elástica al sistema utilizando el siguiente comando.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Después, ve al directorio ‘/etc/yum.repos.d’ y crea un nuevo archivo de repositorio ‘elasticsearch.repo’.

cd /etc/yum.repos.d/
vim elasticsearch.repo

Pega el repositorio de elasticsearch a continuación.

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Guarda y cierra.

Ahora comprueba todos los repositorios disponibles en el sistema utilizando el comando dnf que aparece a continuación.

dnf repolist

Y obtendrás el repositorio de elasticsearch que se ha añadido al servidor CentOS 8.

Obtener la lista de repositorios con el comando dnf

Como resultado, podrás instalar productos Elastic como Elasticsearch, Logstash y Kibana, etc.

Paso 2 – Instalar y configurar Elasticsearch

En este paso, vamos a instalar y configurar Elasticsearch.

Instala el paquete de Elasticsearch utilizando el comando dnf que aparece a continuación.

sudo dnf install elasticsearch -y

Una vez completada la instalación, ve al directorio ‘/etc/elasticsearch’ y edita el archivo de configuración ‘elasticsearch.yml’ utilizando el editor vim.

cd /etc/elasticsearch/
vim elasticsearch.yml

Descomenta las siguientes líneas y cambia el valor de cada línea como se indica a continuación.

network.host: 127.0.0.1
http.port: 9200

Guarda y cierra.

Opcionalmente:

Puedes ajustar el elasticsearch editando el archivo de configuración de la JVM ‘jvm.options’ y establecer el tamaño de la pila en función de la memoria que tengas.

Edita la configuración de la JVM ‘jvm.options’ utilizando el editor vim.

vim jvm.options

Cambia el tamaño mínimo/máximo de la pila a través de la configuración Xms y Xmx como se indica a continuación.

-Xms512m
-Xmx512m

Guarda y cierra.

A continuación, recarga la configuración del gestor systemd y añade el servicio elasticsearch en el arranque.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch

A continuación, inicia el servicio elasticsearch.

sudo systemctl start elasticsearch

Configurar e iniciar elasticssearch

Como resultado, el elasticsearch está funcionando detrás de la dirección IP local ‘127.0.0.1’ con el puerto por defecto ‘9200’ en el servidor CentOS 8.

Puedes comprobar el elasticsearch utilizando el siguiente comando curl.

curl -XGET 'http://127.0.0.1:9200/?pretty'

Y a continuación se muestra el resultado que obtendrás.

Prueba de cobbección a Elasticsearch

Paso 3 – Instalar y configurar el panel de control de Kibana

Después de instalar elasticsearch, vamos a instalar y configurar el tablero de instrumentos Kibana en el servidor CentOS 8.

Instala el dashboard Kibana utilizando el comando dnf que aparece a continuación.

sudo dnf install kibana

Una vez completada la instalación, ve al directorio ‘/etc/kibana’ y edita el archivo de configuración ‘kibana.yml’.

cd /etc/kibana/
vim kibana.yml

Descomenta y cambia algunas líneas de configuración como se indica a continuación.

server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"

Guarda y cierra.

A continuación, añade el servicio de kibana al arranque del sistema e inicia el servicio de kibana.

sudo systemctl enable kibana
sudo systemctl start kibana

Instalar el panel de control de Kibana

El servicio Kibana está en marcha en el servidor CentOS 8, compruébalo con los siguientes comandos.

systemctl status kibana
netstat -plntu

Y obtendrás el resultado que se indica a continuación.

Comprobar el estado del servicio Kibana

Como resultado, el servicio Kibana está en marcha y funcionando por defecto en el puerto TCP ‘5601’.

Paso 4 – Configurar Nginx como proxy inverso para Kibana

En este paso, vamos a instalar el servidor web Nginx y configurarlo como proxy inverso para el Dashboard de Kibana.

Instala Nginx y httpd-tools utilizando el comando dnf que aparece a continuación.

sudo dnf install nginx httpd-tools

Una vez completada la instalación, ve al directorio ‘/etc/nginx/conf.d’ y crea un nuevo archivo de configuración ‘kibana.conf’.

cd /etc/nginx/conf.d/
vim kibana.conf

Pega la siguiente configuración.

server {
    listen 80;
 
    server_name elk.hakase-labs.io;
 
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;
 
    location / {
        proxy_pass http://127.0.0.1:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Guarda y cierra.

A continuación, tenemos que crear la autenticación básica para asegurar el acceso a Kibana. Cambia el usuario ‘hakase’ por el tuyo propio y ejecuta el comando htpasspwd como se indica a continuación.

sudo htpasswd -c /etc/nginx/.kibana-user hakase
TYPE YOUR PASSWORD

Escribe tu contraseña y prueba la configuración de nginx.

nginx -t

Asegúrate de que no hay ningún error.

Ahora añade el servicio nginx al arranque del sistema e inicia el servicio nginx.

systemctl enable nginx
systemctl start nginx

Configurar Nginx como proxy inverso

Como resultado, la instalación de Nginx y su configuración como proxy inverso para Kibana Dashboard se han completado.

Paso 5 – Instalar y configurar Logstash

En este paso, vamos a instalar y configurar el logstash el cargador de registros. Instalaremos logstash, configuraremos los beats de entrada, configuraremos el filtrado de syslogs usando el plugin de logstash llamado ‘grok’, y luego configuraremos la salida a elasticsearch.

Instala logstash utilizando el comando dnf que aparece a continuación.

sudo dnf install logstash

Una vez completada la instalación, ve al directorio ‘/etc/logstash’ y edita el archivo de configuración de la JVM ‘jvm.options’ utilizando el editor vim.

cd /etc/logstash/
vim jvm.options

Cambia el tamaño mínimo/máximo de la pila a través de la configuración Xms y Xmx como se indica a continuación.

-Xms512m
-Xmx512m

Guarda y cierra.

A continuación, ve al directorio ‘/etc/logstash/conf.d’ y crea el archivo de configuración para la entrada de latidos llamado ‘input-beat.conf’.

cd /etc/logstash/conf.d/
vim input-beat.conf

Pega la siguiente configuración.

input {
  beats {
    port => 5044
  }
}

Guarda y cierra.

Ahora crea el archivo de configuración ‘syslog-filter.conf’.

vim syslog-filter.conf

Pega la siguiente configuración.

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" ]
    }
  }
}

Guarda y cierra.

Y a continuación crea la configuración de salida para elasticsearch ‘output-elasticsearch.conf’.

vim output-elasticsearch.conf

Pega la siguiente configuración.

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

Guarda y cierra.

A continuación, añade el servicio logstash al arranque del sistema e inicia el servicio logstash.

systemctl enable logstash
systemctl start logstash

Configurar Logstash

El servicio logstash está en marcha, compruébalo con los siguientes comandos.

systemctl status logstash
netstat -plntu

Y obtendrás el resultado que se indica a continuación.

Comprobar el estado de logstash

El resultado es que el servicio logstash está funcionando en el servidor CentOS 8 con el puerto TCP por defecto ‘5044’. Y la instalación básica de Elastic Stack se ha completado, y estamos listos para enviar y monitorizar nuestros registros al servidor Elastic (ELK Stack).

Paso 6 – Instalar Filebeat en el cliente

En este paso, vamos a mostrarte cómo configurar el filebeat en el sistema Ubuntu y CentOS. Instalaremos un filebeat y lo configuraremos para que envíe los registros de ambos servidores al Logstash en el servidor elástico.

– Instalar Filebeat en CentOS 8

Añade la clave de elasticsearch al sistema CentOS 8 mediante el siguiente comando.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Ahora ve al directorio ‘/etc/yum.repos.d’ y crea el archivo ‘elasticsearch.repo’ utilizando el editor vim.

cd /etc/yum.repos.d/
vim elasticsearch.repo

Pega la siguiente configuración.

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Guarda y cierra.

Ahora instala el filebeat utilizando el comando dnf que aparece a continuación.

sudo dnf install filebeat

Espera a que termine la instalación de filebeat.

Instalar Filebeat

– Instalar Filebeat en Ubuntu 18.04

En primer lugar, instala los paquetes apt-transport-https.

sudo apt install apt-transport-https

Después, añade la clave y el repositorio de elasticsearch utilizando los siguientes comandos.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Ahora actualiza todos los repositorios e instala filebeat en el sistema ubuntu utilizando el siguiente comando apt.

sudo apt update
sudo apt install filebeat

Espera a que termine la instalación de filebeat.

Instalar el transporte apz https

– Configurar Filebeat

La configuración de filebeat se encuentra en el directorio ‘/etc/filebeat’. Ve al directorio filebeat y edita el archivo de configuración ‘filebeat.yml’.

cd /etc/filebeat/
vim filebeat.yml

Ahora desactiva la salida por defecto de elasticsearch como se indica a continuación.

#output.elasticsearch:
  # Array of hosts to connect to.
  #  hosts: ["127.0.0.1:9200"]

A continuación, activa la salida de logstash y especifica la dirección IP del host de logstash.

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

Guarda y cierra.

A continuación, tenemos que habilitar los módulos de filebeat. Ejecuta el siguiente comando filebeat para obtener la lista de módulos filebeat.

filebeat modules list

Habilita el módulo «sistema» con el siguiente comando.

filebeat modules enable system

El módulo filebeat system ha sido habilitado con el archivo de configuración ‘modules.d/system.yml’.

Edita la configuración del módulo del sistema utilizando el editor vim.

cd /etc/filebeat/
vim modules.d/system.yml

Descomenta la ruta del archivo syslog y del archivo de autorización ssh.

Para el sistema CentOS:

  # Syslog
  syslog:
    enabled: true
    var.paths: ["/var/log/messages"]

  # Authorization logs
  auth:
    enabled: true
    var.paths: ["/var/log/secure"]

Para el sistema Ubuntu:

  # Syslog
  syslog:
    enabled: true
    var.paths: ["/var/log/syslog"]

  # Authorization logs
  auth:
    enabled: true
    var.paths: ["/var/log/auth.log"]

Guarda y cierra.

Ahora añade el servicio filebeat al arranque del sistema e inicia el servicio.

systemctl enable filebeat
systemctl start filebeat

El servicio filebeat está en marcha, puedes comprobarlo con el siguiente comando.

systemctl status filebeat

Y se te mostrará el resultado como se indica a continuación.

Abajo está el resultado del servidor CentOS 8.

resultado del servidor CentOS

Y a continuación el del servidor Ubuntu 18.04.

Resultado del servidor Ubuntu 18.04

El resultado es que se ha establecido la conexión entre filebeat y el servicio logstash en la dirección IP ‘10.5.5.12’ del servidor de pila elástica.

Paso 7 – Prueba

Abre tu navegador web y escribe el nombre de dominio de la instalación de Elastic Stack en la barra de direcciones

http://elk.hakase-labs.io/

Ahora inicia sesión en el panel de control de Kibana utilizando la cuenta de autenticación básica que has creado.

Inicio de sesión en Kibana

Y obtendrás el panel de control de Kibana como se muestra a continuación.

Panel de control de Kibana

Ahora conéctate a los datos del índice de elasticsearch que se ha creado automáticamente después de que el filebeat se haya conectado al logstash. Haz clic en el enlace‘Conecta con tu índice Elasticsearch‘.

Crea el patrón de índice‘filebeat-*‘ y haz clic en el botón‘Paso siguiente‘.

Crear un patrón de índice Filebeat

Para el nombre del filtro, elige el filtro ‘@timestamp‘ y haz clic en ‘Crear patrón de índice’.

Elige el nombre del filtro

Una vez creado el patrón de índice ‘filebeat-*‘, haz clic en el menú‘Descubrir‘ de la izquierda.

Filebeat en el menú Descubrir

Y obtendrás los datos de registro de los clientes de filebeat como se indica a continuación.

Logs para el sistema CentOS 8.

Registros del sistema CentOS 8

Registro para el sistema Ubuntu.

Registros del sistema Ubuntu

Como resultado, los datos de registro definidos en el módulo del sistema filebeat han sido enviados al servidor de Elastic Stack.

Y la instalación y configuración de Elastic Stack en CentOS 8 se ha completado con éxito.

Referencia

También te podría gustar...