Loading

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,才可以访问)

image-20201106205842586

admin搭建完成

启动所有client服务和server服务。登陆,账号密码是我们在server端配置文件中配置的。

登陆成功后(页面还是挺好看的,至少比以前的版本好看!),我们可以在wallboard中看到所有服务的健康状况和实例数

image-20201106210550954

我这里有一个红色是因为那个微服务boot版本是2.2,导致依赖冲突(我也懒得改了,影响不大)

服务详细信息

点击任意服务,进入服务的详情页,服务详细信息都在下图。

image-20201106211845183

日志级别:

image-20201106212310723

监控线程:

image-20201106212352852

web监控:

image-20201106212419795

image-20201106213742059

系统缓存:

image-20201106212823518

点击clear后,redis中的缓存同时删除

posted @ 2020-11-06 21:41  秋风飒飒吹  阅读(3551)  评论(3编辑  收藏  举报