Spring Boot 应用可视化监控(Prometheus + Grafana)
1、Spring Boot 应用暴露监控指标,添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_spring_boot</artifactId>
<version>0.0.26</version>
</dependency>3
然后,在启动类 Application.java 添加如**解:
@SpringBootApplication
@EnablePrometheusEndpoint
@EnableSpringBootMetricsCollector
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
访问:http://192.168.10.213:6010/prometheus,可以看到
Prometheus 格式的指标数据
2、Prometheus 采集 Spring Boot 指标数据
首先,获取 Prometheus 的 Docker 镜像:
docker pull prom/prometheus
然后,编写配置文件 prometheus.yml :
global:
scrape_interval: 10s
scrape_timeout: 10s
evaluation_interval: 10m
scrape_configs:
- job_name: prometheus
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- 127.0.0.1:9090
- job_name: 02_lzmh_microservice_base_service_docker
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /prometheus
scheme: http
basic_auth:
username: lzmh
password: lzmh
static_configs:
- targets:
- 192.168.10.213:6010 #此处填写 Spring Boot 应用的 IP + 端口号
接着,启动 Prometheus :
docker run -d -p 9090:9090 \
-u root \
-v /opt/prometheus/tsdb:/etc/prometheus/tsdb \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
--privileged=true prom/prometheus \
--storage.tsdb.path=/etc/prometheus/tsdb \
--storage.tsdb.retention=7d \
--config.file=/etc/prometheus/prometheus.yml
最后,访问 http://192.168.10.124:9090/targets ,
检查 Spring Boot 采集状态是否正常。
3、Grafana 可视化监控数据
首先,获取 Grafana 的 Docker 镜像:
docker pull grafana/grafana
然后,启动 Grafana:
docker run -d -p 3000:3000 \
-v /opt/grafana:/var/lib/grafana \
-e "GF_SMTP_ENABLED=true" \
-e "GF_SMTP_HOST=smtp.139.com:25" \
-e "GF_SMTP_USER=[email protected]" \
-e "GF_SMTP_PASSWORD=like110120" \
-e "GF_SMTP_FROM_ADDRESS=[email protected]" \
--privileged=true grafana/grafana
接着,访问 http://localhost:3000/ 配置 Prometheus 数据源:
Grafana 登录账号 admin 密码 admin
4、常用Prometheus 表达式
QPS[5分钟]
rate(lz_http_requests_total{job="02_lzmh_microservice_base_service_docker"}[5m]) > 0
QPS[5分钟],根据handler分组
sum(rate(lz_http_requests_total{job="lzmh_microservice_weixin_applet_api"}[5m])) by (handler) > 0
平均响应时间[5分钟]
(
rate(lz_http_response_time_milliseconds_sum{job="02_lzmh_microservice_base_service_docker"}[5m])
/
rate(lz_http_response_time_milliseconds_count{job="02_lzmh_microservice_base_service_docker"}[5m])
) > 0
平均响应时间[5分钟],根据handler分组
sum(
rate(lz_http_response_time_milliseconds_sum{job="lzmh_microservice_weixin_applet_api"}[5m])
/
rate(lz_http_response_time_milliseconds_count{job="lzmh_microservice_weixin_applet_api"}[5m])
) by (handler) > 0