SpringBoot应用监控带邮件警报的实现示例
作者:#Hideonbush
本文主要介绍了SpringBoot应用监控带邮件警报的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
1.actor(client)
1.1 pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yl</groupId>
<artifactId>ac_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ac_client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<spring-boot-admin.version>2.6.2</spring-boot-admin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<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-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--查看项目构建信息的插件-->
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
<!--查看git提交信息插件-->
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>1.2 application.properties
# 暴露所有的端点(端点实际上就是接口) management.endpoints.web.exposure.include=* # 开启shutdown端点 management.endpoint.shutdown.enabled=true # 修改所有端点的前缀 management.endpoints.web.base-path=/ # 修改某个端点的名称 management.endpoints.web.path-mapping.beans=bs # 开启跨域 management.endpoints.web.cors.allowed-origins=* # 允许某个请求跨域 management.endpoints.web.cors.allowed-methods=GET,POST # 显示健康信息细节 management.endpoint.health.show-details=when_authorized # 指定哪个角色可以看健康信息 management.endpoint.health.roles=ADMIN # 添加自定义状态FAIL management.endpoint.health.status.order=FAIL,DOM,OUT_OF_SERVICE,UP,UNKNOWN # 自定状态码 management.endpoint.health.status.http-mapping.FAIL=500 # security的配置 spring.security.user.name=root spring.security.user.password=123456 spring.security.user.roles=ADMIN # 自定义应用信息(通过配置文件的方式) info.app.encoding=@project.build.sourceEncoding@ info.app.java.source=@java.version@ info.app.java.target=@java.version@ info.author.name=admin info.author.eamil=111@163.com # 通过info查看git的所有信息 management.info.git.mode=full # 指定server的url spring.boot.admin.client.url=http://localhost:8081
1.3 security配置
package com.yl.actuator.config;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
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
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint())
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic().and().csrf().disable();
}
}1.4 自定义健康信息
package com.yl.actuator.config;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
//自定义健康信息
@Component
public class MyHealth implements HealthIndicator {
@Override
public Health health() {
// return Health.status("FAIL").withDetail("message","服务器异常").build();
return Health.up().withDetail("message","一切正常..").build();
}
}
1.5 自定义应用信息
package com.yl.actuator.config;
import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
// 自定义应用信息
@Configuration
public class MyInfo implements InfoContributor {
@Override
public void contribute(Info.Builder builder) {
Map<String,Object> map = new HashMap<>();
map.put("site1","http://www.baidu.com");
map.put("site2","http://www.baidu.com");
builder.withDetails(map).build();
}
}
2.admin(server)
2.1 pom.xml
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yl</groupId>
<artifactId>ac_server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ac_server</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<spring-boot-admin.version>2.6.2</spring-boot-admin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2 application.properties
server.port=8081 # security的用户名和密码要和在client那边配的一致 spring.boot.admin.instance-auth.default-user-name=root spring.boot.admin.instance-auth.default-password=123456 # 邮件配置 spring.mail.host=smtp.qq.com spring.mail.port=465 # 邮件发送人 spring.mail.username=xxx@qq.com # 授权码 spring.mail.password=ontqrqxpjkysfhbb spring.mail.default-encoding=utf-8 spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.debug=true spring.mail.protocol=smtp spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.ssl.enable=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.test-connection=true # 邮件发送人 spring.boot.admin.notify.mail.from=xxx@qq.com # 邮件接收人 spring.boot.admin.notify.mail.to=xxxx@163.com # 忽略什么情况才不发邮件,不填代表有变化都会发邮件 spring.boot.admin.notify.discord.ignore-changes=
2.3 主程序,开启admin server功能
package com.yl.adminserver;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer //开启AdminServer
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
3.测试
3.1 同时启动两个界面
3.2 访问health端点

3.3 访问info端点

3.4 ui监控页面,访问server的端口号

3.3 关掉actuator服务,邮件警报

到此这篇关于SpringBoot应用监控带邮件警报的实现示例的文章就介绍到这了,更多相关SpringBoot应用监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
