从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin

spring-boot-admin 服务端创建与集成入nacos

创建一个项目,我这里放入minicloud 框架内support module下作为一个支撑服务

起名mini-cloud-monitor


d2e910ce814a4c698de28e221c05dc62.png

引入spring boot admin server maven pom

<dependency>

   <groupId>de.codecentric</groupId>

   <artifactId>spring-boot-admin-starter-server</artifactId>

   <version>2.3.1</version>

</dependency>


spring boot 2.2.x 可以引进 spring-boot-admin-starter-server 2.2.x

集成 入nacos

添加 nacos pom 和config pom

<!--注册中心客户端-->

<dependency>

   <groupId>com.alibaba.cloud</groupId>

 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

<!--配置中心客户端-->

<dependency>

   <groupId>com.alibaba.cloud</groupId>

   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>

application.yml

spring:
  application:
    name: @artifactId@
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
        metadata:
          version: xiaoli
        namespace: de7eb781-5e83-4bff-8c52-6f00f6a090d3
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
        namespace: de7eb781-5e83-4bff-8c52-6f00f6a090d3
  profiles:
    active: @profiles.active@

Application 添加spring-boot-admin @EnableAdminServer 注解

e526d4de98c64cd69ddcc034bea14fe6.png

这时spring boot admin 监控服务其实已经集成完毕了,但是目前是没有登录验证的


为spring boot admin 添加登录验证


引入spring-boot-starter-security


<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-security</artifactId>

</dependency>

设置登录的用户名密码  


spring:
  security:
    user:
      name: admin
      password: 123456

首先启动注册中心,然后启动我们的监控服务并访问 该服务ip 端口  

然后输入用户名密码admin 123456登录

8d110983dfa34b268f826ac2a2792913.png

4e2d58abc2d14daab863f36cb1cca4d3.png

登陆后我们只能看见我们监控服务本身一个服务

因为我们还没有启动其他服务

spring boot admin 是获取注册中心所有服务并监控的,所以注册几个服务就会显示几个

下图是上篇中展示的spring boot admin运行原理 :

35be3f9c38814f46a7137354c1fe7b07.png

客户端集成健康检测

本文举例一个服务说明如何开启健康检测,实际情况应该是所有服务都开启健康检测


客户端服务集成spring  boot actuator,spring cloud 环境下只需要集成actuator即可,


单体spring boot 服务要需要集成spring-boot-admin-client,actuator pom如下


<!--监控-->

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

配置需要开启或者关闭的检测端点,.yml配置如下  

management:
  health:
    db:
      enabled: false
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: '*'

启动服务,查看结果

可以看到已经显示了我们刚刚启动的服务,可以点击该服务看见详细的监测详情

目前基本的健康监测已经可以了,但我们想要在监控页面直接可以看到各个服务的日志,

每个服务还需要添加一下自己服务的日志地址,配置如下

management:
  endpoint:
    logfile:
      enable: true
      external-file: D:\code\mini-cloud\logs\mini-cloud-upms-center-biz\debug.log

我是在nacos 配置中心配置的,然后我们重启服务,看看结果


可以看到,我们服务的日志已经可以在spring boot admin中看见了,这样做的好处是如果我们是分布式部署的,多个机器上的日志可以通过这个页面统一看见会节省去各个服务器上翻找日志的时间

注意点

1.不要改变客户端的actuator 端点base path

spring boot admin 是使用/actuator 作为访问各个服务的基础path的,如果更改了basepath

那么spring boot admin则无法访问各个客户端服务,如下为改变base path方法



ec7d853461da4996a3dbac1066dd54af.png

2.如果关闭了所有端点,一定要至少开启/health 端点

spring boot admin 是依靠访问各个服务/acuator/health 的接口监测健康情况的,如果关闭了

/health ,那么spring boot admin就认为该服务挂掉了,一般不需要关闭所有端点

26d77700b51c48cdaecba699e8160588.png

所有端点如下,根据自己项目情况选择开启:

HTTP方法 Endpoint 描述
GET /actuator 查看有哪些 Actuator endpoint 是開放的
GET /actuator/auditevent 查看 audit 的事件,例如認證進入、訂單失敗,需要搭配 Spring security 使用,sample code
GET /actuator/beans 查看運行當下裡面全部的 bean,以及他們的關係
GET /actuator/conditions 查看自動配置的結果,記錄哪些自動配置條件通過了,哪些沒通過
GET /actuator/configprops 查看注入帶有 @ConfigurationProperties 類的 properties 值為何(包含默認值)
GET /actuator/env (常用) 查看全部環境屬性,可以看到 SpringBoot 載入了哪些 properties,以及這些 properties 的值(但是會自動*掉帶有 key、password、secret 等關鍵字的 properties 的值,保護安全資訊)
GET /actuator/flyway 查看 flyway DB 的 migration 資訊
GET /actuator/health (常用) 查看當前 SpringBoot 運行的健康指標,值由 HealthIndicator 的實現類提供(所以可以自定義一些健康指標資訊,加到這裡面)
GET /actuator/heapdump 取得 JVM 當下的 heap dump,會下載一個檔案
GET /actuator/info 查看 properties 中 info 開頭的屬性的值,沒啥用
GET /actuator/mappings 查看全部的 endpoint(包含 Actuator 的),以及他們和 Controller 的關係
GET /actuator/metrics(常用) 查看有哪些指標可以看(ex: jvm.memory.max、system.cpu.usage),要再使用/actuator/metrics/{metric.name}分別查看各指標的詳細資訊
GET /actuator/scheduledtasks 查看定時任務的資訊
POST /actuator/shutdown 唯一一個需要 POST 請求的 endpoint,關閉這個 SpringBoot 程式




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
18天前
|
人工智能 Java Nacos
Spring AI Alibaba + Nacos 动态 MCP Server 代理方案
本文介绍如何通过 Spring AI Alibaba MCP 模块,基于 Nacos 的服务注册信息,实现将现有服务无缝转换为 MCP 协议的服务。方案无需修改原有业务代码,支持动态新增或删除 MCP 服务。
712 37
|
7天前
|
前端开发
SpringBoot2.3.1集成Knife4j接口文档
SpringBoot2.3.1集成Knife4j接口文档
31 9
|
12天前
|
缓存 安全 Java
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
52 6
|
7天前
|
人工智能 Java 决策智能
Spring AI Alibaba Graph:多智能体框架实践
Spring AI Alibaba 是一个面向 Java 开发者的开源人工智能框架,旨在简化 AI 应用开发。本文重点介绍其 Graph 组件,用于解决工作流与多智能体协作问题。Graph 组件通过声明式编程接口,提供统一的上下文管理、消息记忆、人工确认节点等功能,支持复杂 AI 应用的构建。
|
13天前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
131 4
|
22天前
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
616 13
|
3月前
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
90 0
|
3月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
102 0
|
3月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
45 0
|
3月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
212 0