[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.
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
#启动
./alertmanager --config.file=alertmanager.yml
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
- Visite ip+port, como http://ip:9093/#/alerts
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.
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.
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"
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.
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
Eche un vistazo a Alertmanager.
Bien, comencemos a verificar la función de alarma.
Primero, detengamos la aplicación Springboot.
Hemos visto el servicio en Prometheus.
Se encontró una alarma en Alertmanager.
Revisar correo:
OK, ya está aquí, ¡recuerda apoyar al blogger!