1. admin使用
admin server
<spring-boot-admin.version>2.1.0</spring-boot-admin.version>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>-->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-security</artifactId>-->
<!--</dependency>-->
@EnableAdminServer
admin client
pom
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.0</version>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-security</artifactId>-->
<!--</dependency>-->
yaml
spring:
application:
name: admin-client
boot:
admin:
client:
url: http://localhost:8769
server:
port: 8768
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
health:
show-details: ALWAYS
logging:
file: "logs/admin-client.log" #如果不配置,没法看日志。只能改日志的格式。
logback-srping.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<jmxConfigurator/>
</configuration>
action
private Logger logger = LoggerFactory.getLogger(AdminClientApplication.class);
public static void main(String[] args) {
SpringApplication.run(AdminClientApplication.class, args);
}
@GetMapping("/test")
public String test() {
logger.info("1234wedwe");
return "ok";
}
访问:
http://localhost:8769/
很强大,连日志都能看
admin 中集成 turbine,自己看吧
Dashboard 监控熔断器状况的组件
Turbine 可以聚合多个 hystrix Dashboard的组件
引入 hystrix dashBoard
引入 hystrix
开启 Hystrix
开启 HystrixDashboard
@HystrixCommand
2. admin 添加安全登录界面,注册eureka
eureak server的 yaml
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
admin的client
pom 不用 引用admin client,就引入 web eureka client
yaml
spring:
application:
name: admin-client
# security:
# user:
# name: "client"
# password: "client"
eureka:
instance:
leaseRenewalIntervalInSeconds: 10 #租赁更新间隔,单位为秒
health-check-url-path: /actuator/health #建厂检查
client:
registryFetchIntervalSeconds: 5 #拉取 配置的秒
service-url:
defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
#和其他项目一样的 端点配置
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS #展示细节,总是
server:
port: 8768
logging:
file: "logs/admin-client.log" #配置了文件的路径,才能通过admin server看日志
admin server
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.1.0</version>
</dependency>
starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
netflix-eureka-client
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-mail</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
yaml
spring:
application:
name: admin-server
security:
user: # security 账号密码
name: "admin"
password: "admin"
server:
port: 8769
eureka:
client:
registryFetchIntervalSeconds: 5
service-url:
defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
instance:
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
metadata-map: #断点数据源的 map
user.name: ${spring.security.user.name}
user.password: ${spring.security.user.password}
# 通用的节点配置
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
## 这是大哥想测试 邮箱的,不用管
spring.mail.host: smtp.163.com
spring.mail.username: miles02
spring.mail.password:
spring.boot.admin.notify.mail.to: 124746406@qq.com
@EnableAdminServer
Security Secure Config
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter( "redirectTo" );
http.authorizeRequests()
.antMatchers( adminContextPath + "/assets/**" ).permitAll()
.antMatchers( adminContextPath + "/login" ).permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage( adminContextPath + "/login" ).successHandler( successHandler ).and()
.logout().logoutUrl( adminContextPath + "/logout" ).and()
.httpBasic().and()
.csrf().disable();
// @formatter:on
}
}