监控actuator配置以及踩坑记录

news2024/12/23 20:48:53

以前这个监控都是领导去加,我顶多去修改一些时间参数,让我自己加还是头一次

正经踩了不少坑啊

1.依赖引入

先说配置过程

不对 先说我们项目结构

我们有一个common项目,作为一个公共项目。各种项目公用的依赖,都配置在common中

然后这个监控是各个项目都要加的,所以我也把actuator这个依赖放到common中了

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

2.冲突解决 

项目里边本来有knife4j了,然后现在加了 actuator之后,启动报错

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

 找了半天,都说是swagger什么问题,终于找到了一个靠谱的博客

引入springboot actuator和spring boot 2.7.1和knife4j 3.0 依赖版本冲突错误解决_白YY的博客-CSDN博客

2.1 yml文件 

management:
  endpoint:
    health:
      show-details: always

 2.2 配置类

    @Bean
    public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(
            WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier,
            ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes,
            CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties,
            Environment environment) {
        List<ExposableEndpoint<?>> allEndpoints = new ArrayList<>();
        Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
        allEndpoints.addAll(webEndpoints);
        allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
        allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
        String basePath = webEndpointProperties.getBasePath();
        EndpointMapping endpointMapping = new EndpointMapping(basePath);
        boolean shouldRegisterLinksMapping = shouldRegisterLinksMapping(webEndpointProperties,
                environment, basePath);
        return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes,
                corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath),
                shouldRegisterLinksMapping, null);
    }

    /**
     * shouldRegisterLinksMapping
     * @param webEndpointProperties webEndpointProperties
     * @param environment environment
     * @param basePath /
     * @return boolean
     */
    private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties,
                                               Environment environment, String basePath) {
        return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath)
                || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
    }

2.3 配置类引入

配置类是加到common里边了,但是我其他的项目没有扫描到这个配置类,应该是不在扫描路径中

打断点都不进那个class

解决方式

@Import

 3.权限接口放开

监控接口肯定是不经过权限校验的,所以要过滤掉跟监控有关的接口

.antMatchers("/actuator/**").permitAll()

3.1踩坑点

/** 和/* 的区别

/* 是拦截所有的文件夹,不包含子文件夹
/** 是拦截所有的文件夹及里面的子文件夹

如果你配置的是/actuator/*

那你访问/actuator/health是可以的,但是你想访问/actuator/health/liveness,会报权限不够

但是如果你配置的是/actuator/**

那你访问/actuator/health 以及/actuator/health/liveness 都是可以的

4.引入不到最新的包

4.1问题发现

console引用了common 

我本地没有问题,验证通过之后才部署线上,不管怎么重新构建,都没有效果

所以我怀疑肯定是没有引用到最新的common包

为了验证自己的猜想,我去github上把压缩包下载下来,去找class,一看,果然代码是旧的

那个按钮是可以下载的

 4.2 问题解决

1.2 修改mvn编译命令
修改打包命令,添加-U参数,如:mvn clean install package -U -DskipTests=true,

-U参数的含义是update-snapshots,保证可以更新快照包。

把线上的编译命令改了就好了

5.配置文件修改

 1,开启健康检查的liveness和readiness的接口访问

 2.关闭一些不需要检查的项

management:
  endpoint:
    health:
      probes:
        enabled: true
  health:
    livenessstate:
      enabled: true
    readinessstate:
      enabled: true


    rabbit:
      enabled: false

    Solr:
      enabled: false
    elasticsearch:
      enabled: false

6.线上验证

通过线上的命令行

wget http://localhost:8800/actuator/health/liveness

wget http://localhost:8800/actuator/health/readiness 

其实wget就是下载,你执行这两个之后,在当前路径可以看到两个文件,cat命令可以查看文件内容 

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

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

相关文章

Cassandra介绍(二)

1.8. 数据 存储 &#xff08; CommitLog、MemTable、SSTable &#xff09; 写请求分别到 CommitLog 和 MemTable, 并且 MemTable 的数据会刷写到磁盘 SSTable 上. 除 了写数据,还有索引也会保存到磁盘上. 先将数据写到磁盘中的 commitlog&#xff0c;同时追加到中内存中的数据…

物理机安装CentOS7

准备阶段 一个需要安装版本的iso镜像文件一个U盘一台物理机一台有windos系统的电脑 制作启动盘 下载UltraISO &#xff08;收费 搜一搜可以解决&#xff09; 写入硬盘映像 先格式化&#xff0c;选择usb-hdd v2 写入 可能会卡 耐心等待 安装系统 插入u盘 进入 启动项选择页…

python使用selenium做自动化,最新版Chrome与chromedriver不兼容

目前Chrome版本是118.0.5993.118 下方是版本对应的下载地址&#xff1a; chrome版本118&#xff1a; https://download.csdn.net/download/qq_35845339/88510476 chrome版本119&#xff1a; chromedriverlinux64https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testin…

台式电脑一键重装Win10系统详细教程

很多用户都在使用台式Win10电脑办公&#xff0c;如果电脑出现系统问题无法解决了&#xff0c;这时候就可以考虑给电脑重装系统哦&#xff0c;下面小编给大家详细介绍关于台式电脑一键重装Win10系统的步骤方法&#xff0c;安装后电脑就能恢复正常&#xff0c;也不会影响到用户的…

新生儿长牙期:原因、科普和注意事项

引言&#xff1a; 新生儿长牙期是新父母关心的话题之一&#xff0c;因为它标志着婴儿开始生长乳牙。尽管这个过程在每个婴儿身上都会发生&#xff0c;但它可能引起不适和不安。本文将科普新生儿长牙的原因&#xff0c;提供相关信息&#xff0c;并为父母和监护人提供注意事项&a…

lazarus:数据集快速导出为excel、csv、sql及其他多种格式

lazarus被成为快速开发工具&#xff0c;为什么说“快速”&#xff0c;重要的一点是&#xff0c;很多工具是现成的&#xff0c;可以拿来直接就用。比如数据导出&#xff0c;如果需要把数据集导出为excel格式文件&#xff0c;写代码可能需要很多时间。lazarus就不用了&#xff0c…

Python学习笔记--类的访问控制

九、类的访问控制 1、类属性的访问控制 在 Java 中&#xff0c;有 public &#xff08;公共&#xff09;属性 和 private &#xff08;私有&#xff09;属性&#xff0c;这可以对属性进行访问控制。 那么在 Python 中有没有属性的访问控制呢&#xff1f; 一般情况下&#x…

基于SSM的大学学生成长系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

5+单基因泛癌范文式教学,适合小白学习

今天给同学们分享一篇生信文章“Comprehensive Pan-Cancer Analysis of KIF18A as a Marker for Prognosis and Immunity”&#xff0c;这篇文章发表在Biomolecules期刊上&#xff0c;影响因子为5.5。 结果解读&#xff1a; KIF18A的表达及其在泛癌中的诊断价值 TIMER数据库被…

操作系统:虚拟存储管理技术

文章目录 虚拟存储管理技术一、实验目的二、实验要求与内容、过程与结果 系列文章 虚拟存储管理技术 一、实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式存储管理中页面置换算法模拟设计&#xf…

wpf Grid布局详解 `Auto` 和 `*` 是两种常见的设置方式 行或列占多个单元格,有点像excel里的合并单元格。使其余的列平均分配剩余的空间

比如只有行的界面 <Window x:Class"GenerateTokenApp.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/exp…

GoLong的学习之路(二十)进阶,语法之反射(reflect包)

这个是为了接上之前的语法篇的。按照我的学习计划&#xff0c;这里此时应该有一个小项目来做一个统合。但是吧&#xff0c;突然觉得&#xff0c;似乎也没必要。能学go的大部分肯定都是有其他语言的基础的。 接下来说反射 文章目录 反射介绍reflect包TypeOftype name和type kin…

重磅!OpenAI发布GPT-4 Turbo,史上最强ChatGPT来了!

11月7日凌晨&#xff0c;OpenAI在美国旧金山举办首届开发者大会&#xff0c;与来自全球的开发者、企业、合作伙伴分享了最新产品。 微软首席执行官Satya Nadella作为特邀嘉宾出席了此次盛会。 会上&#xff0c;OpenAI发布了128K 上下文的GPT-4 Turbo、自定义GPT、DALLE 3 API…

vscode中 vue3+ts 项目的提示失效,volar插件失效问题解决方案

文章目录 前情提要bug回顾解决方案最后 前情提要 说起来很耻辱&#xff0c;从mac环境换到window环境&#xff0c;vscode的配置都是云端更新过来的&#xff0c;应该是一切正常才对&#xff0c;奇怪的是我的项目环境出现问题了&#xff0c;关于组件的ts和追踪都没有效果&#xff…

Ansible入门—安装部署及各个模块应用案例(超详细)

目录 前言 一、环境概况 修改主机名&#xff08;可选项&#xff09; 二、安装部署 1.安装epel扩展源 2.安装Ansible 3.修改Ansible的hosts文件 4.生成密钥 三、Ansible模块使用介绍 Command模块 Shell模块 User模块 Copy模块 File模块 Hostname模块 Yum模块 Se…

企业数字展厅该如何设计?

设计企业数字展厅涉及创建一个虚拟空间&#xff0c;以引人入胜的沉浸式方式展示公司的产品、服务和品牌。以下步骤可帮助设计有效的数字展厅&#xff1a; 1.定义目标&#xff1a; 确定数字展厅的用途。是为了潜在客户开发、产品展示、品牌推广还是其他目的&#xff1f;明确的…

LoRaWan模块应用于智慧城市景观灯

智能路灯作为一种新型的市政公用设施&#xff0c;它不仅具备了常规的照明能力&#xff0c;还具备各种智能装置和感应器&#xff0c;能够实现对太阳的自发充电&#xff1b;视频监控&#xff0c;环境监测等多种应用。智能路灯集成了各种新型的设备&#xff0c;是智慧都市的基础&a…

还在按键进入BIOS?其实进入BIOS有更便捷的方法

在能够配置各种硬件参数之前,首先必须学习进入ASUS BIOS实用程序的正确方法。无论你面对的是PRIME、ROG、TUF GAMING还是任何其他型号,所涉及的步骤都是相同的。 华硕主板的BIOS访问键通常是“F2”或“Del”键。在启动或启动屏幕期间,只要ASUS徽标出现,就重复按下此键以进…

响应式建筑地产工程企业网站模板源码带后台

模板信息&#xff1a; 模板编号&#xff1a;9157 模板编码&#xff1a;UTF8 模板颜色&#xff1a;多色 模板分类&#xff1a;基建、施工、地产、物业 适合行业&#xff1a;建筑施工类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xf…

nuxt项目:vant打包后样式顺序错乱问题及解决方案

不要引入vant/nuxt这个 需要的时候引入即可