微服务-监控仪表盘
12/27/18About 3 min
使用Resilience4J监控工具我们可以通过图形界面的形式,看到我们的应用运行状态
Resilience4J监控方案
Spring Cloud 整合了Resilience4J与Micrometer,可以将Resilience4J的指标导出到Prometheus等监控系统,并通过Grafana等工具进行可视化展示。通过实时监控Resilience4J的各项指标信息,我们可以发现系统中存在的问题,从而及时采取对应措施.
1 步骤
1.1 创建SpringBoot工程
1.2 配置pom
主要添加Resilience4J、Micrometer、Prometheus和actuator依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot3</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-micrometer</artifactId>
</dependency>1.3 配置application.yml
开启Actuator端点和Resilience4J指标
management:
endpoints:
web:
exposure:
include: prometheus,health,info
endpoint:
health:
show-details: always
metrics:
export:
prometheus:
enabled: true
resilience4j:
circuitbreaker:
instances:
default:
registerHealthIndicator: true
metrics:
enabled: true1.4 访问验证
- 应用实例指标端点: http://ip:port/actuator/prometheus
- Prometheus服务器会定期抓取此端点的指标数据
- 通过Grafana配置Prometheus数据源,可以创建丰富的监控面板
监控指标包括:
- 断路器状态(CLOSED, OPEN, HALF_OPEN)
- 失败率和失败次数
- 慢调用比例和慢调用次数
- 熔断器打开和关闭的次数
- 各种限流、降级、重试的统计信息
以上只是对某一个应用进行监控,当监控多个应用时,Prometheus会自动聚合所有实例的指标
2 基于Prometheus和Grafana的集群监控
对于微服务集群的监控,推荐使用Prometheus + Grafana的方案,比传统的Turbine更加灵活和强大:
2.1 Prometheus配置
在Prometheus的配置文件prometheus.yml中添加服务发现配置:
scrape_configs:
- job_name: 'spring-cloud-services'
metrics_path: '/actuator/prometheus'
consul_sd_configs:
- server: 'localhost:8500' # 服务注册中心地址
relabel_configs:
- source_labels: [__meta_consul_tags]
action: keep
regex: .*resilience4j.*2.2 Grafana监控面板
- 配置Prometheus数据源
- 导入Resilience4J专用仪表盘(可从Grafana官网下载,ID: 14471)
- 或创建自定义仪表盘,展示关键指标:
- 服务实例健康状态
- 各服务的断路器状态分布
- 失败率和错误趋势图
- 慢调用比例和响应时间
- 限流和降级统计
2.3 与消息代理结合
Resilience4J支持通过Micrometer将指标发送到消息队列,实现异步监控:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-kafka</artifactId>
</dependency>配置Kafka指标导出:
management:
metrics:
export:
kafka:
enabled: true
bootstrap-servers: localhost:9092
topic: metrics然后可以使用Prometheus的Kafka适配器或其他工具消费这些指标。
end
到此为止,服务容错的监控方案已经介绍完毕。相比传统的Hystrix Dashboard和Turbine,Resilience4J结合Prometheus和Grafana提供了更强大、更灵活的监控能力,能够更好地适应现代微服务架构的需求。