最近线上的接口出了一些问题,有一些可能不是代码的问题,但是由于是测试和其他方面的同事爆出来的,所以感觉对接口的监控应该提上日程。
经过搜索发现,spring cloud的eureka就是专门做这方面工作的。
下面一段是《spring cloud 微服务实战》一书中对eureka的简单介绍:
Spring Cloud Eureka 是Spring Cloud Netflix 微服务套件中的一部分, 它基于Netflix Eureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。
Spring Cloud 通过为Eureka 增加了Spring Boot 风格的自动化配置,我们只需通过简单引入依赖和注解配置就能让Spring Boot 构建的微服务应用轻松地与Eureka 服务治理体系进行整合。
一、Eureka 服务的三个角色:
• 服务注册中心:
Eureka 提供的服务端, 提供服务注册与发现的功能, 一般被称作eureka-server。
• 服务提供者:
提供服务的应用, 可以是Spring Boot 应用, 也可以是其他技术平台且遵循Eureka 通信机制的应用。它将自己提供的服务注册到Eureka, 以供其他应用发现
• 服务消费者:
消费者应用从服务注册中心获取服务列表, 从而使消费者可以知道去何处调用其所需要的服务,这个不是我们这部分的内容,暂不介绍。
二、eureka中server的简单搭建
1.首先我们创建一个应用,名为monitor,首先引入eureka依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
2.由于是spring cloud项目,同时需要spring cloud的依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
注:spring boot和spring cloud 有严格的版本对应关系,本项目的spring boot版本是1.5.4.RELEASE
3.application.properties配置文件
spring.application.name=eureka-server
server.port=8080
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
4.最后一步,应用入口class需要加上注解
@EnableEurekaServer
这样这个项目就是一个eureka服务注册中心了。
三、eureka的client简单搭建
eureka的客户端跟就是平时我们的应用,我们需要把他们监控起来。
1.application.properties配置文件
spring.application.name=client-name
server.port=8080
#重要:将应用注册到上一步的服务注册中心
eureka.client.serviceUrl.defaultZone=http://*.*.*.*:8080/monitor-1/eureka/
#开启端点
management.security.enabled=false
#监测心跳
eureka.instance.health-check-url-path=/health
2.pom文件的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.spring cloud的依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
4.应用入口class添加注解
@EnableDiscoveryClient
5.最后一步,在controller中引入DiscoveryClient对象
@Autowired
private DiscoveryClient client;
四、监控UI
看到这个,基本就大功告成了。