SpringBoot应用监控带邮件警报的实现示例

网友投稿 582 2022-08-25


SpringBoot应用监控带邮件警报的实现示例

目录1.actor(client)2.admin(server)3.测试

1.actor(client)

1.1 pom.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.6.3

com.yl

ac_client

0.0.1-SNAPSHOT

ac_client

Demo project for Spring Boot

11

2.6.2

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-security

de.codecentric

spring-boot-admin-starter-client

org.springframework.boot

spring-boot-starter-test

test

de.codecentric

spring-boot-admin-dependencies

${spring-boot-admin.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

build-info

pl.project13.maven

git-commit-id-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.6.3

com.yl

ac_client

0.0.1-SNAPSHOT

ac_client

Demo project for Spring Boot

11

2.6.2

org.springframework.boot

spring-boot-starter-actuator

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-security

de.codecentric

spring-boot-admin-starter-client

org.springframework.boot

spring-boot-starter-test

test

de.codecentric

spring-boot-admin-dependencies

${spring-boot-admin.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

build-info

pl.project13.maven

git-commit-id-plugin

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 map = new HashMap<>();

map.put("site1","http://baidu.com");

map.put("site2","http://baidu.com");

builder.withDetails(map).build();

}

}

2.admin(server)

2.1 pom.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.6.3

com.yl

ac_server

0.0.1-SNAPSHOT

ac_server

Demo project for Spring Boot

11

2.6.2

org.springframework.boot

spring-boot-starter-mail

org.springframework.boot

spring-boot-starter-web

de.codecentric

spring-boot-admin-starter-server

org.springframework.boot

spring-boot-starter-test

test

de.codecentric

spring-boot-admin-dependencies

${spring-boot-admin.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.6.3

com.yl

ac_server

0.0.1-SNAPSHOT

ac_server

Demo project for Spring Boot

11

2.6.2

org.springframework.boot

spring-boot-starter-mail

org.springframework.boot

spring-boot-starter-web

de.codecentric

spring-boot-admin-starter-server

org.springframework.boot

spring-boot-starter-test

test

de.codecentric

spring-boot-admin-dependencies

${spring-boot-admin.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

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服务,邮件警报


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:97 - Flask中如何在Jinjia2模块中使用Python列表
下一篇:什么是 RESTful API?(什么是滑档)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~