SpringBoot核心技术:你了解Actuator开放指定监控节点吗?

之前章节SpringBoot核心技术:探究Actuator的默认开放节点 & 详细健康状态讲解了spring-boot-actuator默认开放的节点以及如何修改查看详细的健康信息,那我们怎么设置开放指定的节点访问呢?

本章目标

开放spring-boot-actuator的指定节点访问。

构建项目

由于我们在SpringBoot核心技术:探究Actuator的默认开放节点 & 详细健康状态已经创建了项目,之前章节的源码已经上传到码云,访问:SpringBoot源码汇总下载源码,下载完成后使用idea工具打开即可,我们在之前的基础上修改。

开放指定节点

management.endpoints.web.exposure.include的配置字段我们已经了解到了在org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties属性配置类内,而且exposure.include的值默认为["health","info"]

除此之外通过spring-configuration-metadata.json元数据配置文件内还知道了management.endpoints.web.exposure.include配置参数的类型为java.util.Set<java.lang.String>,这样我们就知道了该如何进行修改配置了,修改application.yml配置文件如下所示:

# 管理节点配置
management:
  endpoints:
    web:
      # actuator的前缀地址
      base-path: /
      # 开放指定节点
      exposure:
        include:
          - health
          - info
          - mappings
          - env

由于management.endpoints.web.exposure.includejava.util.Set<java.lang.String>类型,那么我就可以采用中横线换行形式进行配置(这是SpringBoot采用yaml配置文件风格的约定), 一个- xxx代表一个配置的值。

当然我们采用数组的形式也是可以的,如下所示:

# 管理节点配置
management:
  endpoints:
    web:
      # actuator的前缀地址
      base-path: /
      # 开放指定节点
      exposure:
        include: ["health","info","mappings","env"]

开放全部节点

如果不做节点的开放限制,可以将management.endpoints.web.exposure.include配置为*,那么这样就可以开放全部的对外监控的节点,如下所示:

# 管理节点配置
management:
  endpoints:
    web:
      # actuator的前缀地址
      base-path: /
      # 开放指定节点
      exposure:
        include: "*"

内置节点列表

开放全部节点后在项目启动时,控制台会打印已经映射的路径列表,spring-boot-actuator内置了丰富的常用监控节点,详见如下表格:

节点

节点描述

默认启用

auditevents

公开当前应用程序的审核事件信息。

beans

显示应用程序中所有Spring bean的完整列表。

conditions

显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。

configprops

显示所有的整理列表@ConfigurationProperties。

env

露出Spring的属性ConfigurableEnvironment。

health

显示应用健康信息。

httptrace

显示HTTP跟踪信息(默认情况下,最后100个HTTP请求 - 响应交换)。

info

显示任意应用信息。

loggers

显示和修改应用程序中记录器的配置。

metrics

显示当前应用程序的“指标”信息。

mappings

显示所有@RequestMapping路径的整理列表。

scheduledtasks

显示应用程序中的计划任务。

shutdown

允许应用程序正常关闭。

threaddump

执行线程转储。

sessions

允许从Spring Session支持的会话存储中检索和删除用户会话。使用Spring Session对响应式Web应用程序的支持时不可用。

总结

通过本章详细你应该可以知道你需要开发的节点了,根据具体的业务需求开放不同的节点。

注意:节点开放一定要慎重,不要过度开放接口,也不要方便盲目填写*开放全部节点。

源码位置

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏YouMeek

一个Java程序员眼中的Mac OS(系列七:Java 开发环境)

本文初衷 整理自己脑袋中、收藏中的那些资料,来一次清空,让自己重新开始。 帮助 Mac 后来者,减少他/她入门成本 如果你不是 Java 开发者,本章对你没啥太...

47316
来自专栏Android机动车

Android开发环境搭建

因此,我们这篇文章将从JDK和AndroidStudio两个方面来讲解Android开发环境的搭建。

1524
来自专栏从零开始学自动化测试

python笔记25-mock-server之moco环境搭建

mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发...

1622
来自专栏互扯程序

玩转linux 这些命令就够了

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

1782
来自专栏猛牛哥的博客

菜鸟实测可用的Centos rsync文件同步配置步骤

3902
来自专栏idba

一款基于go语言的agent

一 介绍 在构建数据库自动化运维系统的时候,数据库服务器上必须要有一个agent来执行web服务器端发起的命令,我们研究了好几种技术Celery,Redis ...

1650
来自专栏Laoqi's Linux运维专列

Kubernetes 1.8.6 集群部署–集群监控(十)

2203
来自专栏程序员互动联盟

【专业技术】linux启动流程剖析

半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。 那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管...

3637
来自专栏MoeLove

CentOS7上安装Python3.6

当前最新的 CentOS 7.3 默认安装的是 Python 2 ,并且默认的官方 yum 源中不提供 Python 3 的安装包。有些用户想要升级使用 Pyt...

2932
来自专栏C/C++基础

Linux命令(43)——paste命令

paste命令将多个文件的相应行默认以Tab分隔符横向连接起来,输出到标准输出。paste后可接多个文件,不限于2个文件。如果文件写成“-”,表示内容来自标准输...

1263

扫码关注云+社区

领取腾讯云代金券