二十九、springBoot的监控和管理

2023-11-11

Spring Boot包含很多其他的特性,它们可以帮你监控和管理发布到生产环境的应用。你可以选择使用HTTP端点,JMX或远程shell(SSH或Telnet)来管理和监控应用。审计(Auditing),健康(health)和数据采集(metrics gathering)会自动应用到你的应用。
执行器HTTP端点仅适用于基于Spring MVC的应用程序。

介绍

Metrics基本上是成熟公司里面必须做的一件事情,简单点来说就是对应用的监控,之前在一些技术不成熟的公司其实是不了解这种概念,因为业务跟技术是相关的 当业务庞大起来,技术也会相对复杂起来,对这些复杂的系统进行监控就存在必要性了,特别是在soa化的系统中,完整一个软件的功能分布在各个系统中,针对这些功能进行监控就更必要了 而Spring Boot Actuator 提供了metrics service,让监控变得统一化了,方便管理

开启production-ready特性

spring-boot-actuator模块提供了Spring Boot所有的production-ready特性。启用该特性的最简单方式就是添加对spring-boot-starter-actuator ‘Starter POM’的依赖。

执行器(Actuator)的定义:执行器是一个制造业术语,指的是用于移动或控制东西的一个机械装置。一个很小的改变就能让执行器产生大量的运动。

基于Maven的项目想要添加执行器只需添加下面的’starter’依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

端点

执行器端点允许你监控应用及与应用进行交互。Spring Boot包含很多内置的端点,你也可以添加自己的。例如,health端点提供了应用的基本健康信息。

端点暴露的方式取决于你采用的技术类型。大部分应用选择HTTP监控,端点的ID映射到一个URL。例如,默认情况下,health端点将被映射到/health。

下面的端点都是可用的:

ID 描述 敏感(Sensitive)
autoconfig 显示一个auto-configuration的报告,该报告展示所有auto-configuration候选者及它们被应用或未被应用的原因 true
beans 显示一个应用中所有Spring Beans的完整列表 true
configprops 显示一个所有@ConfigurationProperties的整理列表 true
dump 执行一个线程转储 true
env 暴露来自Spring ConfigurableEnvironment的属性 true
health 展示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情) false
info 显示任意的应用信息 false
metrics 展示当前应用的’指标’信息 true
mappings 显示一个所有@RequestMapping路径的整理列表 true
shutdown 允许应用以优雅的方式关闭(默认情况下不启用) true
trace 显示trace信息(默认为最新的一些HTTP请求) true

如果您使用Spring MVC,还可以使用以下附加端点:

ID 描述 敏感默认值
docs 显示Actuator端点的文档,包括示例请求和响应。需要spring-boot-actuator-docs在类路径上 false
heapdump 返回GZip压缩hprof堆转储文件。 true
jolokia 通过HTTP暴露JMX bean(当Jolokia在类路径上时)。 true
logfile 返回日志文件的内容(if logging.file或logging.path属性已设置)。支持使用HTTP Range标头来检索部分日志文件的内容。 true

根据端点是如何暴露的,该sensitive属性可以用作安全提示。例如,敏感端点在通过HTTP访问时将需要用户名/密码(或者如果Web安全性未启用,则简单地禁用)。

自定义端点

使用Spring属性可以自定义端点。你可以设置端点是否开启(enabled),是否敏感(sensitive),甚至它的id。例如,下面的application.properties改变了敏感性和beans端点的id,也启用了shutdown。

endpoints.beans.id=springbeans
endpoints.beans.sensitive=false
endpoints.shutdown.enabled=true

注:前缀endpoints + . + name被用来唯一的标识被配置的端点。

默认情况下,除了shutdown外的所有端点都是启用的。如果希望指定选择端点的启用,你可以使用endpoints.enabled属性。

例如,下面的配置禁用了除info外的所有端点:

endpoints.enabled=false
endpoints.info.enabled=true

用于执行器MVC端点的超媒体

如果endpoints.hypermedia.enabled设置为true,并且 Spring HATEOAS位于类路径上(例如通过spring-boot-starter-hateoas或使用 Spring Data REST),则使用超媒体链接增强了执行器的HTTP端点,并添加了“发现页面”,其中包含所有端点。“发现页面” /actuator默认可用。它被实现为端点,允许使用属性来配置其路径(endpoints.actuator.path)以及是否启用(endpoints.actuator.enabled)。

当配置了自定义管理上下文路径时,“发现页面”将自动从/actuator管理上下文的根移动。例如,如果管理上下文路径/management那么发现页面将可用/management。

如果HAL浏览器通过其webjar(org.webjars:hal-browser)或spring-data-rest-hal-browser类似的HTML“发现页面”在类路径中,则以HAL浏览器的形式提供。

CORS支持

跨原始资源共享 (CORS)是一种W3C规范,允许您以灵活的方式指定什么样的跨域请求被授权。执行器的MVC端点可以配置为支持这种情况。

默认情况下禁用CORS支持,只有在endpoints.cors.allowed-origins属性设置完成后才能启用 。下面的配置允许 GET和POST来自example.com域的呼叫:

endpoints.cors.allowed-origins = http://example.com
 endpoints.cors.allowed-methods = GET,POST
 ```
 >EndpointCorsProperties 以获取完整的选项列表。

健康信息

健康信息可以用来检查应用的运行状态。它经常被监控软件用来提醒人们生产系统是否停止。health端点暴露的默认信息取决于端点是如何被访问的。对于一个非安全,未认证的连接只返回一个简单的’status’信息。对于一个安全或认证过的连接其他详细信息也会展示

健康信息是从你的ApplicationContext中定义的所有HealthIndicator beans收集过来的。Spring Boot包含很多auto-configured的HealthIndicators,你也可以写自己的。

安全与HealthIndicators

HealthIndicators返回的信息常常性质上有点敏感。例如,你可能不想将数据库服务器的详情发布到外面。因此,在使用一个未认证的HTTP连接时,默认只会暴露健康状态(health status)。如果想将所有的健康信息暴露出去,你可以把endpoints.health.sensitive设置为false。

为防止’拒绝服务’攻击,Hea

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二十九、springBoot的监控和管理 的相关文章

随机推荐

  • 【计算机视觉

    文章目录 一 检测相关 18篇 1 1 LaRS A Diverse Panoptic Maritime Obstacle Detection Dataset and Benchmark 1 2 Far3D Expanding the Ho
  • C++中使用初始化列表出现原因

    1 必须这样做 如果我们有一个类成员 它本身是一个类或者是一个结构 而且这个成员它只有一个带参数的构造函数 而没有默认构造函数 这时要对这个类成员进行初始化 就必须调用这个类成员的带参数的构造函数 如果没有初始化列表 那么他将无法完成第一步
  • 暑假数论专题

    Prime Distance 给定两个整数 L R 求闭区间 L R 中相邻两个质数差值最小的数对与差值最大的数对 当存在多个时 输出靠前的素数对 多组数据 每行两个数 L R Input Output 2 17 14 17 2 3 are
  • Java用ssm开发家教系统家教网站家教兼职系统功能很齐全

    简介 用户可以注册成为学员也可以是教员 教员发布家教信息 学员根据自己的要求查找符合自己的教员 学员预约教员的某一天去家教 教员可以在个人中心里查看 是否接受该预约 在教员接受或拒绝之前 学员随时可以取消该预约 若教员不处理改预约 则该预约
  • Android开发入门教程

    当涉及到 Android 开发入门教程时 以下是一个详细的大纲 包含了一些常见的实践和指导 1 Android 概述 介绍 Android 平台的基本概念和特点 解释 Android 应用的组成和架构 说明 Android 应用的开发环境和
  • 文献管理工具之 Jabref vs Zotero 与 Zotero 使用 markdown

    本文章为自创文章 未获允许请勿随意转载 转载请带上出处 谢谢合作 本文链接 https blog csdn net qq 48019718 article details 114642743 0 前言 最近闲来无事 等信息 ing 就在做毕
  • 时间推送练习

    1 同一个数轴X上有两个点的集合A A1 A2 Am 和B B1 B2 Bn Ai和Bj均为正整数 A B已经按照从小到大排好序 A B均不为空 给定一个距离R 正整数 列出同时满足如下条件的所有 Ai Bj 数对 Ai lt Bj Ai
  • 优越数

    include
  • linux外接光驱下载文件,Linux 从光驱拷贝文件以及加载新的硬盘

    加载光驱 1 将ISO文件放到光盘中 点击确定 2 连接光驱 如果是虚拟机 菜单VM gtsetting gtHardware gt选CD DVD gtConnection 3 将光驱加载到一个目录下 要先mount root lvs dr
  • SDN初创公司Big Switch获得Intel的650万美元融资,挑战思科的网络技术霸权

    原文地址 http www 36kr com p 201289 html SDN 软件定义网络 公司Big Switch Networks今天从 Intel Capital 手中拿到一笔 650 万美元的融资 这笔融资让 Big Switc
  • 换了个数据结构,一不小心把系统性能提升了10倍以上

    很多Java开发同学经常有一个疑惑 搞Java开发也需要懂算法吗 本文咱们就来谈谈这个问题 其实如果你开发一个非常复杂而且有挑战的大型系统 那么必然会在系统中使用算法 同理 如果你可以将算法进行合理的优化 那么也可以将系统性能提升几十倍 空
  • 生成新的数据列:使用R语言进行数据处理

    生成新的数据列 使用R语言进行数据处理 在数据分析和统计建模中 我们经常需要对现有数据进行处理和转换 以生成新的数据列来满足分析需求 R语言是一种功能强大的数据分析和统计建模工具 提供了各种函数和技术来处理数据 本文将介绍如何使用R语言生成
  • BSD协议和FreeBSD

    BSD协议 开放分类 BSD 协议 开源 BSD是 Berkely Software Distribution 的缩写 意思是 伯克利软件发行版 显然 BSD这个名称并不是我们现在所理解的操作系统 而且其原意也并非简单的操作系 统 而是一整
  • 通过smtplib和email发送验证码到电子邮箱(Python3.7.X)

    使用前需要在发送方的邮箱里开启POP3 SMTP服务 这里以QQ邮箱为例 设置 账户 开启服务 获得授权码 以下案例模拟发送一串纯文本的6位数字验证码 比较简单易懂 可在此基础上再完善 效果演示 代码展示 coding utf 8 impo
  • JSON.stringify 语法实例讲解

    语法 JSON stringify value replacer space value 是必选字段 就是你输入的对象 比如数组 类等 replacer 这个是可选的 它又分为2种方式 一种是数组 第二种是方法 情况一 replacer为数
  • 给打包文件的加上时间或者版本号

    const Version new Date getTime output path config build assetsRoot publicPath http www baidu com 修改 https iv admin 这部分为你
  • python运行代码不显示warning输出

    两种方法可以在python运行代码的时候不显示warning输出 方法1 import warnings warnings filterwarnings ignore 方法2 python W ignore run py
  • CGAL 快速构建三维凸包

    目录 一 三维凸包 二 代码实现 三 结果展示 四 结论 一 三维凸包 和二维凸包类似 给定一堆三维空间中的点 包含它们的最小凸多面体称为这些点的凸包 二 代码实现 include
  • java求两个数的最大公约数和最小公倍数

    解题思路 1 求最大公约数用辗转相除法 将较大的那个数对较小的那个数取余 如果a gt b 那就a b 取余得出的结果为下次运算的除数 上面较小的那个数将作为被除数 直到运算到较小为0时 返回较大的数 这个数就是最大公约数 2 最小公倍数就
  • 二十九、springBoot的监控和管理

    Spring Boot包含很多其他的特性 它们可以帮你监控和管理发布到生产环境的应用 你可以选择使用HTTP端点 JMX或远程shell SSH或Telnet 来管理和监控应用 审计 Auditing 健康 health 和数据采集 met