最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

springcloud2.x集成SpringAdminServer

XAMPP新闻 admin 785浏览 0评论

一、前言

SpringAdminServer是一个比较强大的微服务监控平台,但在搭建的过程中,并不是那么容易,本文记录下本次项目升级的过程和一些注意事项。

Springboot、Springcloud之间并不是随意组合,而是有一定的要求,SpringAdminServer不同版本之间UI也不尽相同。本文主要版本如下:

1、Springboot:2.3.8.RELEASE

2、Springcloud:Hoxton.SR10

3、SpringAdminServer:2.3.1

不同于其他文章,本文总体架构基于Springcloud、Consul、Feign等。

二、基础搭建

2.1、父项目POM


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
		<spring-boot.version>2.3.8.RELEASE</spring-boot.version>
	</properties>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.8.RELEASE</version>
	</parent>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>25.1-jre</version>
			</dependency>
			<dependency>
				<groupId>commons-lang</groupId>
				<artifactId>commons-lang</artifactId>
				<version>2.6</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
				<version>2.2.7.RELEASE</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
				<version>2.2.7.RELEASE</version>
			</dependency>
			<dependency>
				<groupId>io.springfox</groupId>
				<artifactId>springfox-swagger-ui</artifactId>
				<version>2.9.2</version>
			</dependency>
			<dependency>
				<groupId>io.springfox</groupId>
				<artifactId>springfox-swagger2</artifactId>
				<version>2.9.2</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis</artifactId>
				<version>3.5.6</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis.spring.boot</groupId>
				<artifactId>mybatis-spring-boot-starter</artifactId>
				<version>2.1.4</version>
			</dependency>
			<dependency>
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>2.10.10</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

 

2.2、SpringAdminServer的POM

    <dependencies>
		<!--base dependency for all start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
		</dependency>
		<!--base dependency for all end -->

		<!--jetty begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-undertow</artifactId>
		</dependency>
		<!--jetty end -->

		<!--consul begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-consul-all</artifactId>
		</dependency>
		<!--consul end -->

		<!--stream rabbit begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
		<!--stream rabbit end -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
		</dependency>
		<!--feign begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<!--feign end -->

		<!-- swagger begin -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
		</dependency>

		<!--actuator begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!--actuator end -->

		<!-- redis support -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<!-- redis end -->

		<!--hikaricp start -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
		</dependency>
		<!--hikaricp end -->
		<!--mybatis boot end -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.46</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.3.1</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-mail</artifactId>
		</dependency>
	</dependencies>

 

启动类

@SpringBootApplication
@EnableAdminServer
@EnableDiscoveryClient
public class AdminMonitorApplication {
	private static final Logger LOGGER = LoggerFactory.getLogger(AdminMonitorApplication.class);

	public static void main(String[] args) throws IOException {
		SpringApplication.run(AdminMonitorApplication.class, args);
		// 设置默认异常处理器
		setDefaultException();
	}

	/**
	 * @Title: setDefaultException
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @author chengcai.shang@cmgplex.com
	 * @date 2018年5月23日 下午12:31:34
	 */
	private static void setDefaultException() {
		Thread.setDefaultUncaughtExceptionHandler((Thread t, Throwable e) -> LOGGER.error(e.getMessage(), e));
	}

}

 

配置文件

#logging.level.root = debug
spring.redis.host = 192.168.1.97
spring.redis.port = 6379
#spring.redis.cluster.nodes = 192.168.1.233:6379,192.168.1.233:6380
spring.cache.type = redis
#这个是关于mq的配置
spring.rabbitmq.addresses=amqp://192.168.1.97:5672
spring.rabbitmq.password=guest
spring.rabbitmq.username=guest
spring.cloud.stream.default-binder=rabbit
#忽略consul本身
spring.boot.admin.discovery.ignored-services = consul
#management配置
management.endpoints.web.exposure.include = *
management.endpoints.web.path-mapping.health = /ping
management.endpoints.web.base-path = /foo
management.endpoint.health.show-details = always
management.security.enabled=false
#登录
spring.security.user.name=admin
spring.security.user.password = admin
#邮件告警
spring.mail.host = mail.mail.com
spring.mail.port = 25
spring.mail.username = 123@qq.com
spring.mail.password = 123456
spring.boot.admin.notify.mail.from=123@qq.com
spring.boot.admin.notify.mail.to = 123@qq.com
logging.file.name=/opt/logs/${spring.application.name}.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n

 

#********************************************
#本地服务监听端口
server.port = 15003
#server.servlet.context-path = /monitor
#cpu的核数
server.undertow.io-threads=4
#预估的最佳线程数
server.undertow.worker-threads=400
spring.application.name=admin-monitor
spring.profiles.active=dev
#********************************************
#consul的配置
spring.cloud.consul.enabled=true
spring.cloud.consul.host=192.168.1.97
spring.cloud.consul.port=8500

#********************************************
#注册中心的配置
spring.cloud.consul.discovery.enabled=false
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.health-check-interval=10s
spring.cloud.consul.discovery.health-check-timeout=1s
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
spring.cloud.consul.discovery.tags=management.context-path=/foo,health.path=/ping

#是否把自己向注册中心注册,可以做纯consumer不注册自己
spring.cloud.consul.discovery.register=true

#********************************************
#配置服务的配置
spring.cloud.consul.config.enabled=true
spring.cloud.consul.config.prefix=config
spring.cloud.consul.config.profile-separator=,
spring.cloud.consul.config.default-context=application
spring.cloud.consul.config.watch.enabled=true
spring.cloud.consul.config.watch.delay=1000
spring.cloud.consul.config.watch.wait-time=3
spring.cloud.consul.config.format=properties
spring.cloud.consul.config.data-key=configuration
#禁用熔断器首次调用时强制1秒超时
hystrix.command.default.execution.timeout.enabled=false
##并发执行的最大线程数,默认10
#hystrix.threadpool.default.coreSize=200
##BlockingQueue的最大队列数,默认值-1
#hystrix.threadpool.default.maxQueueSize=1000
##即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5
#hystrix.threadpool.default.queueSizeRejectionThreshold=1000
#zuul超时设置(默认10秒)
zuul.host.connect-timeout-millis=10000
zuul.host.socket-timeout-millis=10000
ribbon.ReadTimeout=10000
ribbon.ConnectTimeout=10000

 

额外的配置

@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(this.adminContextPath + "/assets/**").permitAll()
				.antMatchers(this.adminContextPath + "/login").permitAll().anyRequest().authenticated().and()
				.formLogin().loginPage(this.adminContextPath + "/login").successHandler(successHandler).and().logout()
				.logoutUrl(this.adminContextPath + "/logout").and().httpBasic().and().csrf().disable().headers()
				.frameOptions().disable();
		// @formatter:on
	}
}

 

2.3、被监控端

POM

<dependencies>

		<!--base dependency for all start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
		</dependency>
		<!--base dependency for all end -->

		<!--jetty begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-undertow</artifactId>
		</dependency>
		<!--jetty end -->

		<!--consul begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-consul-all</artifactId>
		</dependency>
		<!--consul end -->

		<!--stream rabbit begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
		<!--stream rabbit end -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
		</dependency>
		<!--feign begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<!--feign end -->

		<!-- swagger begin -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
		</dependency>

		<!--actuator begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!--actuator end -->

		<!-- redis support -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<!-- redis end -->

		<!--hikaricp start -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
		</dependency>
		<!--hikaricp end -->

		<!--mysql start -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!--mysql end -->

		<!--mybatis boot start -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.apache.tomcat</groupId>
					<artifactId>tomcat-jdbc</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>com.scc</groupId>
			<artifactId>mybatis-redis</artifactId>
			<version>0.0.4-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>
		<!--mybatis boot end -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.46</version>
		</dependency>
		<!-- 监控 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>2.3.1</version>
		</dependency>
	</dependencies>

 

配置文件



#the following is for cloud

spring.datasource.hikari.idle-timeout = 600000
spring.datasource.hikari.connection-timeout = 30000
spring.datasource.hikari.max-lifetime = 1800000
spring.datasource.hikari.maximum-pool-size = 20
spring.datasource.type = com.zaxxer.hikari.HikariDataSource

#mybatis的配置
mybatis.type-aliases-package = com.aa.hr

#logging.level.root = debug

spring.redis.host = 192.168.1.97
spring.redis.port = 6379
#spring.redis.cluster.nodes = 192.168.1.233:6379,192.168.1.233:6380
spring.cache.type = redis

#feign.httpclient.enabled = true
#feign.httpclient.max-connections=200
#feign.httpclient.max-connections-per-route=50

#feign.hystrix.enabled=true

#处理连接池超时问题
spring.datasource.hikari.connection-test-query = select 1
#baseRpc远程连接地址
hr-baseapi-system.ribbon.listOfServers=127.0.0.1:14001
hr-baseapi-oa.ribbon.listOfServers=127.0.0.1:14002
hr-baseapi-smartjob.ribbon.listOfServers=127.0.0.1:14003
hr-baseapi-smartlearning.ribbon.listOfServers=127.0.0.1:14004
hr-baseapi-smartsalary.ribbon.listOfServers=127.0.0.1:14005
hr-msg-worker.ribbon.listOfServers=127.0.0.1:14006
#这个是关于mq的配置
spring.rabbitmq.addresses=amqp://192.168.1.97:5672
spring.rabbitmq.password=guest
spring.rabbitmq.username=guest
spring.cloud.stream.default-binder=rabbit

spring.boot.admin.client.url=http://localhost:15003
spring.boot.admin.client.instance.prefer-ip=true
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
logging.file.name=/opt/logs/${spring.application.name}.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n
spring.boot.admin.client.instance.service-base-url=http://${spring.cloud.client.ip-address}:${server.port}

 

#********************************************
#本地服务监听端口
server.port = 14002
#cpu的核数
server.undertow.io-threads=4
#预估的最佳线程数
server.undertow.worker-threads=400
spring.application.name=baseapi-oa
spring.profiles.active=dev
#********************************************
#consul的配置
spring.cloud.consul.enabled=false
spring.cloud.consul.host=192.168.1.97
spring.cloud.consul.port=8500

#********************************************
#注册中心的配置
spring.cloud.consul.discovery.enabled=false
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.health-check-interval=10s
spring.cloud.consul.discovery.health-check-timeout=1s
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

#是否把自己向注册中心注册,可以做纯consumer不注册自己
spring.cloud.consul.discovery.register=true

#********************************************
#配置服务的配置
spring.cloud.consul.config.enabled=true
spring.cloud.consul.config.prefix=config
spring.cloud.consul.config.profile-separator=,
spring.cloud.consul.config.default-context=application
spring.cloud.consul.config.watch.enabled=true
spring.cloud.consul.config.watch.delay=1000
spring.cloud.consul.config.watch.wait-time=3
spring.cloud.consul.config.format=properties
spring.cloud.consul.config.data-key=configuration
#禁用熔断器首次调用时强制1秒超时
hystrix.command.default.execution.timeout.enabled=false
##并发执行的最大线程数,默认10
#hystrix.threadpool.default.coreSize=200
##BlockingQueue的最大队列数,默认值-1
#hystrix.threadpool.default.maxQueueSize=1000
##即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5
#hystrix.threadpool.default.queueSizeRejectionThreshold=1000
#zuul超时设置(默认10秒)
zuul.host.connect-timeout-millis=10000
zuul.host.socket-timeout-millis=10000
ribbon.ReadTimeout=10000
ribbon.ConnectTimeout=10000

 

一、前言

SpringAdminServer是一个比较强大的微服务监控平台,但在搭建的过程中,并不是那么容易,本文记录下本次项目升级的过程和一些注意事项。

Springboot、Springcloud之间并不是随意组合,而是有一定的要求,SpringAdminServer不同版本之间UI也不尽相同。本文主要版本如下:

1、Springboot:2.3.8.RELEASE

2、Springcloud:Hoxton.SR10

3、SpringAdminServer:2.3.1

不同于其他文章,本文总体架构基于Springcloud、Consul、Feign等。

二、基础搭建

2.1、父项目POM


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
		<spring-boot.version>2.3.8.RELEASE</spring-boot.version>
	</properties>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.8.RELEASE</version>
	</parent>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>25.1-jre</version>
			</dependency>
			<dependency>
				<groupId>commons-lang</groupId>
				<artifactId>commons-lang</artifactId>
				<version>2.6</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
				<version>2.2.7.RELEASE</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
				<version>2.2.7.RELEASE</version>
			</dependency>
			<dependency>
				<groupId>io.springfox</groupId>
				<artifactId>springfox-swagger-ui</artifactId>
				<version>2.9.2</version>
			</dependency>
			<dependency>
				<groupId>io.springfox</groupId>
				<artifactId>springfox-swagger2</artifactId>
				<version>2.9.2</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis</artifactId>
				<version>3.5.6</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis.spring.boot</groupId>
				<artifactId>mybatis-spring-boot-starter</artifactId>
				<version>2.1.4</version>
			</dependency>
			<dependency>
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>2.10.10</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

 

2.2、SpringAdminServer的POM

    <dependencies>
		<!--base dependency for all start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
		</dependency>
		<!--base dependency for all end -->

		<!--jetty begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-undertow</artifactId>
		</dependency>
		<!--jetty end -->

		<!--consul begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-consul-all</artifactId>
		</dependency>
		<!--consul end -->

		<!--stream rabbit begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
		<!--stream rabbit end -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
		</dependency>
		<!--feign begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<!--feign end -->

		<!-- swagger begin -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
		</dependency>

		<!--actuator begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!--actuator end -->

		<!-- redis support -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<!-- redis end -->

		<!--hikaricp start -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
		</dependency>
		<!--hikaricp end -->
		<!--mybatis boot end -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.46</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.3.1</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-mail</artifactId>
		</dependency>
	</dependencies>

 

启动类

@SpringBootApplication
@EnableAdminServer
@EnableDiscoveryClient
public class AdminMonitorApplication {
	private static final Logger LOGGER = LoggerFactory.getLogger(AdminMonitorApplication.class);

	public static void main(String[] args) throws IOException {
		SpringApplication.run(AdminMonitorApplication.class, args);
		// 设置默认异常处理器
		setDefaultException();
	}

	/**
	 * @Title: setDefaultException
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @author chengcai.shang@cmgplex.com
	 * @date 2018年5月23日 下午12:31:34
	 */
	private static void setDefaultException() {
		Thread.setDefaultUncaughtExceptionHandler((Thread t, Throwable e) -> LOGGER.error(e.getMessage(), e));
	}

}

 

配置文件

#logging.level.root = debug
spring.redis.host = 192.168.1.97
spring.redis.port = 6379
#spring.redis.cluster.nodes = 192.168.1.233:6379,192.168.1.233:6380
spring.cache.type = redis
#这个是关于mq的配置
spring.rabbitmq.addresses=amqp://192.168.1.97:5672
spring.rabbitmq.password=guest
spring.rabbitmq.username=guest
spring.cloud.stream.default-binder=rabbit
#忽略consul本身
spring.boot.admin.discovery.ignored-services = consul
#management配置
management.endpoints.web.exposure.include = *
management.endpoints.web.path-mapping.health = /ping
management.endpoints.web.base-path = /foo
management.endpoint.health.show-details = always
management.security.enabled=false
#登录
spring.security.user.name=admin
spring.security.user.password = admin
#邮件告警
spring.mail.host = mail.mail.com
spring.mail.port = 25
spring.mail.username = 123@qq.com
spring.mail.password = 123456
spring.boot.admin.notify.mail.from=123@qq.com
spring.boot.admin.notify.mail.to = 123@qq.com
logging.file.name=/opt/logs/${spring.application.name}.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n

 

#********************************************
#本地服务监听端口
server.port = 15003
#server.servlet.context-path = /monitor
#cpu的核数
server.undertow.io-threads=4
#预估的最佳线程数
server.undertow.worker-threads=400
spring.application.name=admin-monitor
spring.profiles.active=dev
#********************************************
#consul的配置
spring.cloud.consul.enabled=true
spring.cloud.consul.host=192.168.1.97
spring.cloud.consul.port=8500

#********************************************
#注册中心的配置
spring.cloud.consul.discovery.enabled=false
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.health-check-interval=10s
spring.cloud.consul.discovery.health-check-timeout=1s
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
spring.cloud.consul.discovery.tags=management.context-path=/foo,health.path=/ping

#是否把自己向注册中心注册,可以做纯consumer不注册自己
spring.cloud.consul.discovery.register=true

#********************************************
#配置服务的配置
spring.cloud.consul.config.enabled=true
spring.cloud.consul.config.prefix=config
spring.cloud.consul.config.profile-separator=,
spring.cloud.consul.config.default-context=application
spring.cloud.consul.config.watch.enabled=true
spring.cloud.consul.config.watch.delay=1000
spring.cloud.consul.config.watch.wait-time=3
spring.cloud.consul.config.format=properties
spring.cloud.consul.config.data-key=configuration
#禁用熔断器首次调用时强制1秒超时
hystrix.command.default.execution.timeout.enabled=false
##并发执行的最大线程数,默认10
#hystrix.threadpool.default.coreSize=200
##BlockingQueue的最大队列数,默认值-1
#hystrix.threadpool.default.maxQueueSize=1000
##即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5
#hystrix.threadpool.default.queueSizeRejectionThreshold=1000
#zuul超时设置(默认10秒)
zuul.host.connect-timeout-millis=10000
zuul.host.socket-timeout-millis=10000
ribbon.ReadTimeout=10000
ribbon.ConnectTimeout=10000

 

额外的配置

@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(this.adminContextPath + "/assets/**").permitAll()
				.antMatchers(this.adminContextPath + "/login").permitAll().anyRequest().authenticated().and()
				.formLogin().loginPage(this.adminContextPath + "/login").successHandler(successHandler).and().logout()
				.logoutUrl(this.adminContextPath + "/logout").and().httpBasic().and().csrf().disable().headers()
				.frameOptions().disable();
		// @formatter:on
	}
}

 

2.3、被监控端

POM

<dependencies>

		<!--base dependency for all start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
		</dependency>
		<!--base dependency for all end -->

		<!--jetty begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-undertow</artifactId>
		</dependency>
		<!--jetty end -->

		<!--consul begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-consul-all</artifactId>
		</dependency>
		<!--consul end -->

		<!--stream rabbit begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
		</dependency>
		<!--stream rabbit end -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
		</dependency>
		<!--feign begin -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<!--feign end -->

		<!-- swagger begin -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
		</dependency>
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
		</dependency>

		<!--actuator begin -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<!--actuator end -->

		<!-- redis support -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<!-- redis end -->

		<!--hikaricp start -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
		</dependency>
		<!--hikaricp end -->

		<!--mysql start -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!--mysql end -->

		<!--mybatis boot start -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.apache.tomcat</groupId>
					<artifactId>tomcat-jdbc</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>com.scc</groupId>
			<artifactId>mybatis-redis</artifactId>
			<version>0.0.4-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>
		<!--mybatis boot end -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.46</version>
		</dependency>
		<!-- 监控 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>2.3.1</version>
		</dependency>
	</dependencies>

 

配置文件



#the following is for cloud

spring.datasource.hikari.idle-timeout = 600000
spring.datasource.hikari.connection-timeout = 30000
spring.datasource.hikari.max-lifetime = 1800000
spring.datasource.hikari.maximum-pool-size = 20
spring.datasource.type = com.zaxxer.hikari.HikariDataSource

#mybatis的配置
mybatis.type-aliases-package = com.aa.hr

#logging.level.root = debug

spring.redis.host = 192.168.1.97
spring.redis.port = 6379
#spring.redis.cluster.nodes = 192.168.1.233:6379,192.168.1.233:6380
spring.cache.type = redis

#feign.httpclient.enabled = true
#feign.httpclient.max-connections=200
#feign.httpclient.max-connections-per-route=50

#feign.hystrix.enabled=true

#处理连接池超时问题
spring.datasource.hikari.connection-test-query = select 1
#baseRpc远程连接地址
hr-baseapi-system.ribbon.listOfServers=127.0.0.1:14001
hr-baseapi-oa.ribbon.listOfServers=127.0.0.1:14002
hr-baseapi-smartjob.ribbon.listOfServers=127.0.0.1:14003
hr-baseapi-smartlearning.ribbon.listOfServers=127.0.0.1:14004
hr-baseapi-smartsalary.ribbon.listOfServers=127.0.0.1:14005
hr-msg-worker.ribbon.listOfServers=127.0.0.1:14006
#这个是关于mq的配置
spring.rabbitmq.addresses=amqp://192.168.1.97:5672
spring.rabbitmq.password=guest
spring.rabbitmq.username=guest
spring.cloud.stream.default-binder=rabbit

spring.boot.admin.client.url=http://localhost:15003
spring.boot.admin.client.instance.prefer-ip=true
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
logging.file.name=/opt/logs/${spring.application.name}.log
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%t] [%p] [%c]  - %m%n
spring.boot.admin.client.instance.service-base-url=http://${spring.cloud.client.ip-address}:${server.port}

 

#********************************************
#本地服务监听端口
server.port = 14002
#cpu的核数
server.undertow.io-threads=4
#预估的最佳线程数
server.undertow.worker-threads=400
spring.application.name=baseapi-oa
spring.profiles.active=dev
#********************************************
#consul的配置
spring.cloud.consul.enabled=false
spring.cloud.consul.host=192.168.1.97
spring.cloud.consul.port=8500

#********************************************
#注册中心的配置
spring.cloud.consul.discovery.enabled=false
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.health-check-interval=10s
spring.cloud.consul.discovery.health-check-timeout=1s
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

#是否把自己向注册中心注册,可以做纯consumer不注册自己
spring.cloud.consul.discovery.register=true

#********************************************
#配置服务的配置
spring.cloud.consul.config.enabled=true
spring.cloud.consul.config.prefix=config
spring.cloud.consul.config.profile-separator=,
spring.cloud.consul.config.default-context=application
spring.cloud.consul.config.watch.enabled=true
spring.cloud.consul.config.watch.delay=1000
spring.cloud.consul.config.watch.wait-time=3
spring.cloud.consul.config.format=properties
spring.cloud.consul.config.data-key=configuration
#禁用熔断器首次调用时强制1秒超时
hystrix.command.default.execution.timeout.enabled=false
##并发执行的最大线程数,默认10
#hystrix.threadpool.default.coreSize=200
##BlockingQueue的最大队列数,默认值-1
#hystrix.threadpool.default.maxQueueSize=1000
##即使maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5
#hystrix.threadpool.default.queueSizeRejectionThreshold=1000
#zuul超时设置(默认10秒)
zuul.host.connect-timeout-millis=10000
zuul.host.socket-timeout-millis=10000
ribbon.ReadTimeout=10000
ribbon.ConnectTimeout=10000

转载请注明:XAMPP中文组官网 » springcloud2.x集成SpringAdminServer

您必须 登录 才能发表评论!