---
# System prepended metadata

title: Instalar ELK en CentOS 7

---

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
```