Instalar ELK en CentOS 7 === <i class="fa fa-user-circle-o" aria-hidden="true"></i> Johnny Pan Sanabria <i class="fa fa-clock-o" aria-hidden="true"></i> 2018-10-24 :::info **Descripción** > En este tutorial, le mostraremos cómo instalar y configurar la pila ELK en CentOS 7. Elasticsearch, Logstash y Kibana son los tres productos de código abierto que forman parte de la colección llamada pila ELK. Es una solución robusta para la búsqueda, análisis y visualización de datos. Como ya sabemos, Elasticsearch está distribuido para búsquedas RESTful y el análisis NoSQL basado en el motor Lucene, el proceso de procesamiento de datos ligero o Logstash se usa para administrar eventos y registros de muchas fuentes diferentes y Kibana, que es una aplicación web y se usa para la visualización de datosm la cual trabaja encima de Elsticsearch. ::: # 1. Requisitos previos Lo primero que necesita para completar este tutorial con éxito es el acceso de root al servidor CentOS 7 o utilizar el comando sudo. El volumen de registros que desea recopilar es importante porque la cantidad de CPU, RAM y almacenamiento requerido por su servidor ELK depende de ellos. **Requisitos básicos del sistema:** - OS: CentOS 7 - RAM: 4GB - CPU: 2 # 2. Java El despliegue de la pila ELK requiere de Java. Soporta tanto OpenJDK como Oracle Java. ```shell sudo yum install java-1.8.0-openjdk-headless ``` Probamos que se haya instalado correctamente ```shell java -version ``` # 3. Elasticsearch Ahora es el momento de instalar y configurar Elasticsearch. Utilizaremos el paquete rpm para esta instalación que proporciona elastic.co y luego lo configuraremos para que se ejecute en localhost (todo esto es para asegurarnos de que hemos hecho la configuración segura y para asegurarnos de que no se pueda acceder a ella desde el exterior). Se debe agregar la clave elastic.co al servidor antes de la instalación de Elasticsearch. ```shell sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo yum install https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm ``` En este punto, Elasticsearch ya está instalado, ahora editamos el archivo de configuración `elasticsaerch.yml`. ```shell sudo nano /etc/elasticsearch/elasticsearch.yml ``` Luego se debe descomentar la línea 40. Esto desactiva el intercambio de memoria para Elasticsearch. ```javascript bootstrap.memory_lock: true ``` Después de eso, debemos descomentar las líneas `network.host` y `http.port` ```javascript network.host: localhost http.port: 9200 ``` Guardamos y salimos del editor. El siguiente paso es editar el archivo de configuración `sysconfig` para Elasticsearch. ```shell sudo nano /etc/sysconfig/elasticsearch ``` Ahora debe descomentar la línea 60 y asegurarse de que el valor sea `ilimitado`. ```javascript MAX_LOCKED_MEMORY = ilimitado ``` Guardar y Salir. Completar todos estos pasos significa que ha finalizado la configuración de Elasticsearch en CentOS 7. El puerto de escucha de Elasticsearch es el 9200. Antes de iniciar el servicio, primero debemos volver a cargar los cambios y habilitar Elasticsearch para que se inicie en el momento del arranque. ```shell sudo systemctl daemon-reload sudo systemctl enable elasticsearch sudo systemctl start elasticsearch ``` Después de unos segundos, se iniciará Elasticsearch y luego deberá verificar los puertos abiertos en el servidor y el estado para el puerto 9200 sea `LISTEN`. # 4. Kibana Cuando llegue a este punto, lo siguiente en la lista es la instalación y configuración de Kibana con un servidor web Nginx. Kibana escuchará en la dirección IP de localhost y Nginx actúa como un proxy inverso para la aplicación Kibana. Debe usar wget para descargar Kibana 6.2.4 y luego instalarlo usando el comando rpm. Pero podemos realizar la instalación mediante el siguiente comando. ```shell sudo yum install https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-x86_64.rpm ``` El siguiente paso es editar el archivo de configuración de Kibana. ```bash sudo nano /etc/kibana/kibana.yml ``` Descomente las líneas de configuración para `server.port`, `server.host` y `elasticsearch.url`. ```javascript server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200" ``` Los cambios deben guardarse y luego puede salir. Inicie el servicio Kibana y configúrelo para que se inicie automáticamente en el arranque: ```shell systemctl enable kibana systemctl start kibana ``` Ya has terminado la instalación de Kibana. # 5. Instalar y configurar Logstash En el siguiente paso, instalaríamos Logstash y lo configuraríamos para centralizar los registros del servidor de los clientes con filebeat, luego filtraríamos y transformaríamos los datos de Syslog y los moveríamos al servidor (Elasticsearch). Usa rpm para descargar Logstash e instalarlo. ```shell sudo yum install https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.rpm ``` Cuando la instalación de Logstash se haya completado, inicie el servicio Logstash y configúrelo para que se inicie automáticamente en el arranque: ```shell sudo systemctl start logstash sudo systemctl enable logstash ``` La configuración de Logstash depende de sus preferencias personales y de los complementos que utilizará. Puede encontrar más información sobre cómo configurar Logstash aquí . Eso es. Ha instalado con éxito la pila ELK en su CentOS 7. # 6. Nginx (Opcional) Lo siguiente es instalar Nginx y, por supuesto, configurarlo como un proxy inverso para acceder a Kibana desde la dirección IP pública. Nginx se puede encontrar en el repositorio de Epel, instale epel-release con yum. ```shell sudo yum install epel-release ``` Luego, debe instalar el paquete Nginx y httpd-tools. ```shell sudo yum install nginx httpd-tools ``` Las herramientas para el servidor web están contenidas en el paquete httpd-tools, puede usar la autenticación básica htpasswd para Kibana. En este punto, es necesario que creemos un nuevo archivo de configuración de host virtual en el directorio conf.d. ```shell sudo nano /etc/nginx/conf.d/your_domain.com.conf ``` Así podremos agregar una nueva configuración de host virtual. Pega la siguiente configuración: ```nginx server { listen 192.168.1.1:80 default_server; server_name _; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.kibana; 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; } } ``` Luego, se debe crear un nuevo archivo de autenticación básica con el comando htpasswd. ```shell sudo htpasswd -c /etc/nginx/htpasswd.kibana admin ``` `ESCRIBIR UNA CONTRASEÑA ROBUSTA` Configure Nginx para ejecutarlo en el momento de arranque e inicie Nginx. ```shell sudo systemctl enable nginx sudo systemctl start nginx ```