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:
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
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
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.
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实战项目