Heartbeat con Elasticsearch 8.x - Parte 1: Instalación y protección

Publicado el 4 de enero de 2023

« Ver todas las conferencias Contáctenos
Heartbeat with Elasticsearch 8.x - Part 1: Install & Secure

Introducción

Código en Github: Elasticsearch y Beats

Vamos a configurar Latido del corazón con Elasticsearch y Kibana. Si aún no tiene Elasticsearch y Kibana configurados, entonces siga estas instrucciones.

Este vídeo asume que estás usando Certificados firmados públicamente. Si estas usando Certificados autofirmados, Vaya aquí Por determinar.

Requisitos

Una instancia en ejecución de Elasticsearch y Kibana.

Una instancia de otro servidor Ubuntu 20.04 que ejecuta cualquier tipo de servicio.

Pasos

Paso 1 - Descargar Heartbeat [01:12]

En la máquina Ubuntu que ejecutará packetbeat, ejecute estos comandos para descargar las dependencias:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; sudo apt-get install -y apt-transport-https; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; sudo apt-get update && sudo apt-get install -y heartbeat-elastic;

Paso 2: Configurar Heartbeat [02:21]

Edite estos campos para el /etc/heartbeat/heartbeat.yml.

heartbeat.monitors: - type: http # ID used to uniquely identify this monitor in elasticsearch even if the config changes id: apache-website # Human readable display name for this service in Uptime UI and elsewhere name: Apache Website # List or urls to query urls: ["<url>"] #["http://192.168.0.60"] # Configure task schedule schedule: '@every 5s' # Total test connection and data exchange timeout #timeout: 16s # Name of corresponding APM service, if Elastic APM is in use for the monitored service. #service.name: my-apm-service-name - type: http # ID used to uniquely identify this monitor in elasticsearch even if the config changes id: elastic-rest # Human readable display name for this service in Uptime UI and elsewhere name: Elastic Rest # List or urls to query urls: ["<elasticsearch-domain>:<elasticsearch-port>"] username: 'elastic' password: "<your elastic password>" # Configure task schedule schedule: '@every 5s' setup.kibana: host: "https://<kibana-domain>:<kibana-port>" output.elasticsearch: hosts: ["<elasticsearch-domain>:<elasticsearch-port>"] protocol: "https" username: "elastic" password: "<your elastic password>"

El archivo heartbeat.yml completo se puede encontrar aquí

IMPORTANTE: Usamos el superusuario elástico para la configuración inicial. Reduciremos los privilegios más adelante.

Luego prueba tu configuración con estos comandos:

/usr/share/heartbeat/bin/heartbeat test config -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat /usr/share/heartbeat/bin/heartbeat test output -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Deberías ver algo como esto:

Verify heartbeat configuration Verificar la configuración del latido

Paso 3 - Configurar Heartbeat [12:48]

Ahora ejecute este comando para configurar flujos de datos y vistas de latidos en Elasticsearch y Kibana:

/usr/share/heartbeat/bin/heartbeat setup -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Una vez finalizado el comando, ve a Kibana Menú y visitar Observabilidad > Descripción general para ver una sección de Monitor.

Paso 4: Crear un usuario de publicación [14:53]

Crear una vista de datos de latidos [16:18]

En Kibana, vaya a Gestión de pilas > Vistas de datos. Haga clic en "Crear vistas de datos" y complete los siguientes campos:

name: heartbeat-* index: heartbeat-* Timestamp field: @timestamp

y luego haga clic en Guardar la vista de datos en Kibana

Crear rol

En Kibana, vaya a Gestión de pilas > Roles > Crear rol. Luego, completa estos campos:

Role name: heartbeat-publisher Cluster privileges: monitor, read_ilm Indices: heartbeat-* Privileges: create_doc

Crear usuario

En Kibana, vaya a Gestión de pila > Usuarios > Crear usuario. Luego, completa estos campos:

Username: heartbeat-publisher Full name: heartbeat-publisher Email address: anything@anything.com Password: anything Roles: heartbeat-publisher, editor

Crear una clave API para el usuario

En Kibana, vaya a Herramientas de desarrollo > Consola. Luego ejecute este comando:

POST /_security/api_key/grant { "grant_type": "password", "username": "heartbeat-publisher", "password": "anything", "api_key": { "name": "heartbeat-publisher" } }

Esto debería producir un resultado como el siguiente:

Heartbeat user token Token de usuario de latido

Editar el /etc/heartbeat/heartbeat.yml comentando el elastic nombre de usuario y contraseña y habilitar el api_key Así:

output.elasticsearch: ...etc... api_key: "${ES_API_KEY}" #username: "elastic" #password: "" ...etc...

Usaremos el almacén de claves de latido para cargar secretos en tiempo de ejecución. Ahora ejecute este comando para configurar ES_API_KEY variable del almacén de claves:

/usr/share/heartbeat/bin/heartbeat keystore add ES_API_KEY -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Prensa ingresar y cuando se le solicite, péguelo <id>:<api_key> donde el <id> y el <api_key> son los valores de la respuesta del token de usuario que recibió anteriormente.

Paso 5 - Ejecutar Heartbeat [17:37]

systemctl enable heartbeat-elastic; systemctl start heartbeat-elastic;

En un momento, deberías comenzar a ver resultados en Kibana en cualquiera de los dos.Descubrir, Observabilidad, Gestión de pilas > Observabilidad > Monitores.

Paso 6: Configurar otro monitor sin tener que recargar Heartbeat [26:15]

En la terminal, vaya a

cd /etc/heartbeat/monitors.d

Luego copia una de las plantillas deshabilitadas

cp sample.html.yml.disabled html.yml.disabled

Abra el archivo

vi html.yml.disabled

Debería verse así:

Heartbeat new http monitor Nuevo monitor http de latidos del corazón

Y luego hacer los cambios correspondientes

id: Any id name: Any name schedule: Any type of schdule, though i will use cron as an example hosts: ["<the monitor url>]

La siguiente imagen muestra un ejemplo:

Heartbeat new http monitor example Ejemplo de nuevo monitor http de Heartbeat

Ahora, para habilitarlo, podemos usar el siguiente comando

cp html.yml.disabled html.yml

Paso 7 - Configurar un segundo observador [28:24]

En otro servidor/máquina, siga el paso 1 y luego continúe con los comandos para copiar los archivos del primer servidor a este servidor nuevo/actual como se muestra en la siguiente imagen:

Heartbeat Second Observer to copy files from original server to current one Heartbeat Second Observer para copiar archivos del servidor original al actual

y luego edite estos campos para el /etc/heartbeat/heartbeat.yml

A continuación se muestra una imagen de ejemplo:

Heartbeat Second Observer heartbeat.yml file edits Ediciones del archivo heartbeat.yml de Heartbeat Second Observer

Usaremos el almacén de claves de latido para cargar secretos en tiempo de ejecución. Ahora ejecute este comando para configurar ES_API_KEY variable del almacén de claves:

/usr/share/heartbeat/bin/heartbeat keystore add ES_API_KEY -c /etc/heartbeat/heartbeat.yml --path.data /var/lib/heartbeat --path.home /usr/share/heartbeat

Prensa ingresar y cuando se le solicite, péguelo <id>:<api_key> donde el <id> y el <api_key> son los valores de la respuesta del token de usuario que recibió anteriormente.

Ahora ejecuta Heartbeat

systemctl enable heartbeat-elastic.service; systemctl start heartbeat-elastic.service;