
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:
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:
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í:
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:
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 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:
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;