Spring Boot Admin 添加报警提醒和登录验证功能的具体实现

yizhihongxing

下面我来详细讲解Spring Boot Admin添加报警提醒和登录验证功能的具体实现。

1. 添加报警提醒

1.1 准备工作

首先,我们需要准备以下工作:

1.2 添加报警提醒功能

spring-boot-admin-server 项目主类中添加以下配置:

@Bean
public ApplicationListener<InstanceRegisteredEvent> instanceRegisteredEventListener() {
    return event -> {
        String healthEndpointUrl = getHealthEndpointUrl(event.getRegistration());
        // 健康检查失败的阈值
        int healthFailedThreshold = 3;
        event.getApplication().registerHealthIndicator(new HealthIndicator() {
            private AtomicInteger healthFailedTimes = new AtomicInteger(0);

            @Override
            public Health health() {
                Health.Builder builder = new Health.Builder();
                try {
                    RestTemplate restTemplate=new RestTemplate();
                    ResponseEntity<String> responseEntity = restTemplate.getForEntity(healthEndpointUrl,String.class);
                    if(responseEntity.getStatusCode().isError()){
                        builder.down();
                        healthFailedTimes.incrementAndGet();
                    } else {
                        builder.up();
                        healthFailedTimes.set(0);
                    }
                } catch (Exception e) {
                    builder.down();
                    healthFailedTimes.incrementAndGet();
                }
                // 检查健康失败次数,如果大于等于指定阈值,则发送报警邮件
                if(healthFailedTimes.get() >= healthFailedThreshold){
                    sendAlertMail(getApplicationName(event.getRegistration()));
                }
                return builder.build();
            }
        });
    };
}

// 获取健康检查接口URL
private String getHealthEndpointUrl(Registration registration){
    Map<String,String> metadata = registration.getMetadata();
    String host = registration.getHost();
    // 默认健康检查接口:/actuator/health
    String healthEndpoint = metadata.getOrDefault("management.endpoint.health.show-details","")+"/actuator/health";
    return String.format("http://%s:%d/%s", host, registration.getPort(), healthEndpoint);
}

// 发送报警邮件
private void sendAlertMail(String applicationName){
    // TODO 发送邮件
}

该配置在服务实例注册后,会为每个服务实例添加一个健康检查的监控,判断健康检查失败的次数。如果健康检查失败次数大于等于规定的阈值,则会发送一封报警邮件。

1.3 示例说明

以一个示例说明上文的配置。例如我们有两个服务实例,分别是 service-aservice-b,并且规定健康检查失败的阈值是 3 次。

service-a 健康检查失败 3 次后,就会触发报警,发送一封邮件。

2. 添加登录验证

2.1 准备工作

同样,我们需要先安装 Spring Boot Admin Server Extensions 扩展,以支持登录验证功能。

2.2 添加登录验证功能

spring-boot-admin-server 项目主类中添加以下配置:

@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private Environment env;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/**").hasRole("ADMIN")
                .and()
                .formLogin().loginPage("/login.html").defaultSuccessUrl("/").permitAll()
                .and()
                .logout().logoutUrl("/logout").permitAll()
                .and()
                .csrf().disable();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/css/**", "/js/**", "/img/**", "/fonts/**");
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser(env.getProperty("spring.security.user.name", "admin"))
                .password("{noop}" + env.getProperty("spring.security.user.password", "admin"))
                .roles("ADMIN");
    }
}

该配置会对所有的请求进行登录验证,只有角色为 ADMIN 的用户才能访问。此外,还会设置登录页面和登出的 URL,取消 CSRF 防护。

在添加了登录验证的情况下,我们需要添加一个 HTML 页面作为登录入口。在 resources 目录下创建登录页面 login.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login Page</title>
</head>
<body>
<h1>Login Page</h1>
<form method="post" action="/login">
    <div>
        <label>Username:</label>
        <input type="text" name="username">
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password">
    </div>
    <div>
        <button type="submit">Login</button>
    </div>
</form>
</body>
</html>

2.3 示例说明

以一个示例说明上述配置。如果我们想通过 Spring Boot Admin 管理后台,访问 http://localhost:9090,就必须在登录页面中输入用户名和密码。默认的用户名和密码是 admin

在输入正确的用户名和密码后,将会进入到 Spring Boot Admin 管理后台首页。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot Admin 添加报警提醒和登录验证功能的具体实现 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Java多线程案例之定时器详解

    Java多线程案例之定时器详解 简介 定时器(Timer)是 Java 多线程编程中的常用工具,它可以让我们方便地实现定时任务。如果想要在 Java 中实现定时器,可以使用 JavaSE 中提供的 Timer 类或者 ScheduledExecutorService 接口。 在这篇文章中,我们将深入探讨 Java 多线程编程中的定时器,并通过多个示例说明如何…

    Java 2023年5月18日
    00
  • 用Java进行zip文件压缩与解压缩

    当需要压缩或解压缩文件时,可以使用Java内置库中的ZipFile和ZipEntry类。以下是用Java进行zip文件压缩和解压缩的完整攻略,包含了两个示例。 一、压缩文件 可以使用Java的ZipOutputStream类进行文件压缩,下面是使用ZipOutputStream压缩文件的示例: import java.io.FileOutputStream;…

    Java 2023年5月20日
    00
  • 详解SpringBoot 快速整合MyBatis(去XML化)

    我来详细讲解“详解SpringBoot快速整合MyBatis(去XML化)”的完整攻略。 添加依赖 在 pom.xml 文件中添加如下依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-bo…

    Java 2023年5月20日
    00
  • 在Tomcat中部署Web项目的操作方法(必看篇)

    在Tomcat中部署Web项目的操作方法(必看篇) 什么是Tomcat Tomcat是一个开源的、轻量级的Web容器,通常用于部署Java Web应用程序。 下载和安装Tomcat 1.访问Tomcat官网:http://tomcat.apache.org/2.进入下载页面:http://tomcat.apache.org/download-80.cgi3.…

    Java 2023年5月19日
    00
  • Tomcat服务器安装配置教程(win7)

    Tomcat服务器安装配置教程(win7) 1. 下载Tomcat 首先,你需要从官网下载Tomcat服务器的安装包,你可以选择最新版本的Tomcat来下载。下载地址如下: https://tomcat.apache.org/download-80.cgi 下载后,你需要解压缩文件并将其放置在一个你所选定的目录下。 2. 配置Tomcat服务器 接下来,你需…

    Java 2023年5月19日
    00
  • Java中Thread.join()的使用方法

    下面我来详细讲解Java中Thread.join()的使用方法。 Thread.join()方法 Thread.join()方法是一个用于等待线程结束的方法。在执行线程时,可以调用join()方法,让当前线程等待被调用join()方法的线程执行完成后才继续往下执行。 语法 public final void join() throws Interrupted…

    Java 2023年5月19日
    00
  • 49个Spring经典面试题总结(附带答案)

    着手准备 首先,要对本文提到的49个Spring相关面试题有一定的了解。 其次,要清楚掌握Spring框架的核心概念和基础知识。 最后,要结合面试框架,将知识点学以致用,深入理解每个问题,适当练习,加深印象,提升答案的质量。 问题类型详解 Bean的定义,作用域、生命周期等问题 解释Spring中Bean的定义,Spring Bean的作用域、生命周期等问题…

    Java 2023年5月20日
    00
  • springboot 集成dubbo的步骤详解

    下面是关于“Spring Boot集成Dubbo的步骤详解”的完整攻略,包含了以下内容: 环境搭建 引入依赖 编写Dubbo服务接口和实现类 配置Dubbo的服务提供者和消费者 演示实例 环境搭建 在开始前必须确定以下工具: 使用Java 1.8或以上版本 下载并安装ZooKeeper 下载Dubbo 引入依赖 使用Maven管理依赖,导入以下依赖: &lt…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部