你心心念念想得到的人,也许正是别人已经玩腻了的人!!!所以,我们现在正在想学习的东西,正是人家已经玩了很久已经很腻的人了~~~所以现在立刻马上开始
Spring Boot Admin 是个什么东东?为什么要用他?
Spring Boot Admin简介:
Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin server中进行展示,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。
Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。
这篇文章给大家介绍如何使用Spring Boot Admin对Spring Boot应用进行监控。
Admin Server: pom文件引入admin-server、admin-server-ui
<dependencies>
<!-- <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency> -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.5.6</version>
</dependency>
</dependencies>
配置文件:
server.port=8070
服务启动类:
package com.inspire.efficacy.admin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import de.codecentric.boot.admin.config.EnableAdminServer;
@SpringBootApplication
@EnableAdminServer
public class SpringBootAdminApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApp.class, args);
}
}
服务启动,浏览器访问:http://10.2.8.42:8070/
Admin Client:
配置文件信息:
spring.boot.admin.url=http://10.2.8.42:8070
management.security.enabled=false
pom文件依赖关系:
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>1.5.6</version>
</dependency>
启动类:
package com.inspire.efficacy.basicdata;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableDiscoveryClient
@SpringBootApplication
@EnableTransactionManagement
public class EfficiencyBasicdataApp {
public static void main(String[] args) {
SpringApplication.run(EfficiencyBasicdataApp.class, args);
}
}
配置完成之后,启动Client端服务,再次访问服务:http://10.2.8.42:8070
可以看到客户端的相关信息:
首页会展示被监控的各个服务,点击详情可以查看某个服务的具体监控信息
通过上图可以看出,Spring Boot Admin以图形化的形式展示了应用的各项信息,这些信息大多都来自于Spring Boot Actuator提供的接口。
===================至此,spring boot admin就全部配置完成了=====================================
把项目放到linux服务器上后,就完全不好使了。
服务器是A、B两台,A主要放admin server B主要放admin client,问题出现在 admin server上注册的admin client
显示http://localhost:2100 所有的服务都是offline ,查询资料是因为注入监控中心是根据hosts里面的名称来找的,所有
vim /etc/hosts改掉对应关系就可以了。
============================================================================================
接下来我们给监控中心加登录页,避免裸奔,以及生产环境避免所有人都可以登录
首先pom文件增加
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-login</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
增加配置信息:
package com.inspire.efficacy.admin.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, proxyTargetClass = true)
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
private static Logger logger = LoggerFactory.getLogger(SecuritySecureConfig.class);
@Override
public void configure(WebSecurity web) throws Exception {
//忽略css.jq.img等文件
web.ignoring().antMatchers("/**.html","/**.css", "/img/**", "/**.js","/third-party/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
logger.info("configure method has been invoked start...");
http
.csrf().disable() //HTTP with Disable CSRF
.authorizeRequests() //Authorize Request Configuration
.antMatchers( "/login",
"/api/**",
"/**/heapdump",
"/**/loggers",
"/**/liquibase",
"/**/logfile",
"/**/flyway",
"/**/auditevents",
"/**/jolokia").permitAll() //放开"/api/**":为了给被监控端免登录注册并解决Log与Logger冲突
.and()
.authorizeRequests()
.antMatchers("/**").hasRole("USER")
.antMatchers("/**").authenticated()
.and() //Login Form configuration for all others
.formLogin()
.loginPage("/login.html")
.loginProcessingUrl("/login").permitAll()
.defaultSuccessUrl("/")
.and() //Logout Form configuration
.logout()
.deleteCookies("remove")
.logoutSuccessUrl("/login.html").permitAll()
.and()
.httpBasic();
logger.info("configure method has been invoked end...");
}
}
application.properties文件中:
server.port=8070
spring.application.name=Spring Boot Admin Web
spring.boot.admin.url=http://localhost:${server.port}
#\u8BA9\u63A7\u5236\u5668\u8F93\u51FA\u7684json\u683C\u5F0F\u66F4\u7F8E\u89C2
spring.jackson.serialization.indent-output=true
#\u5141\u8BB8\u533F\u540D\u7528\u6237\u5B8C\u5168\u8BBF\u95EEhealth\u7AEF\u70B9
endpoints.health.sensitive=false
#spring boot default user.name='user'
security.user.name=admin
#spring boot dafault user.password \u9879\u76EE\u542F\u52A8\u65F6\u6253\u5370\u5728\u63A7\u5236\u53F0
security.user.password=admin
security.basic.enabled=false
management.security.enabled=false
所有的配置都加上后,访问localhost:8070 可以完全访问登录页: