GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Elastic Stack en CentOS 7

Búsqueda elástica 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 con un esquema de documento 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.

Almacenamiento de registros 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 CentOS 7 para monitorear los registros del servidor. Luego, le mostraré cómo instalar 'Elastic beats' en un sistema operativo cliente CentOS 7 y Ubuntu 16.04.

Requisitos previos

  • CentOS 7 de 64 bits con 4 GB de RAM - elk-master
  • CentOS 7 de 64 bits con 1 GB de RAM - cliente1
  • Ubuntu 16.04 de 64 bits con 1 GB de RAM - cliente2

Paso 1:preparar el sistema operativo

En este tutorial, deshabilitaremos SELinux en el servidor CentOS 7. Edite el archivo de configuración de SELinux.

vim /etc/sysconfig/selinux

Cambie el valor de SELinux de aplicar a deshabilitado.

SELINUX=disabled

Luego reinicie el servidor.

reboot

Vuelva a iniciar sesión en el servidor y compruebe el estado de SELinux.

getenforce

Asegúrate de que el resultado esté deshabilitado.

Paso 2: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. Instalaré Java 8 desde el paquete rpm oficial de Oracle.

Descargue Java 8 JDK con el comando wget.

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

Luego instálelo con este comando rpm;

rpm -ivh jdk-8u77-linux-x64.rpm

Por último, compruebe la versión de Java JDK para asegurarse de que funciona correctamente.

java -version

Verá la versión Java del servidor.

Paso 3:instalar y configurar Elasticsearch

En este paso, instalaremos y configuraremos Elasticsearch. Instalaré Elasticsearch desde un paquete rpm proporcionado por elastic.co y lo configuraré para que se ejecute en localhost (para que la configuración sea segura y garantizar que no se pueda acceder desde el exterior).

Antes de instalar Elasticsearch, agregue la clave elastic.co al servidor.

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

A continuación, descargue Elasticsearch 5.1 con wget y luego instálelo.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

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 un comentario en la línea 40. Esto deshabilita el intercambio de memoria para Elasticsearch.

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 del editor.

Ahora edite el archivo elasticsearch.service para la configuración de bloqueo de memoria.

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

Descomente la línea LimitMEMLOCK.

LimitMEMLOCK=infinity

Guardar y salir.

Edite el archivo de configuración sysconfig para Elasticsearch.

vim /etc/sysconfig/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á en la dirección IP del host local en el puerto 9200, deshabilitamos el intercambio de memoria al habilitar mlockall en el servidor CentOS.

Vuelva a cargar systemd, habilite Elasticsearch para que se inicie en el momento del arranque y, a continuación, inicie el servicio.

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

Espere un segundo para que se inicie Eelasticsearch, luego verifique los puertos abiertos en el servidor, asegúrese de que el 'estado' del puerto 9200 sea 'ESCUCHAR'.

netstat -plntu

Luego verifique el bloqueo de memoria para asegurarse de que mlockall esté habilitado y verifique que Elasticsearch se esté ejecutando con los comandos a continuación.

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

Verá los resultados a continuación.

Paso 4:instalar y configurar Kibana con Nginx

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

Descarga Kibana 5.1 con wget, luego instálalo con el comando rpm:

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

Ahora edite el archivo de configuración de Kibana.

vim /etc/kibana/kibana.yml

Quite el comentario de las líneas de configuración para server.port, server.host y elasticsearch.url.

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

Guardar y salir.

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á terminada. Ahora necesitamos instalar Nginx y configurarlo como proxy inverso para poder acceder a Kibana desde la dirección IP pública.

Nginx está disponible en el repositorio de Epel, instale epel-release con yum.

yum -y install epel-release

A continuación, instale el paquete Nginx y httpd-tools.

yum -y install nginx httpd-tools

El paquete httpd-tools contiene herramientas para el servidor web, usaremos la autenticación básica htpasswd para Kibana.

Edite el archivo de configuración de Nginx y elimine el 'servidor { } ' para que podamos agregar una nueva configuración de host virtual.

cd /etc/nginx/
vim nginx.conf

Elimina el bloqueo del servidor { }.

Guarde el archivo y salga de vim.

Ahora necesitamos crear un nuevo archivo de configuración de host virtual en el directorio conf.d. Cree el nuevo archivo 'kibana.conf' con vim.

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

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

Guardar y salir.

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

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

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 e inicie Nginx.

nginx -t
systemctl enable nginx
systemctl start nginx

Paso 5:instalar y configurar Logstash

En este paso, instalaremos Logsatash y lo configuraremos para centralizar los registros del servidor de los clientes con filebeat, luego filtraremos y transformaremos los datos de Syslog y los moveremos al alijo (Elasticsearch).

Descarga Logstash e instálalo con rpm.

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

Genere un nuevo archivo de certificado SSL para que el cliente pueda identificar el servidor elástico.

Vaya al directorio tls y edite el archivo openssl.cnf.

cd /etc/pki/tls
vim openssl.cnf

Agregue una nueva línea en la sección '[ v3_ca ]' para la identificación del servidor.

[ v3_ca ]

# Server IP Address
subjectAltName = IP: 10.0.15.10

Guardar y salir.

Genere el archivo de certificado con el comando openssl.

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

Los archivos de certificado se pueden encontrar en los directorios '/etc/pki/tls/certs/' y '/etc/pki/tls/private/'.

A continuación, crearemos nuevos archivos de configuración para Logstash. Crearemos un nuevo archivo 'filebeat-input.conf' para configurar las fuentes de registro para filebeat, luego un archivo 'syslog-filter.conf' para el procesamiento de syslog y el 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 subdirectorio 'conf.d'.

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

Configuración de entrada:pegue la configuración a continuación.

input {
  beats {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.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.

Finalmente, agregue logstash para comenzar en el momento del arranque e inicie el servicio.

sudo systemctl enable logstash
sudo systemctl start logstash

Paso 6:instalar y configurar Filebeat en el 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 transferir archivos de registro de datos al servidor Logstash a través de una conexión SSL.

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

ssh [email protected]

Copie el archivo del certificado con el comando scp.

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

Cree un nuevo directorio y mueva el archivo de certificado a ese directorio.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

A continuación, importe la clave elástica en el servidor cliente1.

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

Descarga Filebeat e instálalo con rpm.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat se ha instalado, vaya al directorio de configuración y edite el archivo 'filebeat.yml'.

cd /etc/filebeat/
vim filebeat.yml

En la sección de rutas en la línea 21, agregue los nuevos archivos de registro. Agregaremos dos archivos '/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 los archivos de tipo syslog.

  document-type: syslog

Filebeat utiliza Elasticsearch como destino de salida de forma predeterminada. En este tutorial, lo cambiaremos a Logshtash. Deshabilite la salida de Elasticsearch agregando comentarios en 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 la configuración que se muestra a continuación.

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Guarde el archivo y salga de vim.

Agregue Filebeat para iniciar en el momento del arranque e inícielo.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Paso 7:instalar y configurar Filebeat en el cliente de Ubuntu

Conéctate al servidor por ssh.

ssh [email protected]

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

scp [email protected]:~/logstash-forwarder.crt .

Cree un nuevo directorio para el archivo de certificado y mueva el archivo a ese directorio.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Agregue la clave elástica al servidor.

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

Descargue el paquete .deb de Filebeat e instálelo con el comando dpkg.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

Vaya al directorio de configuración de filebeat y edite el archivo 'filebeat.yml' con vim.

cd /etc/filebeat/
vim filebeat.yml

Agregue las nuevas rutas del archivo de registro en la sección de 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 que se muestran a continuación.

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

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

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Guarde el archivo y salga de vim.

Agregue Filebeat para iniciar en el momento del arranque e inícielo.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Consulta el estado del servicio.

systemctl status filebeat

Paso 8:prueba de Elastic Stack

Abra su navegador web y visite el dominio de pila elástica que utilizó en la configuración de Nginx, el mío es 'elk-stack.co'. Inicie sesión como 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 el botón 'Crear'.

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

Vaya a 'Descubrir ' y verá todo el archivo 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 de lo que puede hacer con el panel de control de Kibana, simplemente juegue con las opciones disponibles.

El Elastic Stack se ha instalado en un servidor CentOS 7. Filebeat se ha instalado en un CentOS 7 y un cliente de Ubuntu.


Cent OS
  1. Cómo instalar paquetes RPM en CentOS

  2. Cómo instalar Elasticsearch en CentOS 7

  3. Cómo instalar Graylog2 en CentOS 7 / RHEL 7

  4. Cómo instalar Ntopng en CentOS 6

  5. Cómo instalar la pila ELK en CentOS 7

Cómo instalar Graylog 3.0 en CentOS 7 / RHEL 7

Cómo instalar la pila ELK en RHEL 8

Cómo instalar HHVM en CentOS 6

Cómo instalar Deluge en CentOS 7

Cómo instalar ELK Stack en CentOS 7

Cómo instalar ELK Stack en CentOS 8