其實網上有很多資料都說得很詳細,但有時按照他們的例子去做了,就會出現各種各種的問題,歸其原因,是因為版本的問題,所以我來貼一下完整的示例。
先來看看pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- 繼承了父類的依賴管理,控制兼容版本,無需自己控制 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.zgz.spring.boot</groupId>
<artifactId>admin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>1.5.7</version>
<exclusions>
<!-- 排除依賴 因為該版本比較舊,出現過NoSuchMethod的異常-->
<exclusion>
<groupId>com.netflix.servo</groupId>
<artifactId>servo-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 使用jmx 需要引入此類-->
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
<version>1.5.0</version>
<scope>compile</scope>
</dependency>
<!-- 引入較新的版本 -->
<dependency>
<groupId>com.netflix.servo</groupId>
<artifactId>servo-core</artifactId>
<version>0.12.11</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
<goal>build-info</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.zgz.application.SpringBootAdminApplication</mainClass>
<addResources>false</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
再來看看application啟動類:
package com.zgz.application; import de.codecentric.boot.admin.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration @EnableAutoConfiguration @EnableDiscoveryClient @EnableAdminServer public class SpringBootAdminApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminApplication.class, args); } @Configuration public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().permitAll() //<1> .and().csrf().disable(); } } } // end::application-eureka[]
接着是application.yml:
spring: application: name: zgz-spring-boot-admin info: version: @project.version@ # tag::configuration-eureka[] eureka: #<1> instance: leaseRenewalIntervalInSeconds: 10 hostname: localhost client: registryFetchIntervalSeconds: 5 serviceUrl: defaultZone: http://localhost:8761/eureka/ management: endpoints: web: exposure: include: "*" #<2> # end::configuration-eureka[] endpoint: health: show-details: ALWAYS security: enabled: false endpoints: logfile: sensitive: false
最后是logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <!-- 要是需要管理日志級別,需要在文件中加入 此配置 --> <jmxConfigurator/> </configuration>
注:如果需要在Spring Boot Admin 中能輸出其他監控項目的日志,則需在監控項目的application.yml指定日志文件:
logging:
file: D:\JavaWebLogs\SpringBootDemo\log_info.log
以上的配置會將監控項目的Log,Logging,JMX模塊管理起來: