赞
踩
SpringBoot Actuator可以帮助我们监测和管理SpringBoot应用,比如健康检查,审计,统计和Http追踪等。
<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>
修改端口并启动
server.port=8085
在Actuator中默认只给我们放开了两个接口info和health
修改属性文件
# 在Actuator中默认值放开了info和health 如果要放开所有*
management.endpoints.web.exposure.include=*
# 放开shutdown接口
management.endpoints.enabled-by-default=true
我们前面介绍的Actuator监控返回的是一对JSON数据,查看起来也非常不方便,那么这时候我们可以通过监视化的监控报表工具SpringBootAdmin来单独处理这些数据,给用户更好地体验
搭建一个SpringBootAdmin服务,获取Actuator中的JSON数据
具体配置参考官网:https://github.com/codecentric/spring-boot-admin
导入相关的依赖
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
访问localhost:8086即可
表示SpringBootAdmin服务端创建成功
将客户端注册到SpringBootAdmin服务器中
在客户端加上相关依赖
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
# 配置SpringBootAdmin 服务端的地址
spring.boot.admin.client.url=http://localhost:8086
management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default=true
package com.biao.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll()
.and().csrf().disable();
}
}
一般情况下,微服务在 Eureka 上注册后,会每 30 秒发送心跳包,Eureka 通过心跳来判断服务是否健康,同时会定期删除超过 90 秒没有发送心跳服务。
通常(微服务的自身的故障关闭)只会导致个别服务出现故障,一般不会出现大面积故障,而(网络故障)通常会导致 Eureka Server 在短时间内无法收到大批心跳。考虑到这个区别,Eureka 设置了一个阀值,当判断挂掉的服务的数量超过阀值时,Eureka Server 认为很大程度上出现了网络故障,将不再删除心跳过期的服务。
15 分钟之内是否低于 85%;Eureka Server 在运行期间,会统计心跳失败的比例在 15 分钟内是否低于 85%,这种算法叫做 Eureka Server 的自我保护模式。
修改 Eureka Server 配置文件
spring.application.name=eureka-provider1
server.port=9090
# 设置服务注册中心地址 执行Eureka服务端 如果有多个注册地址 那么用逗号连接
eureka.client.service-url.defaultZone=http://192.168.134.129:8761/eureka/,http://192.168.134.131:8761/eureka/
# 配置SpringBootAdmin 服务端的地址
spring.boot.admin.client.url=http://localhost:8086
management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default=true
# 关闭Eureka的自我保护
eureka.server.enable-self-preservation=false
# 设置删除无效服务的间隔时间 单位毫秒
eureka.server.eviction-interval-timer-in-ms=10000
服务提供者下线的时候如果更好的将自身在Eureka中的注册信息移除呢?Eureka Server中的自我保护模式就不需要关闭了。需要添加Actuator的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
#开启shutdown端点访问(这里开启所有)
management.endpoints.web.exposure.include=*
#开启shutdown实现优雅停服
management.endpoints.enabled-by-default=true
利用PostMan
我们可以在Eureka的注册中心中添加SpringSecurity来增加安全认证
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
package config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .anyRequest() .authenticated() .and().httpBasic() .and().csrf().disable(); } }
spring.application.name=eureka-server
server.port=8761
# 开启http basic 的安全认证
spring.security.user.name=biao
spring.security.user.password=123456
# 设置Eureka的实例名称 与配置文件中的变量为主
eureka.instance.hostname=eureka1
# 设置注册中心的地址,指向另一个注册中心 192.168.134.129
eureka.client.service-url.defaultZone=http://biao:123456@192.168.134.132:8761/eureka
spring.application.name=eureka-server
server.port=8761
# 开启http basic 的安全认证
spring.security.user.name=biao
spring.security.user.password=123456
# 设置Eureka的实例名称 与配置文件中的变量为主
eureka.instance.hostname=eureka2
# 设置注册中心的地址,指向另一个注册中心 192.168.134.131
eureka.client.service-url.defaultZone=http://biao:123456@192.168.134.129:8761/eureka
先删除test相关类和依赖,再打包,再部署环境
我们需要在属性文件中添加相关的账号信息
spring.application.name=eureka-provider1
server.port=9090
# 设置服务注册中心 执行Eureka服务端 如果有多个注册中心 那么用逗号连接
eureka.client.service-url.defaultZone=http://bb:1234@192.168.134.129:8761/eureka/,http://bb:1234@192.168.134.131:8761/eureka/
# 配置SpringBootAdmin服务端的地址
# spring.boot.admin.client.url=http://localhost:8086
management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default=true
spring.application.name=eureka-consumer1
server.port=9091
## 设置服务注册中心 执行Eureka服务端 如果有多个注册中心 那么用逗号连接
eureka.client.service-url.defaultZone=http://bb:1234@192.168.134.129:8761/eureka/,http://bb:1234@192.168.134.131:8761/eureka/
基于上一章第四的服务案例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。