Cómo instalar Elastic Stack en Ubuntu 18.04 LTS

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 multiinquilino con una interfaz web HTTP Dashboard (Kibana). Los datos se consultan, recuperan y almacenan en un esquema de documentos JSON. Elasticsearch es un motor de búsqueda escalable que se puede utilizar para buscar todo tipo de documentos de texto, incluidos los archivos de registro. Elasticsearch es el corazón del ‘Elastic Stack’ o ELK Stack.
Logstash es una herramienta de código abierto para administrar eventos y registros. Proporciona canalización en tiempo real para la recopilación de datos. Logstash recopilará sus 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 tablero. Le permite administrar y visualizar datos de Elasticsearch. No solo es hermoso, sino también poderoso.
En este tutorial, le mostraré cómo instalar y configurar Elastic Stack en un servidor Ubuntu 18.04 para monitorear los registros del servidor. Luego, le mostraré cómo instalar y configurar ‘Elastic beats’ en Ubuntu 18.04 y un servidor de cliente CentOS 7.
requisitos previos
- 3 servidores
- Ubuntu 18.04 con 4 GB de RAM/memoria como ‘elk-master’ – 10.0.15.10
- Ubuntu 18.04 con 512 MB/1 GB de RAM/memoria como ‘elk-client01’ – 10.0.15.21
- CentOS 7.5 con 512 MB/1 GB de RAM/memoria como ‘elk-client02’ – 10.0.15.22
- Privilegios de raíz
¿Lo que haremos?
- Instalar pila elástica
- Instalar Java
- Instalar y configurar ElasticSearch
- Instalar y configurar Kibana
- Instalar y configurar Nginx como proxy inverso para Kibana
- Instalar y configurar Logstash
- Instalar y configurar Filebeat en Ubuntu 18.04
- Instalar y configurar Filebeat en CentOS 7.5
- Pruebas
Paso 1: instala el paquete elástico
En este primer paso, instalaremos y configuraremos ‘Elastic Stack’ en el servidor ‘elk-master’, así que ejecute todos los comandos y etapas para este paso solo en el servidor ‘elk-master’. Instalaremos y configuraremos cada componente de la pila elástica, incluidos Elasticsearch, Logstash shipper y Kibana Dashboard con el servidor web Nginx.
Instalar Java
Se requiere Java para la implementación de la pila elástica. Elasticsearch requiere Java 8. Se recomienda usar Oracle JDK 1.8 e instalaremos Java 8 desde un repositorio PPA.
Instale los paquetes ‘software-properties-common’ y ‘apt-transport-https’, y luego agregue el repositorio de Java PPA ‘webupd8team’. Ejecute el comando ‘apt install’ y ‘add-apt-repository’ a continuación.
sudo apt install software-properties-common apt-transport-https -y sudo add-apt-repository ppa:webupd8team/java -y
Ahora instale el instalador java8.
sudo apt install oracle-java8-installer -y
Una vez finalizada la instalación, compruebe la versión de Java.
java -version
Java 1.8 instalado en el sistema.
A continuación, configuraremos el entorno java. Verifique el archivo binario de Java usando el siguiente comando.
update-alternatives --config java
Y obtendrá el archivo binario de Java en el ‘/usr/lib/jvm/java-8-oracle‘directorio.
Ahora cree el archivo de perfil ‘java.sh’ en el directorio ‘profile.d’.
vim /etc/profile.d/java.sh
Pegue la configuración del entorno Java a continuación.
#Set JAVA_HOME JAVA_HOME="/usr/lib/jvm/java-8-oracle" export JAVA_HOME PATH=$PATH:$JAVA_HOME export PATH
Guardar y Salir.
Haga que el archivo sea ejecutable y cargue el archivo de configuración.
chmod +x /etc/profile.d/java.sh source /etc/profile.d/java.sh
Ahora verifique el entorno Java usando el siguiente comando.
echo $JAVA_HOME
Y obtendrá el directorio java que se encuentra en ‘/usr/lib/jvm/java-8-oracle‘directorio.
Instalar Elasticsearch
Luego de instalar Java, instalaremos el primer componente del Elastic Stack, instalaremos el elasticsearch.
Agregue la clave de pila elástica y agregue el repositorio elástico al sistema.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Ahora actualice el repositorio e instale el paquete elasticsearch usando el siguiente comando.
sudo apt update sudo apt install elasticsearch -y
Una vez completada la instalación, vaya al directorio ‘/etc/elasticsearch’ y edite el archivo de configuración ‘elasticsearch.yml’.
cd /etc/elasticsearch/ vim elasticsearch.yml
Elimine el comentario de la línea ‘network.host’ y cambie el valor a ‘localhost’, y elimine el comentario de la línea ‘http.port’ para la configuración del puerto de búsqueda elástica.
network.host: localhost http.port: 9200
Guardar y Salir.
Ahora inicie el servicio elasticsearch y permita que se inicie cada vez que se inicia el sistema.
systemctl start elasticsearch systemctl enable elasticsearch
El elasticsearch ahora está en funcionamiento, verifíquelo usando el comando netstat netstat y los comandos curl a continuación.
netstat -plntu curl -XGET 'localhost:9200/?pretty'
Ahora obtendrá la versión de elasticsearch ‘6.2.4’ que se está ejecutando en el puerto predeterminado ‘9200’.
La instalación de elasticsearch se ha completado.
Instalar y configurar el panel de control de Kibana
El segundo componente es un panel de kibana. Instalaremos el tablero de Kibana desde el repositorio elástico y configuraremos el servicio de Kibana para que se ejecute en la dirección localhost.
Instale el tablero de Kibana usando el comando apt a continuación.
sudo apt install kibana -y
Ahora ve al directorio ‘/etc/kibana’ y edita el archivo de configuración ‘kibana.yml’.
cd /etc/kibana/ vim kibana.yml
Quite el comentario de esas líneas ‘server.port’, ‘server.host’ y ‘elasticsearch.url’.
server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200"
Guardar y Salir.
Ahora inicie el servicio kibana y permita que se inicie cada vez que se inicia el sistema.
sudo systemctl enable kibana sudo systemctl start kibana
El tablero de kibana ahora está en funcionamiento en la dirección ‘localhost’ y el puerto predeterminado ‘5601’. Compruébalo usando el comando netstat a continuación.
netstat -plntu
Se ha completado la instalación del panel de control de Kibana.
Instalar y configurar Nginx como proxy inverso para Kibana
En este tutorial, utilizaremos el servidor web Nginx como proxy inverso para el Panel de control de Kibana.
Instale Nginx y los paquetes ‘apache2-utils’ en el sistema.
sudo apt install nginx apache2-utils -y
Una vez completada la instalación, vaya al directorio de configuración ‘/etc/nginx’ y cree un nuevo archivo de host virtual llamado ‘kibana’.
cd /etc/nginx/ vim sites-available/kibana
Pegue la configuración del host virtual de Nginx a continuación.
server { listen 80; server_name elastic-stack.io; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.kibana-user; location / { proxy_pass http://localhost: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; } }
Guardar y Salir.
A continuación, crearemos un nuevo servidor web de autenticación básica para acceder al panel de control de Kibana. Crearemos la autenticación básica usando el comando htpasswd como se muestra a continuación.
sudo htpasswd -c /etc/nginx/.kibana-user elastic Type the elastic user password
Active el host virtual de kibana y pruebe toda la configuración de nginx.
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/ nginx -t
Asegúrese de que no haya ningún error, ahora inicie el servicio Nginx y habilítelo para que se inicie cada vez que se inicie el sistema.
systemctl enable nginx systemctl restart nginx
Se completó la instalación y configuración de Nginx como un proxy inverso para el tablero de Kibana.
Instalar y configurar Logstash
El último componente del Elastic Stack para esta guía es el ‘Logstash’. Instalaremos y configuraremos Logsatash para centralizar los registros del servidor de las fuentes del cliente con filebeat, luego filtraremos y transformaremos todos los datos (Syslog) y los transportaremos al alijo (Elasticsearch).
Antes de instalar logstash, asegúrese de comprobar la versión OpenSSL de su servidor.
openssl version -a
Para esta guía, utilizaremos OpenSSL ‘1.0.2o’. Si todavía está utilizando la versión 1.1.2 de OpenSSL, recibirá un error en la conexión SSL logstash y filebeat.
Instale logstash usando el comando apt a continuación.
sudo apt install logstash -y
Una vez completada la instalación, generaremos la clave del certificado SSL para proteger la transferencia de datos de registro desde el filebeat del cliente al servidor logstash.
Edite el archivo ‘/etc/hosts’ usando vim.
vim /etc/hosts
Agregue la configuración a continuación.
10.0.15.10 elk-master elk-master
Guardar y Salir.
Ahora cree un nuevo directorio SSL en el directorio de configuración de logstash ‘/etc/logstash’ y vaya a ese directorio.
mkdir -p /etc/logstash/ssl cd /etc/logstash/
Genere el certificado SSL para Logstash usando el comando openssl como se muestra a continuación.
openssl req -subj '/CN=elk-master/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
Los archivos de certificado SSL para Logstash se crearon en el directorio ‘/etc/logstash/ssl’.
A continuación, crearemos nuevos archivos de configuración para logstash. Crearemos un archivo de configuración ‘filebeat-input.conf’ como archivo de entrada de filebeat, ‘syslog-filter.conf’ para el procesamiento de syslog y luego un archivo ‘output-elasticsearch.conf’ para definir la salida de Elasticsearch.
Vaya al directorio de configuración de logstash y cree los nuevos archivos de configuración ‘filebeat-input.conf’ en el directorio ‘conf.d’.
cd /etc/logstash/ vim conf.d/filebeat-input.conf
Pegue la siguiente configuración allí.
input { beats { port => 5443 type => syslog ssl => true ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt" ssl_key => "/etc/logstash/ssl/logstash-forwarder.key" } }
Guardar y Salir.
Para los datos de registro de procesamiento de syslog, estamos utilizando el complemento de filtro llamado ‘grok’ para analizar los archivos de syslog.
Cree una nueva configuración ‘syslog-filter.conf’.
vim conf.d/syslog-filter.conf
Pegue la siguiente configuración allí.
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" ] } } }
Guardar y Salir.
Y para la salida de elasticsearch, crearemos el archivo de configuración llamado ‘output-elasticsearch.conf’.
vim conf.d/output-elasticsearch.conf
Pegue la siguiente configuración allí.
output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
Guardar y Salir.
Cuando haya terminado, inicie el servicio logstash y habilítelo para que se inicie cada vez que se inicie el sistema.
sudo systemctl enable logstash sudo systemctl start logstash
Verifique el servicio logstash usando los comandos netstat y systemctl a continuación.
netstat -plntu systemctl status logstash
Y el servicio logstash ahora está en funcionamiento. Ejecutándose en la dirección IP pública con el puerto ‘5443’.
La instalación de Elastic Stack se ha completado.
Paso 2: instale y configure Filebeat en Ubuntu 18.04
En este paso, configuraremos el cliente de Ubuntu 18.04 ‘elk-client01’ mediante la instalación de los cargadores de datos de Elastic Beats ‘Filebeat’ en él.
Antes de instalar Filebeat en el sistema, debemos editar ‘/etc/hosts’ y descargar el archivo de certificado logstash ‘logstash-forwarder.crt’ al servidor ‘elk-client01’.
Edite el archivo ‘/etc/hosts’ usando el editor vim.
vim /etc/hosts
Pegue la siguiente configuración allí.
10.0.15.10 elk-master elk-master
Guardar y Salir.
Copie el archivo de certificado logstash ‘logstash-forwarder.crt’ usando el comando scp.
scp [email protected]:/etc/logstash/ssl/logstash-forwarder.crt .
A continuación, instale el ‘Filebeat’ de Elastic Beats agregando la clave elástica y agregue el repositorio elástico.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Actualice el repositorio e instale el paquete ‘filebeat’ usando el comando apt a continuación.
sudo apt update sudo apt install filebeat -y
Una vez completada la instalación, vaya al directorio ‘/etc/filebeat’ y edite el archivo de configuración ‘filebeat.yml’.
cd /etc/filebeat/ vim filebeat.yml
Ahora habilite los prospectores de filebeat cambiando el valor de línea ‘habilitado’ a ‘verdadero’.
enabled: true
Defina los archivos de registro del sistema que se enviarán al servidor logstash. Para esta guía, agregaremos el archivo de registro ssh ‘auth.log’ y el archivo syslog.
paths: - /var/log/auth.log - /var/log/syslog
Configure la salida en logstash comentando la salida predeterminada de ‘elasticsearch’ y elimine el comentario de la línea de salida de logstash como se muestra a continuación.
output.logstash: # The Logstash hosts hosts: ["elk-master:5443"] ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]
Guardar y Salir.
A continuación, debemos editar el archivo ‘filebeat.reference.yml’ para habilitar los módulos de filebeat y habilitaremos el módulo ‘syslog’.
vim filebeat.reference.yml
Habilite el módulo del sistema syslog para filebeat como se muestra a continuación.
- module: system # Syslog syslog: enabled: true
Guardar y Salir.
Copie el archivo de certificado de logstash ‘logstash-forwarder.crt’ en el directorio ‘/etc/filebeat’.
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
La instalación y configuración de Filebeat se han completado. Ahora inicie el servicio Filebeat y permita que se inicie cada vez que se inicie el sistema.
systemctl start filebeat systemctl enable filebeat
Verifique el servicio filebeat usando los comandos a continuación.
systemctl status filebeat tail -f /var/log/filebeat/filebeat
Los cargadores de filebeat están funcionando bajo el servidor Ubuntu 18.04.
Paso 3: instale y configure Filebeat en CentOS 7.5
En este paso, configuraremos el cliente de CentOS 7.5 ‘elk-client02’ mediante la instalación de los cargadores de datos de Elastic Beats ‘Filebeat’ en él.
Antes de instalar Filebeat en el sistema, debemos editar ‘/etc/hosts’ y descargar el archivo de certificado logstash ‘logstash-forwarder.crt’ al servidor ‘elk-client02’.
Edite el archivo ‘/etc/hosts’ usando vim.
vim /etc/hosts
Pegue la configuración a continuación.
10.0.15.10 elk-master elk-master
Guardar y Salir.
Copie el archivo de certificado logstash ‘logstash-forwarder.crt’ usando el comando scp.
scp [email protected]:/etc/logstash/ssl/logstash-forwarder.crt .
A continuación, instale el ‘Filebeat’ de Elastic Beats agregando la clave elástica y agregue el repositorio elástico.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat <<EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
Instale filebeat usando el comando yum a continuación.
yum install filebeat -y
Una vez completada la instalación, vaya al directorio ‘/etc/filebeat’ y edite el archivo de configuración ‘filebeat.yml’.
cd /etc/filebeat/ vim filebeat.yml
Ahora habilite los prospectores de Filebeat cambiando el valor de línea ‘habilitado’ a ‘verdadero’.
enabled: true
Defina los archivos de registro del sistema que se enviarán al servidor logstash. Para esta guía, agregaremos el archivo de registro ssh ‘auth.log’ y el archivo syslog.
paths: - /var/log/secure - /var/log/messages
Configure la salida en logstash comentando la salida predeterminada de ‘elasticsearch’ y elimine el comentario de la línea de salida de logstash como se muestra a continuación.
output.logstash: # The Logstash hosts hosts: ["elk-master:5443"] ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]
Guardar y Salir.
A continuación, debemos editar el archivo ‘filebeat.reference.yml’ para habilitar los módulos de filebeat y habilitaremos el módulo ‘syslog’.
vim filebeat.reference.yml
Habilite el módulo del sistema syslog para filebeat como se muestra a continuación.
- module: system # Syslog syslog: enabled: true
Guardar y Salir.
Copie el archivo de certificado de logstash ‘logstash-forwarder.crt’ en el directorio ‘/etc/filebeat’.
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
La instalación y configuración de Filebeat se han completado. Ahora inicie el servicio filebeat y agréguelo al tiempo de arranque.
systemctl start filebeat systemctl enable filebeat
Verifique el servicio filebeat usando los comandos a continuación.
systemctl status filebeat tail -f /var/log/filebeat/filebeat
Los cargadores de filebeat están funcionando bajo el servidor CentOS 7.5.
Paso 4 – Prueba
Abra su navegador web y escriba el nombre de dominio de la pila elástica, el mío es: ‘elastic-stack.io’.
Se le solicitará el nombre de usuario y la contraseña de la autenticación básica en el Panel de control de Kibana.
Escriba el nombre de usuario ‘elástico’ con su contraseña.
Ahora obtendrá el hermoso panel de kibana, haga clic en el botón ‘Configurar patrones de índice’ a la derecha.
Defina el patrón de índice ‘filebeat-*’ y haga clic en el botón ‘Siguiente paso’.
Para el ‘nombre del campo de filtro de tiempo’, elija ‘@timestamp’ y haga clic en ‘Crear patrón de índice’.
Y se ha creado el patrón de índice de filebeat.
A continuación, intentaremos obtener la información de registro para el inicio de sesión SSH fallido en cada servidor cliente ‘elk-client01’ sistema Ubuntu y ‘elk-client02’ sistema CentOS.
Dentro del Panel de control de Kibana, haga clic en el menú ‘Descubrir’ para obtener todos los registros del servidor.
Establezca ‘beat.hostname’ en el servidor ‘elk-client01’, la ‘fuente’ es el archivo ‘/var/log/auth.log’ y obtendrá el resultado como se muestra a continuación.
Y a continuación se muestran los detalles del registro de muestra para la contraseña fallida de SSH del archivo ‘auth.log’.
Para el servidor CentOS ‘elk-client02’, establezca ‘beat.hostname’ en el servidor ‘elk-client02’, la ‘fuente’ es el archivo ‘/var/log/secure’ y obtendrá el resultado como se muestra abajo.
Y a continuación se muestran los detalles del registro de muestra para la contraseña fallida de SSH del archivo ‘seguro’.
La instalación y configuración de Elastic Stack y Elastic Beat ‘Filebeat’ se completó con éxito.