`
raymond.chen
  • 浏览: 1418200 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Spring Boot Admin监控Sprint Cloud应用

 
阅读更多

一、创建服务配置中心应用

       注册中心Eureka Server

       注册中心添加用户认证

 

二、创建Spring Boot Admin Server应用

      Admin Server将自身注册到服务注册中心,这样Admin Server就可以通过注册中心获取所有应用,并自动监控这样应用。

1、创建pom.xml文件

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.seasy</groupId>
  <artifactId>spring-boot-admin-server</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
  
  <parent>
  	<groupId>org.springframework.boot</groupId>
  	<artifactId>spring-boot-starter-parent</artifactId>
  	<version>2.0.8.RELEASE</version>
  	<relativePath/>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
	<!-- sprint boot admin server -->
  	<dependency>
    	<groupId>de.codecentric</groupId>
    	<artifactId>spring-boot-admin-starter-server</artifactId>
    	<version>2.0.5</version>
	</dependency>
	<!-- 启用安全认证功能 -->
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
	
	<!-- Admin Server注册到注册中心,通过注册中心自动发现需要监控的应用 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

	<dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
  </dependencies>
  
  <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>
</project>

 

2、创建application.yml配置文件

server:
  port: 3030
  
spring:
  application:
    name: spring-boot-admin-server
  #启用的环境配置
  profiles:
    active:
    - secure

eureka:
  instance:
    hostname: ${spring.cloud.client.ip-address}
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    prefer-ip-address: true
    #
    lease-renewal-interval-in-seconds: 10  #表示eureka client发送心跳给server端的频率 
    health-check-url-path: /actuator/health  #健康检查页面的URL路径
    #注册给eureka时告诉eureka自己的密码
    metadata-map: 
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}
  client:
    registry-fetch-interval-seconds: 5  #表示eureka client间隔多久去拉取服务注册信息,默认为30秒
    #注册中心地址
    service-url:
      defaultZone:
        http://root:123456@${eureka.instance.hostname}:7001/eureka/

#管理端点的配置
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

#每个环境的配置根据 '---'分隔符隔开      
---
spring:
  profiles: insecure

---
spring:
  profiles: secure
  #登录admin server需要的用户名和密码
  security:
    user:
      name: dev
      password: 123

 

3、启动类

       Spring Security的配置信息也放在启动类中

@SpringBootApplication
@EnableAdminServer //开启监控功能
@EnableEurekaClient //Admin Server也注册到注册中心
public class Main {
	public static void main(String[] args) {
		SpringApplication.run(Main.class, args);
	}
	
	/**
	 * Spring Security配置
	 */
	@Profile("insecure") //对应到application配置文件的spring.profiles属性值
    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
        	//permitAll: 无条件允许访问
            http.authorizeRequests().anyRequest().permitAll()
                    .and().csrf().disable();
        }
    }
 
    @Profile("secure")
    @Configuration
    public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
        private final String adminContextPath;
 
        public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
            this.adminContextPath = adminServerProperties.getContextPath();
        }
 
        @Override
        protected void configure(HttpSecurity http) throws Exception {
        	//登录成功后的处理器类
            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();
        }
    }
}

 

三、创建Spring Cloud应用

1、创建pom.xml文件

      不需要引入 spring-boot-admin-starter-client 依赖包

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.seasy.springcloud</groupId>
  <artifactId>service-provider-1</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>
  
  <parent>
  	<groupId>org.springframework.boot</groupId>
  	<artifactId>spring-boot-starter-parent</artifactId>
  	<version>2.0.8.RELEASE</version>
  	<relativePath/>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>
  
  <dependencies>
	<!-- spring boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-test</artifactId>
      	<scope>test</scope>
    </dependency>
    
    <!-- spring cloud -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
  </dependencies>
  
  <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>
    
  <build>
      <plugins>
          <plugin>
              	<groupId>org.springframework.boot</groupId>
              	<artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
          
   		  <plugin>
           		<groupId>org.apache.maven.plugins</groupId>
           		<artifactId>maven-compiler-plugin</artifactId>
           		<configuration>
               		<source>1.8</source>
               		<target>1.8</target>
           		</configuration>
           </plugin>
      </plugins>
  </build>
</project>

 

2、创建application.yml配置文件

      不需要配置 spring.boot.admin.client 相关的参数信息

server:
  port: 8001
  
spring:
  application:
    name: service-provider-1

eureka:
  instance:
    hostname: ${spring.cloud.client.ip-address}
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://root:123456@${eureka.instance.hostname}:7001/eureka/

#开启所有的管理端点给Admin Server进行监控
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

 

3、创建启动类

@EnableEurekaClient
@SpringBootApplication
public class Main {
	public static void main(String[] args) {
		SpringApplication.run(Main.class, args);
	}
}

  

 



 

  • 大小: 30.7 KB
  • 大小: 89.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics