SpringCloud(5):快速搭建你的监控中心

简介: Spring Boot Admin实例生命状态实例的细节信息实例的信息清单Spring Boot Admin看到这几个页面是不是觉得还是蛮炫酷的,毕竟是Spring自家的产品,做的还是可以的。
img_9a4d6cd6913e2116ec0a5cbe81d80866.png
Spring Boot Admin
img_353b9b2b20b8ef4384e9fff3967edd27.png
实例生命状态

img_0a067c6760a2b34cb3cc5418fab887bb.png
实例的细节信息

img_ae86de17043cc9dbacb1a5e82663af3b.png
实例的信息清单

Spring Boot Admin

看到这几个页面是不是觉得还是蛮炫酷的,毕竟是Spring自家的产品,做的还是可以的。
我们就来简易的搭一下这个监控中中心

1. 新建Springboot项目

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--Spring Security-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.启动类注解配置

@SpringBootApplication
@EnableAdminServer
public class MonitorApplication {

    public static void main(String[] args) {
        SpringApplication.run(MonitorApplication.class, args);
    }
}

@EnableAdminServer:标明组件名称
用过这么多Spring的组件之后,我们应该是对这种类似的注解已经见过很多次了。

3.SpringSecurity 的配置类

/**
 * @Author:LiuPu
 * @Date:2018/9/26 14:48
 * @Description:
 * @Version 1.011
 */
@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
        }

    }

WebSecurityConfigurerAdapter:优先级高于ResourceServerConfigurer,用于保护oauth相关的endpoints,同时主要作用于用户的登录(form login,Basic auth )WebSecurityConfigurerAdapter是默认情况下Spring security的http配置;ResourceServerConfigurerAdapter是默认情况下spring security oauth 的http配置。

WebSecurityConfigurerAdapter部分源码:

public abstract class WebSecurityConfigurerAdapter implements WebSecurityConfigurer<WebSecurity> {
          protected void configure(AuthenticationManagerBuilder auth) throws Exception {
                  ...... 
    }
          protected void configure(WebSecurity web) throws Exception {
                  ......
    } 
          protected void configure(HttpSecurity http) throws Exception {
                 ........
      }
}

4.配置文件

server.port=18080
spring.application.name=monitor
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/
management.endpoints.web.exposure.include=refresh,health,info,env,loggers,metrics,trace,dump
management.endpoint.health.show-details=always
spring.security.user.name=aboyliupu
spring.security.user.password=lp1234

eureka.instance.metadata-map.user.name=aboyliupu
eureka.instance.metadata-map.user.password=lp1234

这里有一个细节需要说明一下:
SpringBoot 2.0 默认是关闭了自带的一些接口,比如说实例的健康状态,心跳之类的
management.endpoints.web.exposure.include=refresh,health,info,env,loggers,metrics,trace,dump
这里需要开放一些端口
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/:把实例注册到注册中心
spring.security.user.name=aboyliupu
spring.security.user.password=lp1234
eureka.instance.metadata-map.user.name=aboyliupu
eureka.instance.metadata-map.user.password=lp1234:
登录的账号和密码及其配置

5.关于SpringSercurity的配置

在整个实例种,SpringSercurity这么庞大的框架其实只是用到了其作用的九牛一毛----登录拦截.
如果细说,这个登录界面有没有用呢?俗话说的好,防君子不防小人,这个就要看字自己斟酌。

6.总结

我们搭这样一个监控中心的意义是什么?
比如说,你们公司的项目使用的是SOA框架,在入口上的软硬件上做了Nginx+服务器集群,同时在软件上也做了集群,例如注册中心集群.....
尽管我们拥有这么完美的熔断机制和预防机制,但是实例出了问题我们还是需要去解决问题。这个时候监控中心监测实例健康和心跳的作用就起了大作用了。我们就能一眼看出是哪些实例挂掉了。

目录
相关文章
|
29天前
|
负载均衡 Java API
Spring Cloud 面试题及答案整理,最新面试题
Spring Cloud 面试题及答案整理,最新面试题
131 1
|
29天前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
136 0
|
30天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
130 0
|
30天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
81 0
|
2天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
2天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
20 2
|
17天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
30天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
61 1
|
30天前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
184 0
|
30天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
778 0

热门文章

最新文章