34. 应用监控【监控端点配置】

news2024/10/7 14:28:42




       当一个 Spring Boot 项目运行时,开发者需要对 Spring Boot 项目进行实时监控来获取项目的运行情况,在项目出错时能够实现自动报警等。 Spring Boot 提供了actuator 来帮助开发者获取应用程序的实时运行数据。开发者可以选择使用 HTTP 端点或JMX来管理和监控应用程序,获取应用程序的运行数据,包括健康状况、应用信息、内存使用情况等。

1、开启端点

       在Spring Boot 中开启应用监控非常容易 ,只需要添spring-boot-starter-actuator 依赖即可。依赖如下:

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

       开发者可以使用执行器中的端点( EndPoints )对应用进行监控或者与应用进行交互,Spring Boot 默认包含许多端点 ,如下图所示:
在这里插入图片描述
       如果系统是一个web应用的话,还会有其他端点:
在这里插入图片描述
       这些端点大部分都是默认开启的, 只有 shutdown 端点未开启,如果需要开启,可以在 application.properties 文件中添加以下配置信息:

#开启shutdown端点
management.endpoint.shutdown.enabled=true

       如果开发者不想暴露这么多端点,那么可以关闭默认配置,然后手动指定需要开启哪些端点, 如下配置表示关闭所有端点,只开启 info 端点:

#关闭所有端点,只开启 info 端点
management.endpoints.enabled-by-default=false 
management.endpoint.info.enabled=true

2、暴露端点

       由于有的端点包含敏感信息,因此端点启用和暴露是两码事,以下图展示了默认暴露的断点情况。
在这里插入图片描述
       在web应用中默认暴露了health和info两个端点,以下是启动日志:
在这里插入图片描述
       通过日志提供的路径访问该地址:localhost:8080/actuator
在这里插入图片描述
       我们可以在配置文件中自定义需要暴露哪些端点,例如要暴露 mappings、metrics 端点,添加如下配置即可:

#暴露指定端点
management.endpoints.web.exposure.include=mappings,metrics

在这里插入图片描述

#暴露所有端点
management.endpoints.web.exposure.include=*

在这里插入图片描述

3、端点保护

       如果这些端点需要对外提供服务,那么最好能够将这些端点保护起来,若 classpath 中存在 Spring Security ,则默认使用 Spring Security 保护,使用 Spring Security 保护的步骤很简单,首先添加 Spring Security 依赖:

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

Java配置文件

import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception{
        httpSecurity.requestMatcher(EndpointRequest.toAnyEndpoint())
                .authorizeRequests()
                .anyRequest().hasAnyRole("admin")
                .and()
                .httpBasic();
    }
}

       在 HttpSecurity 中配置 Endpoint 都需要具有 admin 角色才能访问,同时开启 httpBasic 认证。注意, endpointRequest.toAnyEndpoint() 表示匹配所有的 endpoint,例如 shutdown、mappings、health 等,但是不包括开发者通过@RequestMapping 注解定义的接口,这里为了演示方便, Spring Security 就不连接数据 了, 直接在 appIication. properties 定义一个用户进行测试,代码如下:

spring.security.user.name=admin
spring.security.user.password=123456
spring.security.user.roles=admin

       定义完成后启动 Spring Boot 项目 再去访问 health 端点,需要登录后才可以访问
在这里插入图片描述

4、端点晌应缓存

       对于一些不带参数的端点请求会自动进行缓存,我们可以通过如下方式配置缓存时间。这个配置表示 beans 端点的缓存时间为 100s ,如果要配置其他端点,只需将 beans 修改为其他端点名称即可。注意,如果端点添加了 Spring Security 保护 ,此时 Principal 会被视为端点的输入,因此端点响应将不被缓存。

management.endpoint.beans.cache.time-to-live=100s

5、路径映射

       默认情况下 ,所有端点都暴露在/actuator路径下,例如 health 端点的访问路径是/actuator/health ,如果开发者需要对端点路径进行定制,可以通过如下配置进行,访问地址变为:localhost:8080/healthcheck

#路径映射
management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck

6、CORS 支持

       所有端点默认都没有开启跨域,开发者可以通过如下配置快速开启 CORS 支持进而实现跨域。这个配置表示允许端点处理来自 http://localhost:8081 地址的请求,允许的请求方法为 GET、POST

management.endpoints.web.cors.allowed-origins=http://localhost:8081
management.endpoints.web.cors.allowed-methods=GET,POST

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九龙证券|银行资本管理办法迎“大修” 信用风险权重法调整优化

1年期AAA中债商业银行同业存单到期收益率 日前迎来“大修”的商业银行本钱办理方法&#xff0c;在债券商场激起“涟漪”——债券商场一改此前平静态势&#xff0c;连续两日跌落。 2月21日&#xff0c;10年期国债收益率较上星期五上行2.9个基点&#xff0c;至2.919%&#xff1b…

记录charles手机端配置https的成功过程

1.百度 https://www.likecs.com/show-204025787.html https://blog.csdn.net/enthan809882/article/details/117572094?spm1001.2101.3001.6650.6&utm_mediumdistribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-6-117572094-blog-122959902.pc_rele…

余承东:问界就是华为生态汽车,不涉及20万以下车型

今天界面新闻发布了一篇余承东的专访文章&#xff0c;谈到了外界对华为造车的质疑&#xff0c;以及回应了与赛力斯的合作&#xff0c;后续HI模式与智选车模式如何推进的话题。摘录重点如下&#xff1a;1.首先&#xff0c;继续「不造车」“华为没有必要自己下场造车。”在他看来…

Spring MVC 源码 - HandlerMapping 组件(四)之 AbstractUrlHandlerMapping

HandlerMapping 组件HandlerMapping 组件&#xff0c;请求的处理器匹配器&#xff0c;负责为请求找到合适的 HandlerExecutionChain 处理器执行链&#xff0c;包含处理器&#xff08;handler&#xff09;和拦截器们&#xff08;interceptors&#xff09;handler 处理器是 Objec…

【GO】k8s 管理系统项目[前端部分–Header]

【GO】k8s 管理系统项目[前端部分–Header] 1. 实现功能 面包屑展开关闭按钮用户信息(退出按钮) 2. 代码部分 src/layout/Layout.vue 在之前预留header位置补上 <!-- header --><el-header class"header"><el-row :gutter"20"><e…

python基于vue健身房课程预约平台

可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发3 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 2.5 django框架 5 3 系统分析 6 3.1…

Sqoop利用Sql将mysql表_导入数据到Hive---大数据之Apache Sqoop工作笔记004

然后来看一下把数据导入到hive中去 可以去官网去看看文档,有什么参数 这里用的是hive-import对吧,然后 这里hive-overwrite是覆盖 这个hive-table staff_hive 是创建 一个hive的表是 staff_hive 然后我们先去启动一下hive 启动以后,然后我们去查一下,shot tables 可以看到 里…

Ubuntu 22.04.2 LTS安装Apollo8.0

本人硬件环境&#xff1a; CPU&#xff1a;Intel Core i7 6700 显卡&#xff08;GPU&#xff09;&#xff1a;NVIDIA GTX 3080 10G 内存&#xff1a;SAMSUNG DDR4 32GB 硬盘&#xff1a;双SSD系统盘 2T,双系统&#xff08;windows,ubuntu&#xff09; 一、安装Ubuntu 22.04…

【极海APM32替代笔记】HAL库中的SPI传输(可利用中断或DMA进行连续传输)

【极海APM32替代笔记】HAL库中的SPI传输&#xff08;可利用中断或DMA进行连续传输&#xff09; SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。 SPI&#xff0c;是一种高…

Ssh协议绑定Git服务器

1、起因在公司开发一般使用gitlab部署公司git代码管理&#xff0c;个人的代码存储在公司gitlab上就显得不合时宜了&#xff0c;所以找了gitee上来存储代码。2、经过搜索了下github.com,gitee.com 其他当然有阿里云的云效等&#xff0c;个人使用优先国内git服务器&#xff0c;理…

【Netty系列・扫盲篇】Netty从入门到学废

文章目录1. 概述1.1 Netty 的地位1.2 Netty 的优势2. Hello World2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理&#x1f4a1; 提示3. 组件3.1 EventLoop&#x1f4a1; 优雅关闭演示 NioEventLoop 处理 io 事件&#x1f4a1; handler 执行中如何换人&#xff1f;演示 NioEventLo…

C# 业务单据号生成器(定义规则、获取编号、流水号)

系列文章 C#底层库–数据库访问帮助类&#xff08;MySQL版&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126886379 C#底层库–JSON帮助类_详细&#xff08;序列化、反序列化、list、datatable&#xff09; 本文链接&#xff1a;htt…

GEE学习笔记 六十:GEE中生成GIF动画

生成GIF动画这个是GEE新增加的功能之一&#xff0c;这一篇文章我会简单介绍一下如何使用GEE来制作GIF动画。 相关API如下&#xff1a; 参数含义&#xff1a; params&#xff1a;设置GIF动画显示参数&#xff0c;详细的参数可以参考ee.data.getMapId() callback&#xff1a;回调…

基于RK3399地面测试台多参数记录仪测试平台软件设计

随着高科技技术在现代化战争中日益重要作用&#xff0c;飞行装备的研制亦从单元体制发展 到多元体制。航空装置系统在设计过程中&#xff0c;需要大量测试工作&#xff0c;尤其是需要把系统研制 和飞行试验中各部分工作状态参数实时记录&#xff0c;用以分析、改进设计。记录仪…

uniApp使用uni.chooseAddress()获取微信收货地址

获取微信收货地址 使用uniapp或者原生微信小程序获取微信的收货地址 1、需要在开发平台申请权限 在【开发】-【开发管理】-【接口设置】-【获取用户收货地址】–申请该权限&#xff0c;审核通过后方可使用。 2、在源码上添加配置 2.1 在uniapp上开发配置 打开manifest.js…

ECharts在vue中使用 与 图表自适应

目录 使用思路&#xff1a; Echarts在vue中使用 引入 ECharts 绘制图表实例&#xff08;复杂&#xff09; 实例效果&#xff1a; 官方入门实例&#xff08;简单&#xff09; 官方入门实例效果 ​编辑 图表自适应 ECharts 的功能十分强大,可以生成多种形式的图表,配置…

xilinx FPGA在线调试方法总结(vivado+ila+vio)

本文主要介绍xilinx FPGA开发过程中常用的调试方法&#xff0c;包括ILA、VIO和TCL命令等等&#xff0c;详细介绍了如何使用。一、FPGA调试基本原则根据实际的输出结果表现&#xff0c;来推测可能的原因&#xff0c;再在模块中加ILA信号&#xff0c;设置抓信号条件&#xff0c;逐…

Java 比较器Comparable与Comparator的List集合排序使用

一、Collections类 Collections则是集合类的一个工具类/帮助类&#xff0c;其中提供了一系列静态方法&#xff0c;用于对集合中元素进行排序、搜索以及线程安全等各种操作。 用于集合排序的sort方法&#xff0c;此方法主要是通过Comparable或Comparator来实现排序。 (1) 根据其…

如何30天零基础入门网络安全?自学网络安全有哪些缺点?

网络安全的前景如何&#xff0c;盾叔已经说过很多遍了&#xff0c;今天专题是替一些想入门网络安全&#xff0c;但还迷茫不知所措的同学解一解惑。想30天零基础入门网络安全&#xff0c;这些你一定要搞清楚。 一、学习网络安全容易造成的误区 1、把编程当作目的&#xff0c;忽…

AI生成图像竟如此真实了?Stable Diffusion Model本地部署教程

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…