Spring Boot Admin 应用监控

发布于 2025-01-02 00:51:37 字数 6629 浏览 5 评论 0

Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过 HTTP 或者使用 Eureka 注册到 admin server 中进行展示,Spring Boot Admin UI 部分使用 AngularJs 将数据展示在前端。

Spring Boot Admin 是一个针对 spring-boot 的 actuator 接口进行 UI 美化封装的监控工具。他可以:在列表中浏览所有被监控 spring-boot 项目的基本 信息,详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改 logger 的 level。

设置 Spring Boot Admin Server

  • 新建一个 springBoot2.x 工程,将 Spring Boot Admin Server 启动器添加到 pom.xml
  • 使用 ide 新建工程可以直接选择引入 Spring Boot Admin
<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>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-server-ui</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>

启动类添加如下注解

@SpringBootApplication
@EnableAdminServer
public class SpringbootAdminApplication {

public static void main(String[] args) {
SpringApplication.run(SpringbootAdminApplication.class, args);
}
}

添加身份验证和授权

@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 {
// @formatter:off
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");

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()
  //启用 HTTP-Basic 支持。这是 Spring Boot Admin Client 注册所必需的
  .httpBasic().and()
  .csrf()
  //使用 Cookie 启用 CSRF 保护
  .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
  .ignoringAntMatchers(
    adminContextPath + "/instances", //禁用 CRSF-Protection Spring Boot Admin Client 用于注册的端点。
    adminContextPath + "/actuator/**" //
  );
// @formatter:on
}
}

application.properties 配置文件

server.port=8088
server.tomcat.uri-encoding=UTF-8
server.tomcat.max-threads=1000
server.tomcat.min-spare-threads=30
#账户密码
spring.security.user.name=gzpflm
spring.security.user.password=gzpflm
#项目访问名
spring.boot.admin.context-path=/szq-monitoring
#UI 界面标题
spring.boot.admin.ui.title=szq-Monitpring

启动运行: http://localhost:8088/szq-monitoring/login 出现登录界面表示成功

Spring Boot 客户端配置监控

  • 客户端需要配置账户密码 不然无法注册到 springBoot Admin
  • 每个要注册的应用程序都必须包含 Spring Boot Admin Client 配置如下
<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

application.properties 配置文件

server.port=8081
spring.application.name=Spring Boot Client
spring.boot.admin.client.url=http://localhost:8088/szq-monitoring
management.endpoints.web.exposure.include=*
spring.boot.admin.client.username=gzpflm
spring.boot.admin.client.password=gzpflm
spring.boot.admin.client.enabled=true
#启用 ip 显示
spring.boot.admin.client.instance.prefer-ip=true
#注册的 service-url 值
spring.boot.admin.client.instance.service-url=http://localhost:8081

启动后:监控的服务端就会收到通知 刷新页面就可以看到监控的服务

Spring Boot Admin Client 配置选项

spring.boot.admin.client.enabled  #启用 S​​pring Boot Admin Client,默认值 true
spring.boot.admin.client.url  #逗号分隔 Spring Boot Admin 服务器的有序 URL 列表以进行注册
spring.boot.admin.client.api-path #管理服务器上的注册端点的 Http 路径 默认值"instances"
#SBA Server api 受 HTTP 基本身份验证保护时的用户名和密码。
spring.boot.admin.client.username 
spring.boot.admin.client.password
spring.boot.admin.client.period #重复注册的间隔(以 ms 为单位)默认自 10,000
spring.boot.admin.client.connect-timeout  #连接超时进行注册(以 ms 为单位 #默认 5,000

官方配置

http://codecentric.github.io/spring-boot-admin/current/#register-clients-via-spring-boot-admin

打 jar 包放到 linux 服务器后台运行模式

java -jar spring-boot01-1.0-SNAPSHOT.jar > log.file 2>&1 &

邮件通知配置

spring.mail.host=smtp.qq.com
spring.mail.username=870439570@qq.com
#qq 邮箱开通的授权码
spring.mail.password=qq 邮箱开通的授权码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
# 发送给谁
spring.boot.admin.notify.mail.to=qinxw@brh99.com
# 是谁发送出去的
spring.boot.admin.notify.mail.from=870439570@qq.com

QQ 邮箱开通邮件客户端方法

登录邮箱 进入设置-》账户-》开启 IMAP/SMTP 服务获取授权码

重启项目后 如果注服务下线就会收到邮件通知

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

围归者

暂无简介

文章
评论
28 人气
更多

推荐作者

笑脸一如从前

文章 0 评论 0

mnbvcxz

文章 0 评论 0

真是无聊啊

文章 0 评论 0

旧城空念

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文