SpringBoot + Prometheus + Grafana realiza el monitoreo y la alarma de aplicaciones

Haga clic en la fuente azul de arriba y seleccione "Cuenta oficial de Star"

Artículos de alta calidad, entregados de inmediato

Siga la cuenta oficial detrás del escenario para responder al pago o al centro comercial para obtener información real del proyecto + video

Autor: yo fumo

cnblogs.com/2YSP/p/12827487.html 

1. Antecedentes

SpringBoot tiene muchas soluciones de monitoreo de aplicaciones, y SpringBoot + Prometheus + Grafana es actualmente una de las soluciones más utilizadas. La relación entre los tres es la siguiente:

tabla de relaciones

Dos, desarrollar la aplicación SpringBoot

Primero, cree un proyecto SpringBoot, el archivo pom es el siguiente:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<!-- https://mvnrepository.com/artifact/io.prometheus/simpleclient_spring_boot -->
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.8.1</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Nota:  La versión SpringBoot aquí es 1.5.7.RELEASE. La razón por la cual no se usa la última versión 2.X es porque la última versión simpleclient_spring_boot solo es compatible con 1.5.X, no estoy seguro de si la versión 2.X puede ser compatible.

Se agregaron anotaciones a la clase de inicio MonitorDemoApplication

package cn.sp; 
 
import io.prometheus.client.spring.boot.EnablePrometheusEndpoint; 
import io.prometheus.client.spring.boot.EnableSpringBootMetricsCollector; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
@EnablePrometheusEndpoint 
@EnableSpringBootMetricsCollector 
@SpringBootApplication 
public class MonitorDemoApplication { 
 
    public static void main(String[] args) { 
        SpringApplication.run(MonitorDemoApplication.class, args); 
    } 
 
} 

Archivo de configuración application.yml

server: 
  port: 8848 
spring: 
  application: 
    name: monitor-demo 
 
security: 
  user: 
    name: admin 
    password: 1234 
  basic: 
    enabled: true 
    # 安全路径列表,逗号分隔,此处只针对/admin路径进行认证 
    path: /admin 
 
# actuator暴露接口的前缀 
management: 
  context-path: /admin 
  # actuator暴露接口使用的端口,为了和api接口使用的端口进行分离 
  port: 8888 
  security: 
    enabled: true 
    roles: SUPERUSER 

Código de prueba TestController

@RequestMapping("/heap/test")
@RestController
public class TestController {
 
    public static final Map<String, Object> map = new ConcurrentHashMap<>();
 
    @RequestMapping("")
    public String testHeapUsed() {
        for (int i = 0; i < 10000000; i++) {
            map.put(i + "", new Object());
        }
        return "ok";
    }
}

La lógica aquí es crear una gran cantidad de objetos y guardarlos en el mapa para aumentar el uso de la memoria del montón después de solicitar esta interfaz, que es conveniente para probar las alarmas de correo electrónico más adelante.

Después de iniciar el proyecto, puede ver muchos puntos finales en IDEA, como se muestra en la figura:

Al principio, mi IDEA no mostraba estos puntos finales, pero luego descubrí que la versión de la idea que estaba usando era demasiado antigua, o 2017.1,
y esto requiere idea2017.2 o superior para poder verlo.

Más tarde, tuve que descargarlo e instalarlo de nuevo, y me llevó mucho tiempo. . . .

Después del inicio, visite http: // localhost: 8888 / admin / prometheus para ver los indicadores de monitoreo expuestos por el servicio. Nota:

Debido a que la autenticación de seguridad está activada, debe solicitar que ingrese la cuenta / contraseña para acceder a esta URL. Si solicita 404, verifique si la dirección solicitada es correcta. Si no establece management.context-path, el valor predeterminado la dirección es http: // ip: puerto / prometheus

Tres, instala Prometheus

enlace de descarga

https://prometheus.io/download/

Este artículo descarga la versión de Windows de prometheus-2.17.2.windows-amd64.tar.gz.

Después de la descompresión, modifique el archivo prometheus.yml para configurar la información del objetivo para la recopilación de datos.

scrape_configs: 
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. 
  # - job_name: 'prometheus' 
 
    # metrics_path defaults to '/metrics' 
    # scheme defaults to 'http'. 
 
    # static_configs: 
    # - targets: ['localhost:9090'] 
  - job_name: 'monitor-demo' 
    scrape_interval: 5s # 刮取的时间间隔 
    scrape_timeout: 5s  
    metrics_path: /admin/prometheus 
    scheme: http  
    basic_auth: #认证信息 
      username: admin 
      password: 1234 
    static_configs: 
      - targets: 
        - 127.0.0.1:8888  #此处填写 Spring Boot 应用的 IP + 端口号

Para obtener más información sobre la configuración, consulte la documentación oficial.

Ahora puede iniciar Prometheus. Ingrese la línea de comando: prometheus.exe --config.file = prometheus.yml para
visitar http: // localhost: 9090 / targets para verificar si el estado de la colección Spring Boot es normal.

Cuarto, instale Grafana

enlace de descarga

https://grafana.com/grafana/download

Este artículo utiliza la versión de Windows grafana-6.3.3.windows-amd64.zip.

Después de la descompresión, ejecute grafana-server.exe en el directorio bin para comenzar, y el navegador podrá acceder a http: // localhost: 3000 para ver la página de inicio de sesión. La contraseña predeterminada de la cuenta es admin / admin.

Ahora comience a crear su propio panel de monitoreo visual.

1. Configure la fuente de datos

2. Crea un panel

3. Complete los puntos de índice recopilados

Nota:  Los puntos indicadores aquí no se pueden completar de manera casual, deben existir y se pueden ver en Prometheus. 4. Seleccione el estilo del gráfico.
5. Complete la descripción del título.

Finalmente, haga clic en Guardar en la esquina superior derecha e ingrese el nombre de Dashboad.

Sugerencias:  el diseño del gráfico aquí se puede arrastrar con el mouse

Cinco, agregue alarma por correo electrónico

En un proyecto real, cuando un indicador monitoreado excede un umbral (por ejemplo, el uso de CPU es demasiado alto), se espera que el sistema de monitoreo alertará automáticamente al personal de operación y mantenimiento a través de SMS, DingTalk y correo electrónico. Grafana admite esta función .

Paso 1:  haga clic en [Alertas] ——> [Canales de notificación] para agregar canales de notificación

Crear canal
editar

Hay muchas opciones para Tipo aquí, incluyendo webhook, Dingding, etc. Aquí, tomamos el correo electrónico como ejemplo.

Paso 2:  configuración del correo electrónico

Grafana se ejecuta por defecto usando defaults.ini en el directorio conf como archivo de configuración. De acuerdo con las recomendaciones oficiales, no debemos cambiar defaults.ini sino crear un nuevo archivo de configuración custom.ini en el mismo directorio.

Tome el buzón de correo empresarial de Tencent como ejemplo, la configuración es la siguiente:

#################################### SMTP / Emailing #####################
[smtp]
enabled = true
host = smtp.exmail.qq.com:465
user = [email protected]
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = XXX
cert_file =
key_file =
skip_verify = true
from_address = [email protected]
from_name = Grafana
ehlo_identity = ininin.com

Después de eso, exija pesada 启 Grafana, instrucción grafana-server.exe -config = E: \ file \ grafana-6.3.3 \ conf \ custom.ini

Paso 3:  agregar alerta al indicador

Configurar reglas de alerta
Configurar el método y la información de notificación

Evaluar cada

Indica la tasa de detección, aquí para probar el efecto, cambie a 1 segundo

Para

Si la regla de alerta está configurada con Para y la consulta viola el umbral configurado, primero cambiará de OK a Pendiente. No se enviará ninguna notificación de OK a Pendiente Grafana. Una vez que el tiempo de activación de la regla de alerta excede la duración, cambiará a Alerta y enviará una notificación de alerta.

Condiciones

Cuando representa el tiempo, de representa la condición, está arriba representa el valor de activación
al mismo tiempo, habrá una línea roja después de que el ajuste esté arriba.

Si no hay datos o todos los valores son nulos

Si no hay datos o todos los valores están vacíos, seleccione aquí activar alarma

Si error de ejecución o tiempo de espera

Si la ejecución es incorrecta o en horas extras, elija activar la alarma aquí

Nota: La  próxima vez que se active, como 10 segundos después, no volverá a activarse para evitar que se produzcan tormentas de alarma.

Paso 4: Después de la
solicitud de  prueba http: // localhost: 8848 / heap / test interface, la memoria sube por encima del umbral establecido y luego se recibe un correo electrónico de alarma.

Correo de alarma

La imagen aquí no se muestra, no entiendo por qué.

Seis, resumen

Este conjunto de funciones de monitoreo es bastante poderoso, pero Prometheus tiene muchas expresiones.

Adjunte algunos enlaces:

  • https://prometheus.io/docs/introduction/first_steps/

  • https://grafana.com/docs/grafana/latest/

  • https://github.com/2YSP/monitor-demo

}



有热门推荐????
10个解放双手实用在线工具,有些代码真的不用手写!微信小程序练手实战:前端+后端(Java)
又一神操作,SpringBoot2.x 集成百度 uidgenerator搞定全局ID为什么阿里不允许用Executors创建线程池,而是通过ThreadPoolExecutor的方式?
为什么要在2021年放弃Jenkins?我已经对他失去耐心了...
Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器

点击阅读原文,前往学习SpringCloud实战项目

Supongo que te gusta

Origin blog.csdn.net/qq_17231297/article/details/114697181
Recomendado
Clasificación