springboot應用整合springbootadmin實現應用監控(解決無法傳送郵件問題)
阿新 • • 發佈:2018-12-24
架設服務端
1.新增依賴springbootadmin和spring security
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId >
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version> ${spring-boot-admin.version}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>${spring-boot-admin.version}</version>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-dependencies</artifactId>
<version>${spring-boot-admin.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.添加註解和配置
@EnableAdminServer
@SpringBootApplication
@EnableWebSecurity
public class SpringBootAdminApplication {
@Autowired
private SecurityProperties securityProperties;
@Profile("insecure")
@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest()
.permitAll()
.and()
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers("/instances", "/actuator/**");
}
}
@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 {
// @formatter:off
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
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()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers("/instances", "/actuator/**");
http.csrf().disable();
// @formatter:on
}
}
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}
}
3.yml配置
server:
port: 9201
spring:
application:
name: spring-cloud-admin-center
profiles:
active: secure
boot:
admin:
discovery:
ignored-services: spring-cloud-admin-center
---
spring:
profiles: insecure
---
spring:
profiles: secure
security:
user:
name: "admin"
password: "123456"
傳送郵件配置
@Configuration
public class AdminServerConfiguration {
@Autowired
private ApplicationContext applicationContext;
public TemplateEngine mailNotifierTemplateEngine() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(this.applicationContext);
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.addTemplateResolver(resolver);
return templateEngine;
}
@Bean
@ConfigurationProperties("spring.boot.admin.notify.mail")
public Notifier notifier(JavaMailSender mailSender, InstanceRepository repository) {
MailNotifier mailNotifier = new MailNotifier(mailSender, repository, mailNotifierTemplateEngine());
mailNotifier.setIgnoreChanges(new String[]{});
return mailNotifier;
}
}
完成程式碼已經分享至github,點我跳轉
客戶端
1.新增依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.0.1</version>
</dependency>
2.新增配置
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=123456
spring.boot.admin.client.url=admin地址
spring.boot.admin.client.instance.name=xxxxl-admin
spring.boot.admin.client.instance.management-base-url=本專案地址
spring.boot.admin.client.instance.service-base-url=本專案地址
management.endpoints.web.exposure.include=*
完畢