APM con Elasticsearch 8.x - Parte 3: Alertas de correo electrónico mediante el conector de registro del servidor

Publicado el 10/11/2022

« Ver todas las conferencias Contáctenos
APM with Elasticsearch 8.x - Part 3: Email Alerts via Server Log Connector

Introducción

Código en Github: Elasticsearch y monitorización del rendimiento de las aplicaciones

Vamos a configurar Monitoreo del rendimiento de las aplicaciones con Elasticsearch y Kibana. Si aún no tiene configurados APM, Elasticsearch y Kibana,Siga estas instrucciones para la Parte 1 y Esto para la Parte 2.

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

Requisitos

Pasos

Paso 1: Usar el registro del servidor para escribir alertas en el archivo kibana.log [02:12]

Inicie sesión en Kibana y vaya a Observabilidad > Alertas > reglas del administrador, y haga clic en el ícono del lápiz en la alerta de recuento de errores que configuramos en el video anterior.

alt text Editar regla

Desplácese hacia abajo y haga clic en Agregar un conector, Debería mostrar algo similar a lo que se muestra a continuación.

alt text Add a Connector

y darle un nombre como conector-2, y luego presione ahorrar.Ahora haz clic en "Guardar" en la esquina inferior derecha para guardar los detalles de conexión.

Para ver los registros publicados, vaya a la terminal del servidor Kibana y ejecute lo siguiente.

cd /var/log/kibana vi kibana.log

Ahora vaya a Kibana para configurar una alerta para el umbral de tasa de latencia. Seleccione conector-2 para la opción de conector y elija los detalles restantes como se muestra en la imagen a continuación

alt text Conexión de tasa de latencia

Haga lo mismo para la alerta de transacción fallida.

alt text Alerta de transacción fallida

Paso 2: usar logstash para ingerir alertas del archivo kibana.log [09:20]

Instale logstash con el siguiente comando en su terminal

sudo apt-get update && sudo apt-get install logstash

Para confirmar que Logstash se instaló correctamente, ejecute el siguiente comando.

cd /usr/share/logstash/bin/ ls

Deberías obtener algo similar a esto:

alt text Archivos binarios de Logstash

Utilice el siguiente comando para ejecutar logstash.

cd ~

/usr/share/logstash/bin/logstash -e 'input { file { type => "json" codec => "json" path => "/var/log/kibana/kibana.log" start_position => beginning } } output { stdout {} }'

Paso 3: Use logstash para publicar alertas en Mailtrap o un servidor SMTP [14:50]

Crea una cuenta en Mailtrap como se muestra en el video. Usarás la URL del servidor SMTP como correo electrónico. Ahora regresa a la terminal y ejecuta el siguiente comando.

/usr/share/logstash/bin/logstash -e 'input { file { type => "json" codec => "json" path => "/var/log/kibana/kibana.log" start_position => beginning } } output { email { to => "<user@example.com>" from => "<user@example.com>" subject => "Alert: %(message)" body => "%(message)" authentication => "plain" address => "smtp.mailtrap.io" domain => "smtp.mailtrap.io" port => 2525 username => "<Your Username>" password => "<Your Password>" } }'

Paso 4 - Salida condicional (por ejemplo, solo correo electrónico [registro][nivel] == ERROR) [20:20]

Si solo desea el error de nivel de registro, utilice el siguiente comando.

/usr/share/logstash/bin/logstash -e 'input { file { type => "json" codec => "json" path => "/var/log/kibana/kibana.log" start_position => beginning } } output { if [log][level] == "ERROR" email { to => "<user@example.com>" from => "<user@example.com>" subject => "Alert: %{message}" body => "%{message}" authentication => "plain" address => "smtp.mailtrap.io" domain => "smtp.mailtrap.io" port => 2525 username => "<Your Username>" password => "<Your Password>" } }'

Paso 5: Usar el filtro grok para formatear los mensajes [22:05]

Para utilizar el filtro grok, regrese a la terminal y ejecute el siguiente comando.

/usr/share/logstash/bin/logstash -e 'input { file { type => "json" codec => "json" path => "/var/log/kibana/kibana.log" start_position => beginning } } filter { grok { match => { "message" => "Server log: %(DATA:apmreason):;;- Service name: %(DATA:apmservice);- } } } output { email { to => "<user@example.com>" from => "<user@example.com>" subject => "Alert: %{apmservice} %{apmreason}" body => "%{message}" authentication => "plain" address => "smtp.mailtrap.io" domain => "smtp.mailtrap.io" port => 2525 username => "<Your Username>" password => "<Your Password>" } }'