GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Elastic Stack en Ubuntu 16.04

Búsqueda elástica es un buscador de código abierto basado en Lucene, desarrollado en java. Proporciona un motor de búsqueda de texto completo distribuido y multiusuario con una interfaz web HTTP Dashboard (Kibana) y un esquema de documentos JSON. Elasticsearch es un motor de búsqueda escalable que se puede utilizar para buscar todo tipo de documentos, incluido el archivo de registro. Elasticsearch es el corazón del 'Elastic Stack' o ELK Stack.

Almacenamiento de registros es una herramienta de código abierto para administrar eventos y registros del sistema. Proporciona canalización en tiempo real para recopilar datos. Logstash recopilará el registro o los datos, convertirá todos los datos en documentos JSON y los almacenará en Elasticsearch.

Kibana es una interfaz de visualización de datos para Elasticsearch. Kibana proporciona un panel bonito (interfaces web), que le permite administrar y visualizar todos los datos de Elasticsearch por su cuenta. No solo es hermoso, sino también poderoso.

En este tutorial, le mostraré cómo instalar y configurar Elastic Stack en un solo servidor Ubuntu 16.04 para monitorear los registros del servidor y cómo instalar 'Elastic beats' en las PC cliente con Ubuntu 16.04 y el sistema operativo CentOS 7.

Requisito previo

  • Servidor Ubuntu 16.04 de 64 bits con 4 GB de RAM, nombre de host:elk-master
  • Cliente Ubuntu 16.04 de 64 bits con 1 GB de RAM, nombre de host:elk-client1
  • Cliente CentOS 7 de 64 bits con 1 GB de RAM, nombre de host:elk-client2

Paso 1 - Instalar Java

Se requiere Java para la implementación de la pila elástica. Elasticsearch requiere Java 8. Se recomienda utilizar Oracle JDK 1.8. Instalaremos Java 8 desde un repositorio PPA.

Instale el nuevo paquete 'python-software-properties' para que podamos agregar un nuevo repositorio fácilmente con un comando apt.

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https

Agregue el nuevo repositorio PPA de Java 8 con el comando 'add-apt-repository' y luego actualice el repositorio.

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update

Instale Java 8 desde el repositorio PPA webpub8.

sudo apt-get install -y oracle-java8-installer

Cuando finalice la instalación, asegúrese de que Java esté instalado correctamente en el sistema comprobando la versión de Java.

java -version

Paso 2:instalar y configurar Elasticsearch

En este paso, instalaremos y configuraremos Elasticsearch. Instale Elasticsearch desde el repositorio de Elastic y configúrelo para que se ejecute en la IP del host local.

Antes de instalar Elasticsearch, agregue la clave del repositorio elástico al servidor.

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

Agregue el repositorio elástico 5.x al directorio 'sources.list.d'.

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

Actualice el repositorio e instale Elasticsearch 5.1 con el siguiente comando apt.

sudo apt-get update
sudo apt-get install -y elasticsearch

Elasticsearch está instalado. Ahora ve al directorio de configuración y edita el archivo de configuración elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Habilite el bloqueo de memoria para Elasticsearch eliminando el comentario en la línea 43. Hacemos esto para deshabilitar el intercambio de memoria para Elasticsearch para evitar sobrecargar el servidor.

bootstrap.memory_lock: true

En el bloque 'Red', descomente las líneas network.host y http.port.

network.host: localhost
http.port: 9200

Guarde el archivo y salga de vim.

Ahora edite el archivo del servicio de búsqueda elástica para la configuración de bloqueo de memoria mlockall.

vim /usr/lib/systemd/system/elasticsearch.service

Descomente la línea LimitMEMLOCK.

LimitMEMLOCK=infinity

Guarde el archivo y salga.

Edite la configuración predeterminada de Elasticsearch en el directorio /etc/default.

vim /etc/default/elasticsearch

Descomente la línea 60 y asegúrese de que el valor sea 'ilimitado'.

MAX_LOCKED_MEMORY=unlimited

Guardar y salir.

La configuración de Elasticsearch ha finalizado. Elasticsearch se ejecutará bajo la dirección IP del host local con el puerto 9200 y deshabilitamos la memoria de intercambio al habilitar mlockall en el servidor de Ubuntu.

Vuelva a cargar el archivo del servicio Elasticsearch y permita que se ejecute en el momento del arranque, luego inicie el servicio.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Espere un segundo para que se ejecute Elasticsearch, luego verifique el puerto abierto en el servidor, asegúrese de que el 'estado' para el puerto 9200 sea 'ESCUCHAR'.

netstat -plntu

Luego verifique el bloqueo de memoria para asegurarse de que mlockall esté habilitado. También verifique que Elasticsearch se esté ejecutando con los siguientes comandos.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Verá los resultados a continuación.

Paso 3:instalar y configurar Kibana con Nginx

En este paso, instalaremos y configuraremos Kibana detrás de un servidor web Nginx. Kibana escuchará solo en la dirección IP del host local y Nginx actuará como proxy inverso para la aplicación Kibana.

Instale Kibana con este comando apt:

sudo apt-get install -y kibana

Ahora edite el archivo de configuración kibana.yml.

vim /etc/kibana/kibana.yml

Descomente las líneas server.port, server.hos y elasticsearch.url.

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

Guarde el archivo y salga de vim.

Agregue Kibana para que se ejecute en el arranque e inícielo.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana se ejecutará en el puerto 5601 como aplicación de nodo.

netstat -plntu

La instalación de Kibana está lista, ahora necesitamos instalar Nginx y configurarlo como un proxy inverso para poder acceder a Kibana desde la dirección IP pública.

A continuación, instale los paquetes Nginx y apache2-utils.

sudo apt-get install -y nginx apache2-utils

Apache2-utils es un paquete que contiene herramientas para el servidor web que también funcionan con Nginx, usaremos la autenticación básica htpasswd para Kibana.

Se ha instalado Nginx. Ahora necesitamos crear un nuevo archivo de configuración de host virtual en el directorio de sitios disponibles de Nginx. Crea un nuevo archivo 'kibana' con vim.

cd /etc/nginx/
vim sites-available/kibana

Pegue la configuración a continuación.

server {
    listen 80;

    server_name elk-stack.co;

    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;
    }
}

Guarde el archivo y salga de vim

Cree un nuevo archivo de autenticación básica con el comando htpasswd.

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

Active el host virtual de kibana creando un enlace simbólico desde el archivo de kibana en 'sitios disponibles' al directorio 'sitios habilitados'.

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/

Pruebe la configuración de nginx y asegúrese de que no haya ningún error, luego agregue nginx para que se ejecute en el momento del arranque y reinicie nginx.

nginx -t
systemctl enable nginx
systemctl restart nginx

Paso 4:instalar y configurar Logstash

En este paso, instalaremos y configuraremos Logsatash para centralizar los registros del servidor desde las fuentes del cliente con filebeat, luego filtraremos y transformaremos todos los datos (Syslog) y los transportaremos al almacenamiento (Elasticsearch).

Instale Logstash 5 con el siguiente comando apt.

sudo apt-get install -y logstash

Edite el archivo de hosts con vim.

vim /etc/hosts

Agregue la dirección IP y el nombre de host del servidor.

10.0.15.10    elk-master

Guarde el archivo de hosts y salga del editor.

Ahora genere un nuevo archivo de certificado SSL con OpenSSL para que las fuentes del cliente puedan identificar el servidor elástico.

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

Cambie el '/CN ' valor al nombre de host del servidor elástico.

Los archivos de certificado se crearán en el directorio '/etc/logstash/'.

A continuación, crearemos los 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 en el directorio 'conf.d'.

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

Ingrese la configuración, pegue la configuración a continuación.

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

Guardar y salir.

Cree el archivo 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" ]
    }
  }
}

Usamos un complemento de filtro llamado 'grok ' para analizar los archivos syslog.

Guardar y salir.

Cree el archivo de configuración de salida 'output-elasticsearch.conf'.

vim conf.d/output-elasticsearch.conf

Pegue la configuración a continuación.

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, agregue logstash para iniciar en el momento del arranque e inicie el servicio.

sudo systemctl enable logstash
sudo systemctl start logstash

Paso 5:instalar y configurar Filebeat en un cliente Ubuntu

Conéctese al servidor como root con una cuenta ssh.

ssh [email protected]

Copie el archivo del certificado al cliente con el comando scp.

scp [email protected]:/etc/logstash/logstash.crt .

Edite el archivo de hosts y agregue la dirección IP de elk-master.

vim /etc/hosts

Agregue la siguiente configuración al final del archivo.

10.0.15.10    elk-master

Guardar y salir.

Ahora necesitamos agregar la clave elástica al servidor elk-client1.

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

Usaremos el repositorio elástico con transporte de descarga https, por lo que debemos instalar el paquete 'apt-transport-https' en el servidor.

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

Agregue el repositorio elástico y actualice todos los repositorios de Ubuntu.

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

Ahora instala 'filebeat' con el comando apt.

sudo apt-get install -y filebeat

A continuación, vaya al directorio de configuración de filebeat y edite el archivo 'filebeat.yml' con vim.

cd /etc/filebeat/
vim filebeat.yml

Agregue nuevos archivos de registro en la configuración de rutas.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Establezca el tipo de documento en 'syslog'.

  document-type: syslog

Deshabilite la salida de búsqueda elástica agregando comentarios a las líneas.

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

Habilite la salida de logstash, descomente la configuración y cambie el valor como se muestra a continuación.

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

Guardar y salir.

Mueva el archivo de certificado al directorio de filebeat.

mv ~/logstash.crt /etc/filebeat/

Inicie filebeat y agréguelo para que se ejecute en el momento del arranque.

sudo systemctl start filebeat
sudo systemctl enable filebeat

Consulta el estado del servicio.

sudo systemctl status filebeat

Paso 6:instalar y configurar Filebeat en un cliente CentOS

Los Beats son transportadores de datos, agentes livianos que se pueden instalar en los nodos del cliente para enviar grandes cantidades de datos desde la máquina del cliente al servidor de Logstash o Elasticsearch. Hay 4 beats disponibles, 'Filebeat' para 'Archivos de registro', 'Metricbeat' para 'Métricas', 'Packetbeat' para 'Datos de red' y 'Winlogbeat' para el 'Registro de eventos' del cliente de Windows.

En este tutorial, le mostraré cómo instalar y configurar 'Filebeat' para enviar datos de registro al servidor logstash a través de una conexión SSL segura.

Copie el archivo de certificado del servidor elástico al servidor cliente1. Inicie sesión en el servidor cliente1.

ssh [email protected]

Copie el archivo del certificado con el comando scp.

scp [email protected]:/etc/logstash/logstash.crt .
TYPE elk-server password

Edite el archivo de hosts y agregue la dirección del servidor elk-master.

vim /etc/hosts

Agregue la dirección del servidor elk-master.

10.0.15.10    elk-master

Guardar y salir.

A continuación, importe la clave elástica al servidor elk-client2.

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

Agregar repositorio elástico al servidor.

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

Pegue la configuración a continuación.

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

Guardar y salir.

Instale filebeat con este comando yum.

sudo yum -y install filebeat

Se ha instalado Filebeat, ahora ve al directorio de configuración y edita el archivo 'filebeat.yml'.

cd /etc/filebeat/
vim filebeat.yml

En la línea 21 de la sección de rutas, agregue algunos archivos de registro nuevos, agregaremos dos archivos aquí:'/var/log/secure' para la actividad ssh y '/var/log/messages' para el registro del servidor.

  paths:
    - /var/log/secure
    - /var/log/messages

Agregue una nueva configuración en la línea 26 para definir el tipo de archivo en 'syslog'.

  document-type: syslog

Por defecto, filebeat usa elasticsearch como salida. En este tutorial, lo cambiaremos a logshtash. Deshabilite la salida de búsqueda elástica agregando comentarios a las líneas 83 y 85.

Deshabilite la salida de búsqueda elástica.

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

Ahora agregue la nueva configuración de salida de logstash, descomente la configuración de salida de logstash y cambie todos los valores a los que se muestran en la configuración a continuación.

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

Guardar y salir.

Agregue filebeat para comenzar en el momento del arranque e inícielo.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Ahora puede comprobar y ver el archivo de registro de Filebeat para asegurarse de que se está ejecutando correctamente.

tail -f /var/log/filebeat/filebeat

Paso 8 - Prueba

Abra su navegador web y visite el dominio de pila elástica que configuró en la configuración de nginx, el mío es 'elk-stack.co', escriba el nombre de usuario administrador con su contraseña y presione Entrar para iniciar sesión en el panel de control de Kibana.

Cree un nuevo índice predeterminado 'filebeat-* ' y haga clic en 'Crear '.

Se ha creado el índice predeterminado. Si tiene varios latidos en la pila elástica, puede configurar un latido predeterminado con solo hacer clic en la 'estrella botón '.

Ir a 'Descubrir ' y verá todos los archivos de registro de los servidores elk-client1 y elk-client2.

Un ejemplo de salida JSON del registro del servidor elk-client1 para un inicio de sesión ssh no válido.

Y hay mucho más que puede hacer con el panel de control de Kibana, ¡pruébelo!

Elastic Stack se instaló en un servidor Ubuntu 16.04, filebeat se instaló en servidores de cliente Ubuntu y CentOS.


Ubuntu
  1. Cómo instalar Elasticsearch en Ubuntu 18.04

  2. Cómo instalar Graylog2 en Ubuntu 14.04

  3. Cómo instalar Graylog2 en Ubuntu 15.04 / 14.10

  4. Cómo instalar Elasticsearch en Ubuntu 20.04

  5. Cómo instalar y configurar Elasticsearch en Ubuntu 20.04

Cómo instalar Graylog 3.0 en Ubuntu 18.04 / Ubuntu 16.04

Cómo instalar Elasticsearch, Logstash y Kibana (ELK Stack) en Ubuntu 18.04/Ubuntu 16.04

Cómo instalar ELK Stack en Ubuntu 18.04

Cómo instalar qt en Ubuntu 20.04

Cómo instalar el servidor Graylog en Ubuntu 21

Cómo instalar Elasticsearch Logstash Kibana (Elastic Stack) en Ubuntu 18.04