Vamos desde el inicio, ¿Que ....... es ELK?
Una imagen dice mas que mil palabras.
ELK es el nombre que se le da al stack de soluciones de elastic pare referir a los proyectos open source Elasticsearch, Logstash y Kibana.
En pocas palabras sin demeritar el excelente trabajo que a realizado los integrantes de este proyecto Elasticsearch es un motor de búsqueda y analítica.
Logstash es un pipeline de procesamiento de datos del lado del servidor que ingesta datos de una multitud de fuentes simultáneamente, los transforma y luego los envía a Elasticsearch.
Kibana permite a usuarios visualizar los datos en gráficos con Elasticsearch.
Todo esto gracias al motor de búsqueda de código abierto distribuido RESTful, basado en JSON. esto ayuda en mucho a ser menos complejo de utilizar, totalmente escalable y súper flexible. por estos atributos inicio a tener mucha popularidad hasta el día de hoy de ser una de las tecnologías para manejo, analítica y visualización de datos muy popular entre los usuarios, compañías y departamentos de IT.
Logstash + Kibana sumaron funcionalidades que el stack necesitaba, mejoraron con el paso del tiempo, los usuarios lo estudiaron, aprendieron y creció su popularidad por una sencilla razón ¡funciona!, soy usuario, en mi particular opinión, hace lo que esta diseñada para hacer y con conocimientos, ganas e interés puedes lograr desarrollar una plataforma de recolección de datos, alarmas, Monitoreo, dando cumplimiento a la gestión de activos, gestión de consulta de información, gestión de monitoreo incluso con el desarrollo adecuado gestión de incidentes con ijntegraci9ones a terceros. Ahora con la integración de Beat que prácticamente recolecta información a nivel performance de equipos, servidores, desktop no dudo que muchos como nosotros lo estén aplicando para sistemas de monitoreo de performance (Monitoreo de CPU, Memoria, Red, procesos, Disponibilidad por ICMP).
ahora iniciemos la instalación de este excelente stack. (para que veas que no es ciencia de la nasa "tu sabes quien eres")
Si partimos de "no tengo ni idea de como puedo iniciar" amigo estas en problemas, hay ciertos conocimientos de IT / Sistemas / Computación o como le digas a rama de estudio de informática en tu país que si o si tienes que saber previo a meterte en el juego de ELK.
Recomendación
Para ti amigo amante de IT, es necesario que tengas en mente que esto no es excel y puedes usarlo de forma empírica, necesitas que botón presionar en el avión para que no lo estrelles.
Ayudaría mucho que comprendieras o trabajas con un tiempo de aproximadamente 1 a 2 años con sistemas operativos Linux, distribuciones como Ubuntu Server, Centos (RIP), Red Hat Enterprise Server ayudaran mucho a tu camino.
Conocimiento basicos (de menos) en RESTful, Json y SQL- en el mejor de los escenarios conocimientos medios de Os Linux, Json, Programación, SQL, ETL, BigData. esto ayuda un mucho.
Requerimientos de ambiente
Un servidor de Ubuntu 20.04, con Mínimo 4 GB de RAM y 2 CPU configuradas con un usuario sudo no root.
Ten en cuenta que la cantidad de CPU, RAM y almacenamiento que su servidor de Elasticsearch requiera dependerá del volumen de registros que prevé.
OpenJDK 11 instalado.
Nginx instalado en su servidor, Para configurar, siga esta guía
Instalación del primer modulo de ELK
Después de instalar tu Ubuntu Server y actualizar toda tu distribución, tomando en cuenta los pre requerimientos previos mencionados, continuamos con la instalación del producto. Usaremos Curl para importar la clave GPG pública de Elasticsearch a APTcurl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
continuaremos agregando a lista de fuentes de Elastic al directorio sources.list.d
, donde APT buscará nuevas fuentes:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Actualizamos la lista de paquetes de APT
sudo apt update
Continuaremos por instalar elasticsearch con el siguiente comando.
sudo apt install elasticsearch
Ahora que esta instalado utilizaremos el editor vi para modificar el archivi .yml
sudo vi /etc/elasticsearch/elasticsearch.yml
elasticsearch.yml ofrece opciones de configuración para clúster, nodo, rutas, memoria, red, detección y puerta de enlace. La mayoría de estas opciones están preconfiguradas en el archivo, pero las puede cambiar según sus necesidades. Elasticsearch escucha todo el tráfico de todo origen por pyuerto 9200. Es recomendable restringir el acceso externo a su instancia de Elasticsearch para evitar que terceros lean sus datos o cierren su clúster de Elasticsearch.
en el archivo /etc/elasticsearch/elasticsearch.yml
ve a network.host y configuralo para localhost con esto podemos iniciar elasticsearch con el siguiente comando desde terminar.
sudo systemctl start elasticsearch
Ahora si tienes intenciones que tu instancia inicie cuando el servidor se reinicie por alguna actualización o razon ejecuta el siguiente comando para declrar que inicie automaticamente.
sudo systemctl enable elasticsearch
Para validar que el modulo se encunetra en ejecución puedes correr el siguiente comando.
curl -X GET "localhost:9200"
Instalación de Kibana
Para su instalación ejecutamos el siguiente comando
sudo apt install kibana
Para indicarle al sistema que inicie kibana cuando el equipo se reinicie ejecutamos el siguiente comando
sudo systemctl enable kibana
Iniciamos el servicio de Kibana con el siguiente comando.
sudo systemctl start kibana
Ahora ya tenemos nuestro segundo modulo de ELK, pero por seguridad requiere autenticación para acceso autorizado.
para espesificar un usuario y password puede ejecutar el siguiente comando
echo "usuario:`openssl passwd mipassworddekibana" | sudo tee -a /etc/nginx/htpasswd.users
echo "oposada:`openssl passwd Temporal.2021`" | sudo tee -a /etc/nginx/htpasswd.users
Ahora crearemos el sitio para que el web service lo identifique y envie las configuraciones previamente creadas.
sudo vi /etc/nginx/sites-available/your_domain
server {
listen 80;
server_name your_domain;
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;
}
}
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain
Reiniciamos nginx
sudo nginx -t
Ejecutamos el reload de nginx
sudo systemctl reload nginx
Permitimos que firewall de servidor permita el trafico
sudo ufw allow 'Nginx Full'
Validamos que este corriendo el status en nuestro navegador
http://your_domain/status
### Video de ejemplo ####