¿Qué es la pila ELK?
ELK es un acrónimo que significa Elasticsearch Logstash Kibana. Cada término de la abreviatura ELK representa un software de código abierto individual y todos estos softwares se utilizan colectivamente para el análisis de registros. El análisis de registros es la ciencia de dar sentido a los registros generados por computadora. Los registros son emitidos por dispositivos de red, sistemas operativos, aplicaciones y todo tipo de dispositivo inteligente o programable. Un flujo de mensajes en secuencia de tiempo a menudo comprende un registro. Los registros se pueden dirigir a archivos y almacenar en disco, o se pueden dirigir como un flujo de red a un recopilador de registros.
Conozcamos brevemente las tareas que realiza cada uno de los softwares en la pila ELK.
Búsqueda elástica: Almacena registros y también actúa como motor de búsqueda.
Archivo de registro: Identifica los registros en la red y los envía a la búsqueda elástica.
Kibana: Es un software de visualización de datos que muestra datos de la base de datos de elasticsearch de forma interactiva.
Procedimiento de instalación
Ahora que tiene una idea básica sobre la pila ELK, instalemos cada módulo o software en sucesión. Pero antes de eso necesitamos instalar JAVA en el servidor.
instalación de JAVA
Descargue el paquete JAVA más reciente o use el siguiente comando para agregar el paquete JAVA 8 al repositorio
sudo add-apt-repository -y ppa:webupd8team/java
Luego actualice el repositorio usando el comando
sudo apt-get update
Use los siguientes comandos en sucesión para instalar JAVA con éxito
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections sudo apt-get -y install oracle-java8-installer
Para verificar si el paquete se ha instalado correctamente, escriba lo siguiente en la terminal
java -version
Si el paquete se instaló correctamente, recibirá un mensaje como este
java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Instalando Elasticsearch
Use los siguientes comandos uno por uno para descargar e instalar Elasticsearch en su servidor
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list sudo apt-get update && sudo apt-get install elasticsearch
Ahora ejecute el siguiente comando para iniciar elasticsearch en el arranque
sudo update-rc.d elasticsearch defaults 95 10
El comando dará el siguiente resultado
Adding system startup for /etc/init.d/elasticsearch ... /etc/rc0.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc1.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc6.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc2.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc3.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc4.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc5.d/S95elasticsearch -> ../init.d/elasticsearch
Ahora es el momento de ponerlo en marcha y ver si funciona bien.
sudo /etc/init.d/elasticsearch start curl 'http://localhost:9200'
Si se instaló y ejecutó correctamente, debería recibir un resultado de texto similar al siguiente
root@ELKTest:~# curl 'http://localhost:9200' { "name" : "Termagaira", "cluster_name" : "elasticsearch", "cluster_uuid" : "72XGxcHjSjaaXDdtmIio0g", "version" : { "number" : "2.4.3", "build_hash" : "d38a34e7b75af4e17ead16f156feffa432b22be3", "build_timestamp" : "2016-12-07T16:28:56Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" }
Ahora necesita editar el archivo de configuración para restringir el acceso externo a sus registros de elasticsearch.
sudo vi /etc/elasticsearch/elasticsearch.yml
Ahora busque la línea network.host, elimínela eliminando # antes de la línea y reemplace el contenido de esa línea por localhost o 127.0.0.1 . Para este ejemplo usaremos localhost
network.host: localhost
Reiniciar búsqueda elástica
sudo service elasticsearch restart
Instalando Logstash
La instalación de logstash es muy similar a la instalación de Elasticsearch, al igual que Kibana. Use los siguientes comandos para importar e instalar el paquete logstash.
echo "deb https://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install logstash
Ahora ejecute el siguiente comando para iniciar logstash al inicio.
sudo update-rc.d logstash defaults 95 10
Result: Adding system startup for /etc/init.d/logstash ... /etc/rc0.d/K10logstash -> ../init.d/logstash /etc/rc1.d/K10logstash -> ../init.d/logstash /etc/rc6.d/K10logstash -> ../init.d/logstash /etc/rc2.d/S95logstash -> ../init.d/logstash /etc/rc3.d/S95logstash -> ../init.d/logstash /etc/rc4.d/S95logstash -> ../init.d/logstash /etc/rc5.d/S95logstash -> ../init.d/logstash
Finalmente inicie logstash
sudo /etc/init.d/logstash start
Instalando Kibana
Use los siguientes comandos en sucesión para importar e instalar kibana
echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install kibana
Ahora configure Kibana para que se inicie en el arranque usando
sudo update-rc.d kibana defaults 95 10
Result: Adding system startup for /etc/init.d/kibana ... /etc/rc0.d/K10kibana -> ../init.d/kibana /etc/rc1.d/K10kibana -> ../init.d/kibana /etc/rc6.d/K10kibana -> ../init.d/kibana /etc/rc2.d/S95kibana -> ../init.d/kibana /etc/rc3.d/S95kibana -> ../init.d/kibana /etc/rc4.d/S95kibana -> ../init.d/kibana /etc/rc5.d/S95kibana -> ../init.d/kibana
Configure el archivo kibana para que solo usted tenga acceso a la interfaz.
sudo vi /opt/kibana/config/kibana.yml
En el archivo de configuración de Kibana, busque la línea server.host y reemplace "0.0.0.0" con "localhost":luego guarde y salga del archivo de configuración.
server.host: "localhost"
Ahora reinicie el servicio
sudo service kibana restart
Instalando NGINX
Antes de que podamos usar la interfaz web de Kibana, debe instalar un proxy inverso. Así que instala NGINX usando el siguiente comando.
sudo apt-get install nginx apache2-utils
Al ejecutar el siguiente comando, debe configurar el nombre de usuario y la contraseña para la interfaz web de Kibana
sudo htpasswd -c /etc/nginx/htpasswd.users kibadmin
Puede usar cualquier nombre de su elección en lugar de kibadmin. Aparecerá un mensaje pidiéndole que ingrese la nueva contraseña. Ingrese la contraseña de su cuenta kibana y complete el proceso.
Ahora realice cambios en el bloque del servidor predeterminado de Nginx usando lo siguiente
sudo vim /etc/nginx/sites-available/default
Elimine el contenido del archivo y pegue el siguiente código en el archivo, luego guarde y salga.
server { listen 80; server_name yourdomain; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; 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; } }
Asegúrese de reemplazar su dominio con su nombre de dominio correspondiente. Luego reinicie el servidor web ejecutando el siguiente comando.
sudo service nginx restart
La pila ELK ahora se instaló con éxito en el servidor
Generación de certificado SSL
Genere un certificado SSL siguiendo los pasos proporcionados en el enlace haciendo clic aquí.
Cuando tenga una clave y un certificado, colóquelos en /etc/nginx/cert.key y /etc/nginx/cert.pem y luego cree un archivo /etc/nginx/sites-disponible/nsm con el siguiente contenido:
server { listen 80 default_server; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name hostname; <-- edit this to match your hostname root html; index index.html index.htm; ssl on; ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_protocols TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5601; include proxy_params; } }
Elimine el archivo de configuración predeterminado de Nginx y habilite el nuevo usando el siguiente comando, luego reinicie el servidor web.
$ sudo rm /etc/nginx/sites-enabled/default && sudo ln -s /etc/nginx/sites-available/nsm /etc/nginx/sites-enabled/nsm $ sudo /etc/init.d/nginx restart
Si todo se ejecuta correctamente, entonces la infraestructura de búsqueda central está en su lugar y debería estar accesible en https://