Elastic Stack

Introducción

Este manual describe el procedimiento de instalación del Elastic Stack (ELK).

Preparativos para la Instalación

Esta sección abarca los pasos esenciales necesarios para la instalación.

Para instalar el ELK, necesitará:

  • Permiso de root en el servidor

  • GBDS instalado en el servidor

Si no tiene el archivo, póngase en contacto con el equipo de soporte de Griaule.

Luego, siga los pasos presentados a continuación.

  1. Inicie sesión en el servidor como root.

Prepare el Repositorio

Para instalar ELK, primero el repositorio debe ser agregado al servidor.

Para ello, importe la clave GPG:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Cree el archivo del repositorio:

vim /etc/yum.repos.d/elasticsearch.repo

Agregue el siguiente contenido al archivo y guárdelo:

[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Luego, actualice la caché del gestor de paquetes. Comience limpiando la caché:

yum clean all

Finalmente, haga un rebuild de la caché de paquetes:

yum makecache

Instalando ELK

Instalando y Configurando Elasticsearch

Instale el paquete Elasticsearch:

yum install elasticsearch -y

Luego, abra el archivo de configuración de Elasticsearch:

vim /etc/elasticsearch/elasticsearch.yml

En la sección Network, busque la línea que comienza con #network.host:. Descomente la línea y cambie su valor a:

Asegúrese de sustituir <host-ip> por la dirección IP del servidor.

network.host: <host-ip>
              ^^^^^^^^^

A continuación, desactive el SSL cambiando las siguientes configuraciones a false:

xpack.security.enabled: false

xpack.security.enrollment.enabled: false

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: false

Entonces, inicie el servicio de Elasticsearch:

sudo systemctl start elasticsearch

Y habilite el servicio de Elasticsearch para que inicie automáticamente al arranque de la máquina:

sudo systemctl enable elasticsearch

Finalmente, verifique que el servicio de Elasticsearch esté en ejecución:

Asegúrese de sustituir <host-ip> por la dirección IP del servidor.

curl -X GET "<host-ip>:9200"
             ^^^^^^^^^

El resultado debe ser similar a:

{
	"name": "QDexH8a",
	"cluster_name": "elasticsearch",
	"cluster_uuid": "gAAIqERvS_msO7Y1_759Ja",
	"version": {
		"number": "6.8.23",
		"build_flavor": "default",
		"build_type": "rpm",
		"build_hash": "4f67856",
		"build_date": "2022-01-06T21:30:50.087716Z",
		"build_snapshot": false,
		"lucene_version": "7.7.3",
		"minimum_wire_compatibility_version": "5.6.0",
		"minimum_index_compatibility_version": "5.0.0"
	},
	"tagline": "You Know, for Search"
}

Instalando y Configurando Kibana

Instale el paquete Kibana:

yum install kibana -y

Luego, abra el archivo de configuración de Kibana:

vim /etc/kibana/kibana.yml

Busque la línea que comienza con #server.host:. Descomente la línea y cambie su valor a:

Asegúrese de sustituir <hostname> por el nombre de host del servidor. Mantenga las comillas dobles.

server.host: "<hostname>"
              ^^^^^^^^^^

A continuación, busque la línea que comienza con #elasticsearch.hosts:. Descomente la línea y cambie su valor a:

Asegúrese de sustituir <elasticsearch-host-ip> por la dirección IP configurada en Elasticsearch. Mantenga las comillas dobles.

elasticsearch.hosts: ["http://<elasticsearch-host-ip>:9200"]
                              ^^^^^^^^^^^^^^^^^^^^^^^

Entonces, inicie el servicio de Kibana:

sudo systemctl start kibana

Y habilite el servicio de Kibana para que inicie automáticamente al arranque de la máquina:

sudo systemctl enable kibana

A continuación, instale y configure Nginx.

Instalando y Configurando Nginx

Instale el paquete Nginx:

yum install nginx -y

A continuación, cree un archivo que contendrá las credenciales de autenticación para Kibana. Para ello, ejecute el siguiente comando e ingrese la contraseña deseada cuando se le solicite:

echo "kibanaadmin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users

Luego, cree un nuevo archivo de configuración para Nginx:

Asegúrese de sustituir <hostname> por el nombre de host del servidor.

vim /etc/nginx/conf.d/<hostname>_kibana.conf
                      ^^^^^^^^^^

Agregue el siguiente contenido al archivo, realizando los cambios apropiados en server_name y proxy_pass:

Asegúrese de sustituir <host-ip> por la dirección IP del servidor y <kibana-host-ip> por la dirección IP del servidor en el que está instalado Kibana.

server {
	listen 80;

	server_name <host-ip>;
	            ^^^^^^^^^

	auth_basic "Restricted Access";
	auth_basic_user_file /etc/nginx/htpasswd.users;

	location / {
		proxy_pass http://<kibana-host-ip>: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_upgrad;
	}
}

Pruebe el archivo de configuración de Nginx:

nginx -t

Luego, reinicie el servicio de Nginx:

systemctl restart nginx

Si es necesario, configure la conexión en SE:

setsebool httpd_can_network_connect 1 -P

Finalmente, verifique que el servicio de Kibana esté en ejecución, accediendo a la siguiente URL en un navegador:

Asegúrese de sustituir <host-ip> por la dirección IP del servidor.

http://<host-ip>/status
       ^^^^^^^^^

Instalando y Configurando Logstash

Instale el paquete Logstash:

yum install logstash -y

A continuación, instale el paquete MySQL Connector/J:

yum install mysql-connector-java -y

Si no se encuentra, descárguelo en: https://dev.mysql.com/downloads/connector/j/

Luego, cree el archivo de configuración de Logstash:

vim /etc/logstash/conf.d/smartsense.conf

Agregue el siguiente contenido al archivo, realizando los cambios apropiados en jdbc_connection_string, jdbc_user, jdbc_password y hosts:

Asegúrese de sustituir <database-ip>, <database-username>, <database-password> y <elasticsearch-host-ip> por los valores apropiados. Mantenga las comillas dobles.

input {
	jdbc {
		jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://<database-ip>:3306/"
		                                        ^^^^^^^^^^^^^
		jdbc_user => "<database-username>"
		              ^^^^^^^^^^^^^^^^^^^
		jdbc_password => "<database-password>"
		                  ^^^^^^^^^^^^^^^^^^^
		jdbc_validate_connection => true
		tracking_column => "id"
		use_column_value => true
		statement => "SELECT * FROM smartsense.load_balancing_count where id > :sql_last_value;"
		schedule => "*/2 * * * *"
		clean_run => false
	}
}
output {
	elasticsearch {
		hosts => ["<elasticsearch-host-ip>:9200"]
		           ^^^^^^^^^^^^^^^^^^^^^^^
		index => "smart_sense_index_pattern"
		document_id => "%{[id]}"
	}
	stdout {
		codec => rubydebug
	}
}

A continuación, el archivo systemd de Logstash necesita ser modificado para garantizar que se inicie usando el archivo de configuración creado anteriormente. Para ello, abra el archivo:

vim /etc/systemd/system/logstash.service

Es posible que el archivo esté ubicado en /usr/lib/systemd/system/logstash.service.

Busque la línea que comienza con ExecStart=. Cambie su valor de:

ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"

A:

ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" "-f" "/etc/logstash/conf.d/smartsense.conf"

Luego, aplique los cambios recargando la configuración de systemd:

systemctl daemon-reload

A continuación, habilite el servicio de Logstash para que inicie automáticamente al arranque de la máquina:

sudo systemctl enable logstash

Luego, inicie el servicio de Logstash:

sudo systemctl start logstash

Y supervise el registro:

tail -f /var/log/logstash/logstash-plain.log

Finalmente, para verificar si Logstash creó el índice en Elasticsearch, ejecute el siguiente comando:

Asegúrese de sustituir <elasticsearch-host-ip> por la dirección IP del servidor en el que está instalado Elasticsearch.

curl -X GET "<elasticsearch-host-ip>:9200/_cat/indices?v"
             ^^^^^^^^^^^^^^^^^^^^^^^

La salida debe ser similar a:

health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   smart_sense_index_pattern 6Ux_yM25SvG2zWGdGR0HQw   5   1          1            0      6.7kb          6.7kb
green  open   .kibana_1                 BBO89yLnTUC3F7nhqKwf9w   1   0          4            0       18kb           18kb
green  open   .kibana_task_manager      sIMoATiBRsS8bXiVBCscrA   1   0          2            0     12.5kb         12.5kb

Configurando ELK con SmartSense

Configurando Kibana

Creando la Data View

Asegúrese de sustituir <kibana-host-ip> por la dirección IP del servidor en el que está instalado Kibana.

En un navegador, acceda a: http://<kibana-host-ip>:5601. Luego, abra la barra lateral de opciones haciendo clic en este ícono, ubicado en la esquina superior izquierda de la pantalla:

Haga clic en Management (última sección). Luego, en las opciones del lado izquierdo, en la sección Fecha, haga clic en Index Management.

O acceda a la siguiente URL directamente:

http://<kibana-host-ip>:5601/app/management/data/index_management/indices
       ^^^^^^^^^^^^^^^^

Asegúrese de que el índice smart_sense_index_pattern aparezca en la lista.

Luego, en la sección Kibana de las opciones del lado izquierdo, haga clic en Data Views.

Haga clic en el botón azul Create data view y rellene los campos con la siguiente información:

  • Name: SS Pattern

  • Index pattern: smart_sense_index_pattern

  • Timestamp field: load_time

Confirme la creación de la Data View haciendo clic en Save data view to Kibana.

Creando los Dashboards

Abra nuevamente la barra lateral de opciones haciendo clic en el ícono en la esquina superior izquierda de la pantalla. En la sección Analytics, haga clic en Dashboards.

O acceda a la siguiente URL directamente:

http://<kibana-host-ip>:5601/app/dashboards
       ^^^^^^^^^^^^^^^^

Haga clic en el botón azul Create dashboard. Luego, haga clic en Create visualization. En el lado derecho, configure la visualization con la siguiente información:

  • Visualization type: Bar vertical stacked

  • Data view: SS Pattern

  • Horizontal Axis:

    • Functions: Date histogram

    • Field: load_time

  • Vertical Axis:

    • Functions: Sum

    • Field: load_count

Luego, haga clic en el símbolo +, ubicado en la esquina superior izquierda de la pantalla, para crear un nuevo filtro. Configure el filtro con la siguiente información: transaction_type is ENROLL. Confirme haciendo clic en Add filter.

Finalmente, guarde el dashboard haciendo clic en Save to library, ubicado en la esquina superior derecha de la pantalla, e introduciendo la siguiente información:

  • Title: SS Enroll Dashboard

  • Tags: smartsense-enroll

Haga clic en Save and return.

Repita las operaciones anteriores para crear los siguientes dashboards:

Ajuste los nombres y tags según sea necesario.

  • Para VERIFY añada el filtro: transaction_type is VERIFY

  • Para UPDATE añada el filtro: transaction_type is UPDATE

  • Para IDENTIFY añada el filtro: transaction_type is IDENTIFY and latent is false

  • Para LATENT añada el filtro: transaction_type is IDENTIFY and latent is true

Con los cinco dashboards creados, entre en cada uno de ellos y configure el intervalo de tiempo a mostrar, haciendo clic en el ícono de calendario, ubicado en la esquina superior derecha de la pantalla.

Luego, haga clic en Share y en Copy link. Guarde el enlace, ya que se usará posteriormente.

Repita la operación para los cinco dashboards.

Al final de cada enlace, añada la siguiente información:

&hide-filter-bar=true&show-time-filter=true&embed=true

Por ejemplo, el enlace:

http://172.16.0.185:5601/app/lens#/edit/a0a936d5-4e92-4015-b3e7-37810c2a114a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))

Quedará:

http://172.16.0.185:5601/app/lens#/edit/a0a936d5-4e92-4015-b3e7-37810c2a114a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true

Repita la operación para los cinco enlaces obtenidos.

Guarde los enlaces, ya que se usarán en el paso siguiente.

Configurando los Dashboards en SmartSense

Abra el archivo de configuración de SmartSense, config.properties, ubicado en la carpeta /var/lib/tomcats/smart-sense/conf:

vim /var/lib/tomcats/smart-sense/conf/config.properties

Encuentre la sección # SMARTSENSE - ELK CONFIGURATION.

Para cada propiedad (linkEnroll, linkIdentify, linkIdentifyLatent, linkUpdate, linkVerify), inserte el enlace del dashboard correspondiente obtenido anteriormente. Por ejemplo:

linkEnroll=http://172.16.0.185:5601/app/lens#/edit/a0a936d5-4e92-4015-b3e7-37810c2a114a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true

linkUpdate=http://172.16.0.185:5601/app/lens#/edit/25d53ee8-7adc-4b06-b05d-f38bfda39c66?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true

linkVerify=http://172.16.0.185:5601/app/lens#/edit/8bfa1546-7990-4ed3-baae-86e421a60aef?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true

linkIdentify=http://172.16.0.185:5601/app/lens#/edit/0d5edf08-ca78-40fc-ac5f-59ca91d07412?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true

linkIdentifyLatent=http://172.16.0.185:5601/app/lens#/edit/e3f84cc5-68dd-4c76-a84e-d209da2e777a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true

Guarde y cierre el archivo.

Después de completar todos los pasos del procedimiento de instalación del Elastic Stack, vuelva al manual de Configuración del SmartSense Server para completar la configuración.

Última actualización

¿Te fue útil?