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

1.actor(client)

1.1 pom.xml



    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

# 自定义应用信息(通过配置文件的方式)
[email protected]@
[email protected]@
[email protected]@
info.author.name=admin
[email protected]

# 通过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://www.baidu.com");
        map.put("site2","http://www.baidu.com");
        builder.withDetails(map).build();
    }
}

2.admin(server)

2.1 pom.xml



    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
# 邮件发送人
[email protected]
# 授权码
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

# 邮件发送人
[email protected]
# 邮件接收人
[email protected]
# 忽略什么情况才不发邮件,不填代表有变化都会发邮件
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端点

SpringBoot应用监控带邮件警报的实现示例_第1张图片

3.3 访问info端点

SpringBoot应用监控带邮件警报的实现示例_第2张图片

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

SpringBoot应用监控带邮件警报的实现示例_第3张图片

3.3 关掉actuator服务,邮件警报

SpringBoot应用监控带邮件警报的实现示例_第4张图片

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

你可能感兴趣的:(SpringBoot应用监控带邮件警报的实现示例)