Combinación de gráficos y texto 丨 Guía de construcción del sistema de monitoreo de rendimiento Prometheus + Grafana + GreatSQL (Parte 2)

1. Introducción al medio ambiente

El entorno de este artículo y la base de datos utilizada en este artículo sonGreatSQL 8.0.32-24

$ cat /etc/system-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
$ uname -a
Linux gip 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
$ ldd --version
ldd (GNU libc) 2.17

En el artículo anterior [Imagen y texto combinados | Prometheus + Grafana + GreatSQL Guía de construcción del sistema de monitoreo de rendimiento (Parte 1)], presentamos cómo construir un sistema de monitoreo. Este artículo presentará cómo usar la plataforma Grafana y la función de alarma de el módulo AlertManager.

2. Alerta por correo electrónico de Grafana

Aquí tomamos alertas por correo electrónico y usamos el buzón QQ como ejemplo.

1. Habilite el servicio de correo electrónico

Después de iniciar sesión en su buzón QQ, haga clic en Configuración->Cuenta->Habilitar servicio POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV.

archivo

Ya lo he activado. Si no está activado, puedes activarlo. Luego haz clic en , 生成授权码recuerda guardar el código de autorización y luego modifica la configuración del correo electrónico de Grafana.

$ vim /usr/local/prometheus/grafana-10.1.1/conf/defaults.ini 

Utilice /smtpel área donde se encuentra la configuración de correo y modifíquela como se muestra en el siguiente ejemplo.

archivo

Reinicie el servicio Grafana

$ systemctl restart grafana-server.service

A continuación, inicie sesión en la página web de Grafana http://172.17.137.104:3000/y agregue una alerta por correo electrónico.

archivo

Complete Name, Addressesespere la información y haga clic en TestProbar

archivo

Puede ver que se recibió el correo electrónico y que la prueba fue exitosa.

archivo

2. Agregar reglas de alarma

Se pueden agregar reglas de alerta en Grafana. Por ejemplo, creé una conexión GreatSQL. Monitorea este mysql_upvalor. Si es 0, no puede conectarse a GreatSQL.

archivo

Entrando al panel de edición, podemos ver que hay una Alertopción de alarma, y ​​luego hacemos clicCreate alert rule from this panel

archivo

En este momento, ingresará al panel de configuración de reglas de alarma.

Primero, introduzcamos la primera parte设置警报规则名称 , que consiste en establecer el nombre de la regla de alarma.

archivo

(primera parte)

La segunda parte son los datos que mostramos afuera y el Expressionssiguiente paso es configurar las condiciones de alarma.

archivo

(la segunda parte)

El primer ítem last()representa los últimos datos, hay muchas otras opciones como max()indicar el valor máximo, generalmente elegimoslast()

archivo

El segundo ítem es para indicar de qué consulta venimos, porque solo tenemos una así que eligeA

El tercer elemento identifica el valor de activación que queremos monitorear. El juicio de activación es la opción anterior. El de la imagen IS ABOVEindica arriba de esto. Hay varias otras opciones, como IS BELOWdebajo, IS OUTSIDE RANGEfuera de rango y IS WITHIN RANGEdentro de rango. , HAS NO VALPUEsin valor. Aquí elegimos IS ABOVE, la síntesis de expresión es: mysql_updisparar cuando el valor es menor que 1.

La tercera parte es crear la carpeta donde se almacenarán las reglas Foldery los grupos a evaluar, Evaluation grouplas reglas de un mismo grupo se evaluarán de forma secuencial y dentro del mismo intervalo de tiempo.

archivo

(la tercera parte)

Lo que Pending periodindica el retraso después de activar la alarma.

La cuarta sección se utiliza para agregar un Summaryresumen de comentarios, un breve resumen de lo que sucedió y por qué, Descriptionuna descripción de la funcionalidad de la regla de alerta y la Runbook URLURL del runbook. Una página web para guardar el runbook de alertas.

archivo

La quinta parte configura las notificaciones, que se utiliza para agregar etiquetas personalizadas para cambiar el método de enrutamiento de las notificaciones. Si no se establece una política coincidente, todas las instancias de alerta son manejadas por la política predeterminada.

archivo

Después de hacer clic en la esquina superior derecha para guardar la regla, podrá ver la regla de alarma que acaba de configurar en la página.

archivo

3. Pruebe la alerta por correo electrónico

Ahora simule una interrupción de GreatSQL para ver si se activará la regla de alarma y se enviará una alarma por correo electrónico.

$ systemctl stop greatsql

Debido a que lo configuramos en 1 minuto, pasará 1 minuto antes de que se verifique nuevamente el estado de la conexión GreatSQL.

Como puede ver en la imagen a continuación, se ha detectado que GreatSQL no se puede conectar y ha entrado en un estado pendiente.

archivo

Después del tiempo de retraso establecido, la pantalla Firingindica que el correo electrónico ha sido enviado.

archivo

Puede ver que el correo electrónico de alarma se ha recibido en el buzón de QQ.

archivo

Luego iniciamos GreatSQL nuevamente.

$ systemctl start greatsql

Cuando se complete la solución, recibirá un correo electrónico resuelto.1 resolved instances

archivo

3. Alerta DingTalk de Grafana

En artículos anteriores, mencionamos el uso de DingTalk Alert Prometheus + Grafana + DingTalk para implementar un sistema de alarma y monitoreo MySQL independiente , pero el Alertmanager utilizado es el módulo de alarma de Pumi, no Grafana, por lo que aquí presentaremos cómo configurarlo con Grafana. Alerta de DingTalk.

Sin embargo, a partir del 1 de septiembre de 2023, DingTalk ya no admitirá la creación de robots personalizados tanto para grupos internos como no internos . Debe iniciar sesión en el backend de desarrollador de DingTalk y solicitar permisos de desarrollador para crear un robot de aplicación interno. El método específico no lo presentaré aquí. Si lo necesita, puede ir a DingTalk para obtener una introducción detallada.

De acuerdo con el método en Prometheus + Grafana + DingTalk para implementar un sistema de alarma y monitoreo MySQL independienteContact points , primero cree un robot DingTalk y luego agregue un punto de contacto a Grafana.

archivo

A continuación, complete Nameel Integrationcuadro desplegable y busque DingDingla URL de DingTalk Robot.Webhook:

archivo

Message TypeHay dos opciones, una es el modo de tarjeta, la otra es el modo de enlace, así como el título del título y el mensaje del mensaje. Luego haga clic en Probar para probar y ver si se puede enviar la información de la alarma. En este momento, el robot DingTalk enviará la prueba de alarma. No Si tiene alguna pregunta, haga clic en el botón azul a continuaciónSave contact point

archivo

Si deseas elegir alertas de DingTalk, puedes Notification policiesseleccionar en las opcionesEdit

archivo

Cámbielo Default contact pointal método de alerta DingTalk, haga clic después de la modificación.Update default policy

archivo

A continuación, para realizar pruebas, desactivamos la simulación de GreatSQL para ver si se enviará un mensaje de alarma.

$ systemctl stop greatsql

archivo

No hay problema, el mensaje de alarma se recibió correctamente.

4. Alertas por correo electrónico del administrador de alertas

¿Aún recuerdas el Alertmanager que instalamos en el artículo anterior? De hecho, también tiene una función de alarma. Prometheus incluye un módulo de alarma, que es nuestro AlertManager. Alertmanager se utiliza principalmente para recibir información de alarma enviada por Prometheus. Admite una variedad de canales de notificación de alarma y es fácil deduplicar, eliminar ruido, agrupar, etc., la información de alarma. En el artículo anterior, también agregamos algunas reglas. Si lo olvida, puede volver a leer el artículo anterior. Alertmanager también se puede usar para alertar a DingTalk. Hay una introducción a la implementación de un sistema de alarma y monitoreo MySQL independiente en Prometheus. +Grafana+DingTalk. Aquí está. Presentamos la alerta por correo electrónico de Alertmanager

El proceso de Prometeo que activa una alarma

archivo

1. Configurar AlertManager

El archivo de configuración predeterminado de AlertManager es alertmanager.ymly la ruta es. /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.ymlLuego, configuremos el uso del correo electrónico para notificar información de alarma. Aquí, tomamos el buzón QQ como ejemplo. La configuración es la siguiente:

global:
  resolve_timeout: 5m
  smtp_from: '填写邮箱@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '填写邮箱@qq.com'
  smtp_auth_password: '填写QQ邮箱授权码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '填写邮箱@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

yml tiene requisitos de sangría, verifique cuidadosamente

Una introducción detallada a los parámetros clave:

global

Configuración global, configura principalmente métodos de alarma, como correo electrónico, webhook, etc.

  • resolve_timeout: Tiempo de espera, predeterminado 5 min.

  • smtp_auth_password: Recuerde el código de autorización del buzón de correo QQ y la contraseña de inicio de sesión de la cuenta que no es QQ

  • smtp_require_tls: Ya sea que utilice tls, puede optar por activarlo o desactivarlo según el entorno. Si se informa un error email.loginAuth failed: 530 Must issue a STARTTLS command first, debe establecerse en verdadero. Es importante tener en cuenta que si tls está habilitado y se informa un error starttls failed: x509: certificate signed by unknown authority, debe configurar insecure_skip_verify: true en email_configs para omitir la verificación de tls.

ruta

Estrategia de distribución utilizada para establecer alertas.

  • group_by: Se utiliza para la agregación de grupos. Las notificaciones de alarma se agrupan por etiqueta. Las notificaciones de alarma con la misma etiqueta o el mismo nombre de alarma (nombre de alerta) se agregan en un grupo y luego se envían como una sola notificación. Si desea deshabilitar la agregación por completo, puede configurar group_by: [...]
  • group_wait: Cuando se crea un nuevo grupo de alarmas, debe esperar 'group_wait' antes de enviar la notificación inicial. Esto garantiza que se puedan agregar más alarmas con la misma etiqueta antes de enviarlas y esperar, y finalmente fusionarlas en una notificación para enviar.
  • group_interval: Después de enviar la primera notificación de alarma y recibir la última alarma del grupo en el nuevo ciclo de evaluación, debe esperar el tiempo 'group_interval' antes de comenzar a enviar nuevas alarmas activadas para el grupo. Puede entenderse simplemente como, grupo Es equivalente a un canal.
  • repeat_interval: Después de enviar correctamente la notificación de alarma, si el problema no se ha solucionado, es necesario repetir el intervalo nuevamente.
  • receiver: Configure el receptor de mensajes de alarma, correspondiente a la configuración siguiente. Por ejemplo, correo electrónico, wechat, slack, webhook y otros métodos de notificación de mensajes de uso común.

receptores

Configurar la información del receptor de información de alarma

  • to: Recibir correo electrónico de alerta
  • send_resolved: Notificación después de la recuperación de fallas

inhibir_reglas

Configuración de regla de supresión que deshabilitará las alertas que coincidan con un conjunto (objetivo) cuando haya alertas que coincidan con otro conjunto (fuente)

Una vez completada la configuración, simplemente reiniciesystemctl restart alertmanager.service

Si el inicio falla, puede solucionarlo usted mismo journalctl -u alertmanager.service -fy prestar atención para verificar si hay problemas de sangría.

A continuación, puede configurar las reglas de alerta de AlertManager. También mencionamos esto en el artículo anterior y también creamos una carpeta de reglas para almacenar las reglas, así que simplemente siga el método del artículo anterior.

2. Pruebe la alerta por correo electrónico

A continuación, iniciamos sesión en http://172.17.137.104:9090/rulesRules of Prometheus para ver si se han agregado varias alarmas.

archivo

Aquí hay una descripción del estado de alarma de Alerta Prometheus, que tiene tres estados: Inactive, Pending,Firing

  • Inactive: Estado inactivo, indica que está siendo monitoreado, pero aún no se ha activado ninguna alarma.
  • Pending: Indica que esta alarma debe activarse. Dado que las alarmas se pueden agrupar, suprimir/suprimir o silenciar/silenciar, esperan verificación y pasarán al estado Disparo una vez que pasen todas las verificaciones.
  • Firing: envíe la alerta al AlertManager, que enviará la alerta a todos los destinatarios según lo configurado. Una vez que se borra la alarma, el estado cambia a Inactivo y el ciclo continúa.

archivo

A continuación, cerramos GreatSQL para mysql_up = 0activar la regla de alarma y ver si se enviará un correo electrónico de alarma.

$ systemctl stop greatsql

Después de detener el servicio, la página de alerta 绿色 Inactivecambia de estado a estado 黄色 Pendingy continúa esperando hasta que cambie a 红色 Firingestado, enviando así información de alarma a AlertManager. En este momento, AlertManager enviará alertas por correo electrónico a los destinatarios de acuerdo con las reglas de configuración.

archivo

AmarilloPendiente

archivo

Disparo rojo

Luego recibimos el correo electrónico de advertencia.

archivo

Como puede ver en la imagen de arriba, el título y el cuerpo de la plantilla de correo electrónico predeterminado incluirán la información de etiquetas y anotaciones previamente configuradas y se enviarán automáticamente cada 5 minutos hasta que el servicio vuelva a la normalidad y se levante la alarma. Se enviará una alarma. Descartar el mensaje.

archivo

Después de que se active la alarma, los correos electrónicos de alarma se enviarán automáticamente cada 5 m (cuando el servicio no se restablezca a la normalidad), lo cual está determinado por la configuración alertmanager.yml.route -> repeat_interval: 5m

3.Cambiar el contenido del correo electrónico de AlertManager

Este paso no es necesario, si quieres que el contenido del correo electrónico sea más elegante e intuitivo puedes consultarlo.

Aunque se ha incluido toda la información principal, el contenido del formato de correo electrónico puede ser más elegante e intuitivo. AlertManager también admite la modificación de configuraciones de plantillas de correo electrónico personalizadas.

Necesitamos crear un nuevo archivo de plantilla, que se llamaemail.tmpl

$ vim /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/email.tmp

Escribe lo siguiente

{{ define "email.from" }}填入邮箱@qq.com{{ end }}
{{ define "email.to" }}填入邮箱@qq.com{{ end }}
{{ define "email.to.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
<h2>@告警通知</h2>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }} <br>
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
<h2>@告警恢复</h2>
告警程序: prometheus_alert <br>
故障主机: {{ .Labels.instance }}<br>
故障主题: {{ .Annotations.summary }}<br>
告警详情: {{ .Annotations.description }}<br>
告警时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }}<br>
恢复时间: {{ .EndsAt.Local.Format "2006-01-02 15:04:05" }}<br>
{{ end }}{{ end -}}
{{- end }}

El archivo de plantilla anterior configura tres variables de plantilla email.from, email.toy , a las que se puede hacer referencia directamente en el archivo.email.to.htmlalertmanager.yml

Aquí email.to.htmlestá el contenido del correo electrónico que se enviará, que admite formatos HTML y Texto. Para mostrarlo de manera hermosa, se utiliza el formato HTML para mostrar simplemente la información. La siguiente {{ range .Alerts }}es una sintaxis de bucle, que se utiliza para obtener información de alertas coincidentes en un bucle. La información de alerta a continuación es la misma que la información de visualización de correo electrónico predeterminada anterior, excepto que se extraen algunos valores centrales para su visualización. Luego, debe agregar alertmanager.ymlel archivo templatesde configuración de la siguiente manera:

$ vim /usr/local/prometheus/alertmanager-0.26.0.linux-amd64/alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_from: '填入邮箱@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '填入邮箱@qq.com'
  smtp_auth_password: '填写QQ邮箱授权码'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
templates:
  - '/usr/local/prometheus/alertmanager-0.26.0.linux-amd64/email.tmp'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '{{ template "email.to" . }}'
    html: '{{ template "email.to.html" . }}'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

Luego simulamos una interrupción de GreatSQL para activar la regla de alarma y ver si se envía un correo electrónico de alarma.

archivo

No hay problema. He recibido correctamente el correo electrónico de alerta.

Bien, ese es el final de la guía de construcción del sistema de monitoreo de rendimiento Prometheus + Grafana + GreatSQL, comencemos ~


Disfruta de GreatSQL :)

Acerca de GreatSQL

GreatSQL es una base de datos nacional independiente de código abierto adecuada para aplicaciones de nivel financiero. Tiene muchas características principales, como alto rendimiento, alta confiabilidad, alta facilidad de uso y alta seguridad. Puede usarse como un reemplazo opcional de MySQL o Percona Server. y se utiliza en entornos de producción online, completamente gratuito y compatible con MySQL o Percona Server.

Enlaces relacionados: Comunidad GreatSQL Gitee GitHub Bilibili

Gran comunidad SQL:

imagen

Sugerencias y comentarios sobre recompensas de la comunidad: https://greatsql.cn/thread-54-1-1.html

Detalles de la presentación del premio del blog comunitario: https://greatsql.cn/thread-100-1-1.html

(Si tiene alguna pregunta sobre el artículo o tiene ideas únicas, puede ir al sitio web oficial de la comunidad para preguntarlas o compartirlas ~)

Grupo de intercambio técnico:

Grupo WeChat y QQ:

Grupo QQ: 533341697

Grupo WeChat: agregue GreatSQL Community Assistant (ID de WeChat:) wanlidbccomo amigo y espere a que el asistente de la comunidad lo agregue al grupo.

Lei Jun: La versión oficial del nuevo sistema operativo de Xiaomi, ThePaper OS, ha sido empaquetada. La ventana emergente en la página de lotería de la aplicación Gome insulta a su fundador. Ubuntu 23.10 se lanza oficialmente. ¡También podrías aprovechar el viernes para actualizar! Episodio de lanzamiento de Ubuntu 23.10: La imagen ISO fue "retirada" urgentemente debido a que contenía discurso de odio. Un estudiante de doctorado de 23 años solucionó el "error fantasma" de 22 años en Firefox. Se lanzó el escritorio remoto RustDesk 1.2.3. Wayland mejorado para soportar TiDB 7.4 Lanzamiento: Oficial Compatible con MySQL 8.0. Después de desconectar el receptor USB Logitech, el kernel de Linux falló. El maestro usó Scratch para frotar el simulador RISC-V y ejecutó con éxito el kernel de Linux. JetBrains lanzó Writerside, una herramienta para la creación de documentos técnicos.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/GreatSQL/blog/10120061
Recomendado
Clasificación