首页 文章资讯内容详情

SpringCloud使用Prometheus监控(基于Eureka)

2026-06-01 4 花语

本文内容纲要:

-1.Prometheus介绍 -2.EurekaServer -3.EurekaClient -4.Prometheus配置 -5.测试 -6.源码

本文介绍SpringCloud使用Prometheus,基于Eureka服务发现。

1.Prometheus介绍

在之前写过两篇有关Prometheus使用的文章,如下:

《SpringBoot使用prometheus监控》

《SpringBoot使用SOFA-Lookout监控》

但是如果使用微服务的话,一个服务一个服务的配置似乎太麻烦,Prometheus提供了很多服务发现的机制去统一配置服务,具体可以查看官网介绍:https://prometheus.io/docs/prometheus/latest/configuration/configuration/

包含如下这些配置:

从图中可以看出,这里提供了Consul的服务发现机制,没有Eureka的服务发现机制。但是如果Eureka想要使用的话可以通过配置一个适配器的方式,使用consul_sd_config配置的方式使用Prometheus服务发现。

2.EurekaServer

创建一个EurekaServer,这里使用的Eureka最新版本Greenwich.SR1,也就是现在Idea默认创建的,在配置中加入eureka-consul-adapter依赖,pom文件完整内容如下所示。

<?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/><!--lookupparentfromrepository--> </parent> <groupId>com.dalaoyang</groupId> <artifactId>springcloud_prometheus_server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springcloud_prometheus_server</name> <description>springcloud_prometheus_server</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>at.twinformatics</groupId> <artifactId>eureka-consul-adapter</artifactId> <version>1.1.0</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>SpringMilestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> </project>

这里需要注意一下SpringCloud版本与eureka-consul-adapter的对照,如下所示。

剩下的就是一些简单地配置,如配置文件:

server.port=8761 eureka.instance.hostname=localhost eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ ##禁止自己向自己注册 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false

启动类加入注解启动注册中心,如下:

@SpringBootApplication @EnableEurekaServer//启动服务注册中心 publicclassSpringcloudPrometheusServerApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(SpringcloudPrometheusServerApplication.class,args); } }

3.EurekaClient

其实这个也没什么好说的,和普通使用Prometheus一样,当然,也可以使用SOFA-Lookout的模式,这里根据情况自行选择即可,这里以使用micrometer-registry-prometheus依赖为例,完整pom如下所示。

<?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath/><!--lookupparentfromrepository--> </parent> <groupId>com.dalaoyang</groupId> <artifactId>springcloud_prometheus_client</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springcloud_prometheus_client</name> <description>springcloud_prometheus_client</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties> <dependencies> <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.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.1.3</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>SpringMilestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> </project>

配置文件如下,端口号8888,如下:

##端口号 server.port=8888 spring.application.name=springboot_prometheus_client eureka.client.service-url.defaultZone=http://server1:8761/eureka/ management.endpoints.web.exposure.include=* management.metrics.tags.application=${spring.application.name}

启动类如下:

@SpringBootApplication publicclassSpringcloudPrometheusClientApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(SpringcloudPrometheusClientApplication.class,args); } @Bean MeterRegistryCustomizer<MeterRegistry>configurer( @Value("${spring.application.name}")StringapplicationName){ return(registry)->registry.config().commonTags("application",applicationName); } }

4.Prometheus配置

在Prometheus中配置eureka地址(server),以及需要收集的服务(services)。

-job_name:consul-prometheus scheme:http metrics_path:/actuator/prometheus consul_sd_configs: #consul地址 -server:127.0.0.1:8761 scheme:http services:[SPRINGBOOT_PROMETHEUS_CLIENT]

5.测试

分别启动Eureka-Server和Eureka-Client,首先查看Eureka界面,如下:

接下来查看一下Prometheus,如下:

从上图可以看到,服务以及被收集了,接下来查看grafana控制台,如图:

6.源码

源码地址:

EurekaServer:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_prometheus_server

EurekaClient:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_prometheus_client

本文内容总结:1.Prometheus介绍,2.EurekaServer,3.EurekaClient,4.Prometheus配置,5.测试,6.源码,

原文链接:https://www.cnblogs.com/dalaoyang/p/10508817.html