


En la entrada de hoy hablaremos de la pila ELK, estos tres componentes que son bastante comunes en arquitecturas Big Data. Logstash facilita la ingesta de datos provenientes de fuentes distribuidas, Elasticsearch indexa los datos y Kibana permite su visualización. En esta entrada mostraré las funcionalidades básicas de Elasticsearch como motor de indexación.Proceso de instalación
Partiendo de una instalación limpia de Ubuntu 17 podemos instalar todo de una manera más o menos automática utilizando apt. Además vamos a configurar la pila como servicio en la máquina Linux para que este corriendo como un demonio (IP de NAT de la VM: 192.168.74.142) tal y como debería estar en un servicio que montemos en producción.
Como paso previo, hay que realizar una instalación mínima de Ubuntu 17.04 server, podemos descargarlo de:
http://releases.ubuntu.com/17.04/
Una ver tenemos la instalación del servidor Ubuntu terminada, nos conectamos a la consola y comenzamos instalando JAVA como requisito: ElasticSearch y Logstash usan esta tecnología.
Para su instalación añadimos el repositorio y lanzamos la instalación:
sudo add-apt-repository -y ppa:webupd8team/java sudo apt-get update sudo apt-get -y install oracle-java8-installer
Podemos comprobar que se ha instalado y la vesión de JAVA con el comando java -version:
Añadir los repositorios de la versión 6.x (actualmente la 6.1) a Ubuntu para realizar la instalación de la pila ELK:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo apt-get install apt-transport-https echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list sudo apt-get update
Instalacion de ElasticSearch
sudo apt-get install elasticsearch
Con esto ya tendríamos instalado ElasticSearch, vamos a configurar el acceso a él para que solo sea posible desde la propia máquina (localhost) así evitamos que se puedan leer datos o hacer cambios mediante la API.
Editamos el fichero de configuración:
vi /etc/elasticsearch/elasticsearch.yml
Aqui podemos ver un pantallazo de la entrada del fichero que tenemos que modificar:
Buscamos, des comentamos y configuramos así, y una vez guardado el fichero reiniciamos el servicio.
sudo systemctl restart elasticsearch
Para que ElasticSearch arranque como servicio, configuramos el demonio:
sudo systemctl daemon-reload sudo systemctl enable elasticsearch
Instalacion de Kibana
sudo apt-get install kibana
Editamos también el fichero de configuración para hacer el «bind» a solo localhost:
El fichero a editar:
sudo vi /etc/kibana/kibana.yml
En la siguiente captura podemos ver un pantallazo de la entrada a modificar en el fichero de configuración:
Des comentamos y configuramos como muestra en la imagen, guardamos los cambios y reiniciamos el servicio. Para configurar también Kibana al arranque del sistema hacemos lo mismo que antes:
sudo systemctl daemon-reload sudo systemctl enable kibana sudo systemctl start kibana
Esto lo hacemos así porque vamos a utilizar un proxy inverso para el acceso vía web ya que la versión free de ELK no trae seguridad, entre otras cosas como son permisos por roles, avisos, reporting, etc.
Para ello hay modulos como X-Pack
https://www.elastic.co/products/x-pack
o alternativas gratuitas como SearchGuard para seguridad:
https://github.com/floragunncom/search-guard
o Sentinl para alertas y generación de reports:
https://github.com/sirensolutions/sentinl
En nuestro caso, haremos un pequeño arreglo para proteger el acceso a Kibana mediante un proxy inverso, esto lo haremos con Nginx, lo instalamos:
sudo apt-get -y install nginx
Necesitamos ahora configurar la autenticación, para ello creamos un fichero donde estén guardados los usuarios y password que pueden acceder a la web de Kibana. El fichero estará en /etc/nginx/htpasswd.users, lo editamos y añadimos un usuario de ejemplo admin y contraseña 123.qwe.
1 – Generamos la contraseña con openssl (Algoritmo aprt1, variante de Apache)
https://wiki.openssl.org/index.php/Manual:Passwd(1)
2 – La añadimos al fichero htpasswd.users junto con el nombre de usuario:
Debe quedar como se muestra la imagen.
Ahora falta configurar Nginx para que actue como proxy inverso hacia nuestro Kibana que esta en la misma máquina, para ello editamos el «site» por defecto:
sudo vi /etc/nginx/sites-available/default
El fichero debe quedar como sigue:
server { listen 80 default_server; server_name _; auth_basic "Acceso solo a usuarios autorizados. Log-in"; 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; } }
Le metemos la autenticación y el user-file será el creado anteriormente con el usuario admin. Por lo demás es sencillo, todo lo que sea petición a /, hace de proxy y lo redirige a el propio servidor al puerto 5601 (puerto por defecto de Kibana), con esto nos pide validación para acceder:
Instalacion de Logstash
sudo apt-get install logstash
Y como el resto lo ejecutamos como servicio:
sudo systemctl daemon-reload sudo systemctl enable logstash.service
Ya podemos acceder a Kibana y comenzar a configurar los indices
No hay comentarios
Se el primero en dejar un comentario.