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.
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
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.
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
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.
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
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
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.
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 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.
– 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.
Y a continuación el 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
Ahora inicia sesión en el panel de control de Kibana utilizando la cuenta de autenticación básica que has creado.
Y obtendrás el panel de control de Kibana como se muestra a continuación.
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‘.
Para el nombre del filtro, elige el filtro ‘@timestamp‘ y haz clic en ‘Crear patrón de índice’.
Una vez creado el patrón de índice ‘filebeat-*‘, haz clic en el menú‘Descubrir‘ de la izquierda.
Y obtendrás los datos de registro de los clientes de filebeat como se indica a continuación.
Logs para el sistema CentOS 8.
Registro para el 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.