1、springboot admin 服务端
1-1)新建springboot 项目,pom.xml文件引入一下依赖
<!-- springboot admin 服务依赖 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring.admin.version}</version>
</dependency>
<!-- springboot admin 访问安全检查依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.5.2</version>
</dependency>
<!-- 支持邮件发送依赖jar-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1-2)资源配置文件引入配置
#代表打开所有的监控点
management:
endpoints:
web:
exposure:
include: '*'
# 代表启用单独的url地址来监控 Spring Boot 应用,
base-path: /actuator
endpoint:
health:
show-details: always
#程序名称
spring:
main:#配置是否开启权限认证标识
allow-circular-references: true
cloud:
compatibility-verifier:
enabled: false
#配置自定义web页面banner
boot:
admin:
ui:
title: 服务监控系统
brand: <image src=""><span>服务监控系统</span></image>
cache:
no-cache: true
no-store: true
mail: #配置发送邮件邮箱
host: smtp.163.com
username: xxxx@163.com
password: xxxxx
1-3)spring boot服务后台代码
1-3-1 主程序启动配置
@SpringBootApplication
@EnableAdminServer
//过滤掉数据库加载
@EnableAutoConfiguration(exclude ={DataSourceAutoConfiguration.class})
public class MonitorApplication{
public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class,args);
}
}
1-3-2 启用安全检查配置
@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 {
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();
}
}
2、springboot admin 客户端
2-1 pom引入配置如下
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${spring.admin.version}</version>
</dependency>
2-2 ymal配置文件设置
#客户端访问服务端地址,用户名密码配置
spring:
boot:
admin:
client:
url: http://localhost:8099
username: admin
password: ****
#监控客户端程序的访问路径配置
management:
endpoints:
web:
exposure:
include: '*'
base-path: /actuator
endpoint:
health:
show-details: always
logfile: #客户端文件输出配置
external-file: ./server-log/output.log
2-3 输出日志文件配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="APP_Name" value="model-server" />
<contextName>${APP_Name}</contextName>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径,请根据需求配置路径-->
<property name="LOG_HOME" value="./${APP_Name}-log" />
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(LN:%L){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/output.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/server-%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 日志输出级别 ,注意:如果不写<appender-ref ref="FILE" /> ,将导致springbootadmin找不到文件,无法查看日志 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
<root level="ERROR">
<appender-ref ref="FILE" />
</root>
</configuration>
3、springboot admin 配置服务上下线邮件提醒服务
3.1、引入依赖pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.2、资源配置文件
spring:
mail:
host: smtp.163.com
username: xxx@163.com
password: *********(邮件服务商提供授权密码)