En esta guía, aprenderá a instalar Elastic Stack en Ubuntu 18.04. Pila elástica , anteriormente conocido como pila ELK es una colección o pila de software gratuito y de código abierto de Elastic Company diseñado para el registro centralizado.
Permite la búsqueda, el análisis y la visualización de registros de diferentes fuentes en una gran variedad de formatos. El registro centralizado ayuda a identificar los problemas del servidor o de la aplicación desde un punto común.
Componentes de pila elástica
Elastic Stack se compone de 4 componentes principales.
- Búsqueda elástica :Este es un motor de búsqueda RESTful que almacena o retiene todos los datos recopilados
- Logstash :este es el componente que procesa los datos y los analiza para la búsqueda elástica
- Kibana :Esta es una interfaz web que visualiza registros
- Latidos :Estos son cargadores de datos ligeros que envían registros de cientos/miles de servidores al servidor central en el que está configurado ELK.
Veamos ahora cómo puede instalar Elastic Stack en Ubuntu 18.04.
Requisitos
Antes de comenzar la instalación, asegúrese de tener la siguiente infraestructura.
- Servidor Ubuntu 18.04 LTS con acceso raíz y un usuario no raíz más firewall ufw. Los siguientes deben ser los requisitos mínimos del servidor.
- Ubuntu 18.04 LTS
- 4 GB de RAM
- 2 CPU
- Java 8 instalado en su sistema que será requerido por Elasticsearch y Logstash.
- NGINX instalado en su servidor que luego se configurará para manejar Kibana. Lectura recomendada:Instalar Nginx en Ubuntu 18.04
Dicho esto, profundicemos y comencemos la instalación de Elastic Stack en Ubuntu.
1. Instalar Elasticsearch en Ubuntu
En primer lugar, vamos a importar la clave GPG pública de Elasticsearch a APT. Los paquetes de pila elástica generalmente se firman con la clave de firma de Elasticsearch para proteger su sistema contra la suplantación de identidad de paquetes. Además, el administrador de paquetes considera que los paquetes autenticados son de confianza.
Para importar la llave GPG ejecute:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
A continuación, agregue el repositorio de Elastic a sources.list.d
directorio usando el siguiente comando.
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
La salida de los dos comandos es como se muestra:
Salida
Ahora actualice el repositorio del sistema usando el siguiente comando.
sudo apt update
Salida de muestra
Ahora, instale Elasticsearch usando el siguiente comando.
sudo apt install elasticsearch
Salida
2. Configurar Elasticsearch en Ubuntu
Elasticsearch escucha en el puerto 9200. Sin embargo, vamos a limitar el acceso externo para que las partes externas no puedan acceder a los datos y cerrar el clúster elástico. Dicho esto, vamos a realizar algunas modificaciones en el archivo de configuración de Elasticsearch como se muestra a continuación
sudo nano /etc/elasticsearch/elasticsearch.yml
Encuentra el network.host
atributo y descomentelo y agregue localhost
como su valor. También descomente el http.port
atributo.
Salida
network.host: localhost
http.port: 9200
A continuación, inicie y habilite el servicio Elasticsearch como se muestra.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Salida
En este punto, Elasticsearch debería estar en funcionamiento. Puede verificar esto ejecutando el siguiente comando.
systemctl status elasticsearch
Salida
También puede usar el netstat
comando como se muestra.
netstat -pnltu
Además, puede ejecutar el curl
comando como se muestra.
curl -X GET "localhost:9200"
Salida
¡Excelente! Hemos finalizado la instalación y configuración de Elasticsearch. A continuación, instalaremos y configuraremos Logstash.
3. Instalación y configuración de Logstash
El segundo componente de la pila elástica que vamos a instalar es Logstash. Logstash será responsable de recopilar y centralizar los registros de varios servidores mediante el envío de datos de Filebeat. Luego filtrará y transmitirá los datos de syslog a Elasticsearch.
Primero, confirmemos que OpenSSL se está ejecutando. Para hacer eso, corre.
openssl version -a
Salida
Para instalar Logstash, ejecute el siguiente comando.
sudo apt install logstash -y
Salida
A continuación, edite el /etc/hosts
archivo y agregue lo siguiente.
18.224.44.11 elk-master
Donde 18.224.44.11 es la dirección IP del servidor masterELk.
Luego vamos a generar la clave del certificado SSL para asegurar la transferencia de datos de registro desde el filebeat del cliente al servidor logstash.
Para hacer esto, primero, cree un nuevo directorio SSL en el directorio de configuración de logstash '/etc/logstash' y navegue hasta ese directorio.
mkdir -p /etc/logstash/ssl
cd /etc/logstash/
Ahora puede generar el certificado SSL 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
A continuación, vamos a crear 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, por último, un archivo 'output-elasticsearch.conf' para definir la salida de Elasticsearch.
Navegue al directorio de Logstash y cree un archivo 'filebeat-input.conf' en el directorio 'conf.d'.
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Pegue la siguiente configuración.
input {
beats {
port => 5443
type => syslog
ssl => true
ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt"
ssl_key => "/etc/logstash/ssl/logstash-forwarder.key"
}
}
Guarde y salga del editor de texto.
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 configuración a continuació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" ]
}
}
}
Guarde y salga del editor de texto.
Finalmente, cree un archivo de configuración llamado 'output-elasticsearch.conf' para la salida de elasticsearch.
vim conf.d/output-elasticsearch.conf
Pegue el siguiente contenido.
output {
elasticsearch { hosts => ["localhost:9200"]
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Guarde y salga del editor de texto.
Cuando haya terminado, habilite e inicie el servicio Logstash.
sudo systemctl enable logstash
sudo systemctl start logstash
Para verificar que Logstash se está ejecutando, ejecute el comando.
sudo systemctl status logstash
Salida de muestra
También puede usar el netstat
comando como se muestra.
netstat -pnltu
4. Instalar y configurar Kibana en Ubuntu
A continuación, vamos a instalar Kibana usando el siguiente comando.
sudo apt install kibana -y
Salida
A continuación, vamos a realizar algunas modificaciones en el archivo de configuración de Kibana.
vim /etc/kibana/kibana.yml
Localice y descomente los siguientes atributos.
server.port: 5601
server.host: "localhost"
elasticsearch.url: "https://localhost:9200"
Guarde y salga del editor de texto.
Luego habilite e inicie el servicio Kibana:
sudo systemctl enable kibana
sudo systemctl start kibana
Salida
Puede confirmar que Kibana se está ejecutando en su puerto predeterminado 5601 usando netstat
comando como se muestra.
netstat -pnltu
Salida
5. Instalación y configuración de NGINX como proxy inverso para Kibana
Estamos usando NGINX como un proxy inverso para los paneles de kibana. Debe instalar Nginx y 'Apache2-utils' como se muestra a continuación.
sudo apt install nginx apache2-utils -y
Salida
A continuación, cree un nuevo archivo de host virtual llamado kibana.
vim /etc/nginx/vim sites-available/kibana
Pegue el siguiente contenido en el archivo de host virtual
server {
listen 80;
server_name localhost;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass https://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;
}
}
Guarde y salga del editor de texto. Lectura recomendada:directiva de ubicación de NGINX.
A continuación, cree una autenticación básica para el panel de kibana usando htpasswd
comando como se muestra.
sudo htpasswd -c /etc/nginx/.kibana-user elastic
Type the elastic user password
Salida
En el ejemplo anterior, el nombre de usuario es elastic y la contraseña será la que usted proporcione.
A continuación, active la configuración del host virtual de Kibana y pruebe la configuración de Nginx.
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t
Salida
Sin errores, habilite y reinicie el servidor Nginx.
systemctl enable nginx
systemctl restart nginx
6. Instalación y configuración de Filebeat
En este paso, vamos a configurar el cargador de datos filebeat en nuestro servidor elk-master. Esto transmitirá todos los mensajes de syslog a logstash que serán procesados y visualizados por kibana.
Para instalar filebeat ejecute:
sudo apt install filebeat
A continuación, abra el archivo de configuración de Filebeat.
sudo vim /etc/filebeat/filebeat.yml
Vamos a utilizar Logstash para realizar un procesamiento adicional de los datos recopilados por Filebeat. Filebeat no será necesario para enviar ningún dato directamente a Elasticsearch. Por lo tanto, ubique y comente la sección de búsqueda elástica como se muestra.
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
A continuación, diríjase a la sección Logstash y elimine los comentarios como se muestra.
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
Habilite los prospectores de Filebeat cambiando el valor de la línea "habilitado" a "verdadero".
enabled: true
Especifique los archivos de registro del sistema que se enviarán al servidor logstash. En este ejemplo, agregaremos el archivo de registro ssh 'auth.log' y el archivo syslog.
paths:
- /var/log/auth.log
- /var/log/syslog
Guardar y Salir.
Finalmente, copie el archivo de certificado de logstash, logstash-forwarder.crt, en /etc/filebeat
directorio.
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
Ahora inicie y habilite filebeat.
systemctl start filebeat
systemctl enable filebeat
Para verificar el estado de ejecución de filebeat:
systemctl status filebeat
Salida
7. Probando la pila de Elasticsearch
Para probar nuestra pila elástica, abra su navegador y busque la IP de su servidor seguido del puerto 5601, que es el puerto que escucha Kibana.
ip-address:5601
Ingrese el nombre de usuario y la contraseña y posteriormente, se desplegará la siguiente pantalla.
Haga clic en la pestaña 'descubrir' y haga clic en 'Filebeat'. Aparecerá la siguiente interfaz que le ofrece transmisión en vivo de los datos visualizados.
¡Felicidades! Ha instalado y configurado con éxito The Elastic Stack y Elastic Beat 'Filebeat' en su sistema Ubuntu 18.04.