当前位置: 首页 > news >正文

如何用Prometheus监控禁用了Actuator的SpringBoot?

需求来源

prometheus监控微服务一般都是使用micrometer结合actuator来做:

添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><version>1.9.14</version>
</dependency>

添加配置

server:port: 8081
management:server:port: 8082endpoints:enabled-by-default: trueweb:base-path: /statexposure:include: "prometheus"metrics:tags:application: ${spring.application.name}export:prometheus:enabled: true

prometheus中加上job,grafana中添加上dashboard,一个漂亮的监控页面就出来了。
问题是,actuator有安全风险,安全漏洞扫描会通不过,虽然改了端口号,改了访问路径,领导还是不同意啊,难不成自己写那么多的监控指标?
换一个思路,还是照常引用actuator,但是把访问路径给禁用了,然后自己写一个controller,把actuator的内容原样输出出来不就行了,同时给这个接口加上权限认证,巧了,prometheus就支持抓取接口上加basic认证。

如何禁用actuator的访问路径?

management:server:port: -1

这一个配置就足够了

如何输出指标数据?

public static String getMetricsData(CollectorRegistry collectorRegistry){try {Writer writer = new StringWriter();TextFormat.write004(writer, collectorRegistry.metricFamilySamples());return writer.toString();} catch (IOException exception) {logger.error("获取监控数据异常:{}", getStackTrace(exception));return "";}
}

代码来自org.springframework.boot.actuate.metrics.export.prometheus.TextOutputFormat#write

如何给接口加basic认证?

String authHeader= request.getHeader("Authorization");
public static boolean isBasicValid(String authHeader, String name, String pass){if((authHeader== null) || (authHeader.length() <= 6)){return false;}authHeader= authHeader.substring(6, authHeader.length());authHeader= new String(Base64.getDecoder().decode(authHeader));String authServer = name + ":" + pass;return Objects.equals(authHeader, authServer);
}

现在只需要再在配置文件中添加basic认证的name和pass就ok了。
完整的源码下载:https://github.com/xjs1919/enumdemo/tree/master/actuator-demo


http://www.mrgr.cn/news/36089.html

相关文章:

  • 修改msyql用户密码及更新mysql密码策略
  • 数据重塑:长宽数据转换【基于tidyr】
  • 浔川 AI 翻译 v5.0 已在进行内部测试!— 浔川社团官方联合会
  • ruoyi-暖气网站:如何复制一个新的网站程序,使用不同的数据库数据
  • GEE ui界面实现:用户自画多边形, 按面积比例在多边形中自动生成样点,导出多边形和样点shp,以及删除上一组多边形和样点(有视频效果展示)
  • Rust学习(一):初识Rust和Rust环境配置
  • 栈的深度解析:链式队列的实现
  • mini-lsm通关笔记Week2Overview
  • 密码管理器介绍
  • IT行业的发展现状与未来展望
  • 「4.3 」最大数线段树
  • java注解的概念与分类
  • C标准库<string.h>-str、strn开头的函数
  • FAT32格式和exfat格式的区别
  • Python Web 开发中的DevOps 实践与自动化运维
  • Vue学习(五)生命周期、组件
  • 关于预处理详解 #define 宏 #和##
  • 使用python搭建Web项目
  • 有限元方法仿真弹性体 (Finite Element Method, FEM)
  • 洛汗2保姆级辅助教程攻略:VMOS云手机辅助升级打怪!
  • SpringBoot集成阿里easyexcel(二)Excel监听以及常用工具类
  • 超详细 Git 教程:二十篇博客,三万字干货
  • 蜘蛛爬虫的ip来自机房,用户的爬虫来自于哪里
  • 2024低代码大赛火热进行,豪礼抢先看~
  • 【Linux实践】实验五:用户和组群账户管理
  • 网络原理3-应用层(HTTP/HTTPS)