本文默认认为读者已搭建好完整的Spring Cloud 服务,本文仅在已有服务集群中引入 Prometheus 监控项目
注册发现基于Eureka
- Eureka Server 导入依赖
Prometheus 不支持 Eureka ,需要使用consul 适配器模拟consul服务
<dependency>
<groupId>at.twinformatics</groupId>
<artifactId>eureka-consul-adapter</artifactId>
<version>1.3.0</version>
</dependency>
业务服务修改
- 引入依赖
<!-- Micrometer Prometheus registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
- 添加Bean
@Configuration
@ConditionalOnClass({MeterRegistry.class})
static class MeterRegistryConfig {
@Value("${spring.application.name}")
private String applicationName = "APP_NAME";
@Bean
MeterRegistryCustomizer<MeterRegistry> appMetricsCommonTags() {
return registry -> registry.config().commonTags("application", applicationName);
}
}
- application.yml 添加配置
开放 Prometheus Endpoint
management:
endpoints:
web:
# https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#production-ready-endpoints-exposing-endpoints
exposure:
include: prometheus
安装 Prometheus
配置文件:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'spring-actuator'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
scheme: http
consul_sd_configs:
#consul 地址
- server: '192.168.1.3:8761'
#username: 'username' eureka 如有权限控制需要打开
#password: 'pwd'
scheme: http
services: [SERVICE_NAME1,SERVICE_NAME2]
启动脚本
docker run -d --net host -v /data/prometheus-data:/prometheus-data prom/prometheus --config.file=/prometheus-data/prometheus.yml
安装 Grafana
启动脚本
docker run
-d
–net host
–name=grafana
-e “GF_SERVER_ROOT_URL=http://192.168.1.2:3000”
-e “GF_SECURITY_ADMIN_PASSWORD=YOUR_PWD”
grafana/grafana
添加 Spring Boot 监控面板
- 打开 https://grafana.com/dashboards 搜索 spring
- 选中Spring Boot 2.1 Statistics面板插件
- 此插件ID为 10280
- 打开已安装的Grafana
- 填写ID
- 选择数据源
- 界面如下
关注公众号获取最新资讯