SpringBoot Admin监控spring cloud alibaba nacos微服务
版本说明
Spring-Boot版本:2.1.8RELEASE
Spring-Cloud版本:Greenwich.SR6
Spring-Cloud-Alibaba版本:2.1.0.RELEASE
Spring-Boot-Admin-starter-client:2.1.5
Spring-Boot-Admin-starter-server:2.1.5
这里springboot和springboot admin的大小版本请相同,如boot版本是2.1,admin版本也应该是2.1,否则项目很有可能会报错无法启动。
创建admin server端
pom依赖:
(1)这里web排除tomcat,引入jetty,是因为用tomcat有可能会在启动时报错,而jetty则不会。
(2)引入了security依赖,这样会在admin必须要登陆才可以进入,保证了一定的安全性。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
配置文件
注意:如果在properties中,星号不需要打引号,在yml中,需要打单引号
server.port=8888 #端口号
spring.application.name=gulimall-admin #服务名
spring.security.user.name=admin #账号
spring.security.user.password=admin #密码
spring.cloud.nacos.discovery.server-addr=192.168.1.43:8848 #注册中心地址
management.endpoints.web.exposure.include=* # 选择暴露所有可监控端点
主启动类&&相关配置
@EnableDiscoveryClient
@EnableAdminServer //开启spring boot admin相关功能
@SpringBootApplication
public class GulimallAdminApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallAdminApplication.class, args);
}
}
security配置:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final String adminContextPath;
public SecurityConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
http.authorizeRequests()
.antMatchers(new String[]{"/instances/**","/actuator/**"}).permitAll()
.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();
}
}
创建admin client端(众多需要被监控的微服务)
其余杂七杂八的依赖这里省略。。。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
yml配置
spring:
boot:
admin:
client:
url: http://localhost:8888 #admin server的地址
management:
endpoints:
web:
exposure:
include: '*' #暴露所有可监控的端点
需要注意的是:如果要监控被security或oauth2所保护的微服务,我们需要在security中配置(如果因为安全,我们可以配置ip白名单,只有指定ip,才可以访问)
admin搭建完成
启动所有client服务和server服务。登陆,账号密码是我们在server端配置文件中配置的。
登陆成功后(页面还是挺好看的,至少比以前的版本好看!),我们可以在wallboard中看到所有服务的健康状况和实例数
我这里有一个红色是因为那个微服务boot版本是2.2,导致依赖冲突(我也懒得改了,影响不大)
服务详细信息
点击任意服务,进入服务的详情页,服务详细信息都在下图。
日志级别:
监控线程:
web监控:
系统缓存:
点击clear后,redis中的缓存同时删除