[Sistema de monitoreo] Promethus integra monitoreo de Alertmanager y notificaciones de alarma por correo electrónico

[Sistema de monitoreo] Promethus integra monitoreo de Alertmanager y notificaciones de alarma por correo electrónico

Alertmanager es un software de código abierto para gestionar y monitorear alertas. Está estrechamente integrado con Prometheus, un popular sistema de alerta y monitoreo de código abierto. Alertmanager recibe alertas y notificaciones de múltiples fuentes y decide cómo procesar y enviar esas alertas en función de un conjunto de reglas de configuración.

Insertar descripción de la imagen aquí

Por tanto, la funcionalidad de Alertmanager se puede resumir en:

  • Reciba alertas de los sistemas de vigilancia.
  • Procesar y deduplicar las alertas recibidas según las reglas configuradas
  • Enviar alerta de notificación

Alertmanager admite varios métodos de notificación, como correo electrónico, DingTalk, etc.

Una regla de alarma en Prometeo consiste en

  • Nombre de la alarma: los usuarios deben nombrar la regla de alarma
  • Reglas de alarma: Definidas principalmente por PromQL, que indican cuánto tiempo dura (Durante) el resultado de la consulta de expresión (PromQL) antes de activar una alarma.

Características clave:

  • Agrupación: combine información detallada de alarmas en una sola notificación, en algunos casos, como cuando se activa una gran cantidad de alarmas al mismo tiempo debido a un tiempo de inactividad del sistema.
  • Supresión: cuando se envía una alarma, puede detener el mecanismo de envío repetido de otras alarmas causadas por esta alarma para evitar un bombardeo de alarma.
  • Silencio: silencia la alarma según la etiqueta. Si la alarma recibida se ajusta a la configuración de silencio, Alertmanager no enviará una notificación de alarma.

Instalación del administrador de alertas

1.下载Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz

2.解压
tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz

Insertar descripción de la imagen aquí

#启动
./alertmanager --config.file=alertmanager.yml

#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
  • Visite ip+port, como http://ip:9093/#/alerts

Insertar descripción de la imagen aquí

Acerca del proceso de uso de Alertmanager:

  • Rules.yaml de Prometheus escribe reglas de alerta, configura Prometheus y define bajo qué circunstancias se le alertará.
  • Configure Alertmanager, agregue programas de recepción de correo electrónico, DingTalk o SMS y especifique el destino y el medio de notificación para las notificaciones de alarma.
  • Establezca enrutamiento de alarmas, defina métodos de enrutamiento de alarmas para distinguir y clasificar niveles de alarma y establezca diferentes métodos de notificación de incendios para diferentes objetivos de alarma.

Tres estados de Alerta:

pending:警报被激活,但是低于配置的持续时间。这里的持续时间即rule里的FOR字段设置的时间。改状态下不发送报警。
firing:警报已被激活,而且超出设置的持续时间。该状态下发送报警。
inactive:既不是pending也不是firing的时候状态变为inactive

El proceso de Prometeo que activa una alarma:

prometheus—>umbral de activación—>duración excedida—>administrador de alertas—>agrupación|supresión|silencio—>tipo de medio—>correo|DingTalk|WeChat, etc.

Insertar descripción de la imagen aquí

Bien, ahora que hemos implementado Alertmanager, nuestro requisito es monitorear la aplicación. Si la aplicación se bloquea, active el envío de un correo electrónico al desarrollador.

Primero, vaya al directorio raíz de Promethus: cree el archivo rule.yml.

Insertar descripción de la imagen aquí

Primero, introduzcamos brevemente las propiedades de configuración de rule.yaml.

groups: # 告警规则组
- name: server-alarm
  rules: #规则,可以配置多个alert告警
  
  - alert: # 告警名称
    expr:  # 告警表达式,基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
    for:  # 评估等待时间,可选,用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警 的状态为pending。
    labels: #自定义标签,允许用户指定要附加到告警上的一组附加标签。
      severity:  # 告警严重程度
    annotations: #用于指定一组附加信息,比如用于描述告警详细信息的文字等
      summary: # 告警摘要
      description: # 告警详细描述

La gravedad tiene los siguientes valores de uso común.

  • Crítico (grave), utilizado para describir situaciones que afectan las funciones principales del sistema o incluso provocan que el sistema falle.
  • Una advertencia se utiliza para describir una situación en la que existe una excepción pero no provoca que el sistema falle ni detenga el servicio.
  • info (información) se utiliza para describir información de estado normal correspondiente al funcionamiento normal del negocio.
  • depuración, utilizado para describir información de depuración que se puede utilizar para solucionar problemas.
#配置规则
groups:
- name: server-alarm
  rules:
  - alert: "InstanceDown"
    expr: up == 0
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "{
    
    { $labels.instance }}"
      description: "{
    
    { $labels.instance }} of job {
    
    { $labels.job }} has been down for more than 1 minutes."

Configure Prometheus para asociar la dirección de Alertmanager y habilitar reglas de reglas.

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 192.168.140.133:9093
rule_files:
  - "rule.yml"

Insertar descripción de la imagen aquí

Actualizar dinámicamente la configuracióncurl -X POST http://localhost:9090/-/reload

Configure el archivo de configuración alertmanager.yml de Alertmanager

alertmanager.yml contiene principalmente dos partes: ruta + receptores

  • La información de la alarma ingresará al árbol de enrutamiento desde la ruta de nivel superior (ruta) en la configuración, y la información de la alarma se enviará al receptor correspondiente de acuerdo con las reglas de enrutamiento.

Edite el archivo alertmanager.yml y guárdelo.

Insertar descripción de la imagen aquí

global:
  smtp_smarthost: 'smtp.163.com:25' # SMTP服务器地址和端口
  smtp_from: '[email protected]' # 显示在邮件“发件人”字段中的地址
  smtp_auth_username: '[email protected]' # STMP认证时使用的用户名
  smtp_auth_password: 'TCNTXJTZUXJHJJPX' # SMTP认证时使用的密码,不是密码
  smtp_require_tls: false # SMTP服务器是否需要TLS加密

route:
  receiver: 'email' # 发送告警通知的收件人,和下面的接受者名称匹配
  group_wait: 10s # 在发送前等待各个警报的时间
  group_interval: 30s # 相同警报名称的警报发送间隔
  repeat_interval: 10m # 重复发送警报的时间间隔
  group_by: ['alertname'] # 根据警报名分组告警接收者

# 告警接收者
receivers:
- name: 'email' # 接收者名称
  email_configs:
  - to: '[email protected]' # 接收告警邮件的收件人
  • Reiniciar el administrador de alertas
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &

Verifique la configuración de Prometheus y si las reglas están vigentes

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Eche un vistazo a Alertmanager.

Insertar descripción de la imagen aquí

Bien, comencemos a verificar la función de alarma.

Primero, detengamos la aplicación Springboot.

Insertar descripción de la imagen aquí

Hemos visto el servicio en Prometheus.

Insertar descripción de la imagen aquí

Se encontró una alarma en Alertmanager.

Insertar descripción de la imagen aquí

Revisar correo:

Insertar descripción de la imagen aquí

OK, ya está aquí, ¡recuerda apoyar al blogger!
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47533244/article/details/132780119
Recomendado
Clasificación