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.
Todos los pasos deben ejecutarse con privilegios de root en todos los nodos, salvo indicación en contrario.
Para instalar el ELK, necesitará:
Permiso de root en el servidor
GBDS instalado en el servidor
Luego, siga los pasos presentados a continuación.
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-elasticsearchCree el archivo del repositorio:
vim /etc/yum.repos.d/elasticsearch.repoAgregue 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-mdLuego, actualice la caché del gestor de paquetes. Comience limpiando la caché:
yum clean allFinalmente, haga un rebuild de la caché de paquetes:
yum makecacheInstalando ELK
Instalando y Configurando Elasticsearch
Instale el paquete Elasticsearch:
yum install elasticsearch -yLuego, abra el archivo de configuración de Elasticsearch:
vim /etc/elasticsearch/elasticsearch.ymlEn la sección Network, busque la línea que comienza con #network.host:. Descomente la línea y cambie su valor a:
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: falseEntonces, inicie el servicio de Elasticsearch:
sudo systemctl start elasticsearchY habilite el servicio de Elasticsearch para que inicie automáticamente al arranque de la máquina:
sudo systemctl enable elasticsearchFinalmente, verifique que el servicio de Elasticsearch esté en ejecución:
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 -yLuego, abra el archivo de configuración de Kibana:
vim /etc/kibana/kibana.ymlBusque la línea que comienza con #server.host:. Descomente la línea y cambie su valor a:
server.host: "<hostname>"
^^^^^^^^^^A continuación, busque la línea que comienza con #elasticsearch.hosts:. Descomente la línea y cambie su valor a:
elasticsearch.hosts: ["http://<elasticsearch-host-ip>:9200"]
^^^^^^^^^^^^^^^^^^^^^^^Entonces, inicie el servicio de Kibana:
sudo systemctl start kibanaY habilite el servicio de Kibana para que inicie automáticamente al arranque de la máquina:
sudo systemctl enable kibanaA continuación, instale y configure Nginx.
Instalando y Configurando Nginx
Instale el paquete Nginx:
yum install nginx -yA 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.usersLuego, cree un nuevo archivo de configuración para Nginx:
vim /etc/nginx/conf.d/<hostname>_kibana.conf
^^^^^^^^^^Agregue el siguiente contenido al archivo, realizando los cambios apropiados en server_name y proxy_pass:
A continuación, las líneas que contienen "^^^^^^^^^" están presentes solo para resaltar los cambios que deben realizarse. Elimínelas antes de guardar el archivo.
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 -tLuego, reinicie el servicio de Nginx:
systemctl restart nginxSi es necesario, configure la conexión en SE:
setsebool httpd_can_network_connect 1 -PFinalmente, verifique que el servicio de Kibana esté en ejecución, accediendo a la siguiente URL en un navegador:
http://<host-ip>/status
^^^^^^^^^El nombre de usuario es kibanaadmin y la contraseña es la creada anteriormente.
Instalando y Configurando Logstash
Instale el paquete Logstash:
yum install logstash -yA continuación, instale el paquete MySQL Connector/J:
yum install mysql-connector-java -yLuego, cree el archivo de configuración de Logstash:
vim /etc/logstash/conf.d/smartsense.confAgregue el siguiente contenido al archivo, realizando los cambios apropiados en jdbc_connection_string, jdbc_user, jdbc_password y hosts:
A continuación, las líneas que contienen "^^^^^^^^^" están presentes solo para resaltar los cambios que deben realizarse. Elimínelas antes de guardar el archivo.
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.serviceBusque 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-reloadSi está instalando en un servidor nuevo que posee una base de datos vacía, inserte un valor ficticio en la tabla smartsense.load_balancing_count para evitar errores. Para ello, ejecute el siguiente comando e ingrese la contraseña de la base de datos:
Asegúrese de sustituir <database-username> y <mysql-database-ip> por los valores apropiados.
# vvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvv
mysql -u <database-username> -p -h <mysql-database-ip> \
-e "USE smartsense; INSERT INTO load_balancing_count
(id, hostname, load_time, api_id, transaction_type,
latent, ul, load_count, extraction_time_avg, extraction_quality_avg,
match_avg, total_avg, extraction_time_min, extraction_quality_min, match_min,
total_min, extraction_time_max, extraction_quality_max, match_max, total_max)
VALUES
(1, 'hostname', '2023-08-31 21:25:40', '8829E30D-4994-4D09-99AF-B6F818473928',
'IDENTIFY', 'false', 'false', 1, '541.0', '0.0', '48.0', '599.0',
'541', '0', '48', '599', '541', '0', '48', '599');"A continuación, habilite el servicio de Logstash para que inicie automáticamente al arranque de la máquina:
sudo systemctl enable logstashLuego, inicie el servicio de Logstash:
sudo systemctl start logstashY supervise el registro:
tail -f /var/log/logstash/logstash-plain.logSi ocurre un error indicando que Logstash no puede escribir en el directorio /var/lib/logstash/{folder}, ejecute el siguiente comando para cambiar su owner:
chown -R logstash:logstash /var/lib/logstashFinalmente, para verificar si Logstash creó el índice en Elasticsearch, ejecute el siguiente comando:
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.5kbConfigurando ELK con SmartSense
Configurando Kibana
Creando la Data View
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 PatternIndex pattern:
smart_sense_index_patternTimestamp 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 stackedData view:
SS PatternHorizontal Axis:
Functions:
Date histogramField:
load_time
Vertical Axis:
Functions:
SumField:
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 DashboardTags:
smartsense-enroll
Haga clic en Save and return.
Repita las operaciones anteriores para crear los siguientes dashboards:
Para VERIFY añada el filtro:
transaction_typeisVERIFYPara UPDATE añada el filtro:
transaction_typeisUPDATEPara IDENTIFY añada el filtro:
transaction_typeisIDENTIFYandlatentisfalsePara LATENT añada el filtro:
transaction_typeisIDENTIFYandlatentistrue
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=truePor 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=trueRepita 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.propertiesEncuentre 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=trueGuarde 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?

