Prometheus + Grafana搭建可视化监控系统(2)
上文使用静态配置的方式达到了监控服务的目的,实际的生产环境中微服务的数量多达几十甚至上百个,这时候静态配置的方式就显得难以管理和维护。Prometheus官方提供了多种服务发现的方式配置服务,这里我们使用服务发现的方式解决实际环境下微服务监控的问题。
Prometheus官方集成了Consul实现了微服务的监控,对于国内很多团队采用的Eureka服务发现组件没有支持,当然我们可以从Github上找到Eureka的Adapter,我们可以利用这个Adapter变相的实现Eureka和Prometheus的集成。
Eureka
首先给出Github的地址:eureka-consul-adapter 。
首先需要把maven依赖添加到Eureka Server服务中,pom依赖如下:
<properties>
<eureka-consul-adapter.version>1.4.0</eureka-consul-adapter.version>
</properties>
<dependencies>
<!--为了让prometheus也能监控Eureka Server,添加此依赖-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>at.twinformatics</groupId>
<artifactId>eureka-consul-adapter</artifactId>
<version>${eureka-consul-adapter.version}</version>
</dependency>
</dependencies>
为了让Prometheus也能监控Eureka Server,我们也配置一下yaml文件,只需要配置actuator相关的参数:
# actuator相关配置
management:
endpoints:
web:
exposure:
include: "*"
base-path: /actuator
endpoint:
health:
enabled: true
show-details: always
prometheus:
enabled: true
metrics:
export:
prometheus:
enabled: true
step: 1ms
descriptions: true
tags:
application: EUREKA_SERVER
注意这里actuator的路径是 /actuator
。至此Eureka Server的集成就完成了。
Prometheus
和上文配置一样,我们同样需求修改prometheus.yml,在 scrape_configs
节点下添加Eureka Server的配置,Prometheus支持Consul,通过上面Adapter的集成,我们将Eureka伪装成了Consul,这里修改server的值,同时配置metrics_path(如果不配置,默认就是/metrics,Prometheus是无法识别的)。
# consul监控
- job_name: 'consul-prometheus'
consul_sd_configs:
- server: '192.168.80.1:1514'
services: []
metrics_path: '/actuator/prometheus'
配置完成后重启Prometheus,这时候再去观察targets,在Eureka上注册的微服务都被Prometheus抓取到了。
Grafana
最后配置Grafana,和上文的配置完全相同,这次我们使用汉化程度比较好的 1 SLS JVM监控大盘 ,导入后就可以看到在Eureka上注册的微服务了,通过 Application 和 Instance 可以切换不同的微服务和实例。
对于使用Nacos的同学,同样有现成的Adapter可以使用:nacos-consul-adapter 。
Eureka Server集成的代码,我已上传到Github,有需要自取:spring-boot-discovery-server 。