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

Spring Boot Actuator:打造高效监控系统

🌟 一、核心目标:让应用“可被监控”和“可被管理”

Spring Boot Actuator 提供了一系列 预定义的“端点(Endpoints)”,比如:

  • /actuator/health → 查看健康状态
  • /actuator/info → 查看应用信息
  • /actuator/metrics → 查看性能指标
  • /actuator/env → 查看环境变量
  • /actuator/loggers → 动态调整日志级别

这些端点默认通过 HTTP 暴露,供运维、监控系统或开发者访问。


🚪 二、默认 HTTP 路由规则

✅ 默认路径格式:

/actuator/{id}
端点 ID默认 URL
health/actuator/health
info/actuator/info
metrics/actuator/metrics
beans/actuator/beans

🔹 这个 /actuator 是一个安全前缀,防止和其他业务接口冲突。
🔹 如果你的应用是微服务,这个路径就是外部系统(如 Prometheus、Zabbix)采集数据的入口。


🛠️ 三、6.3.1 自定义管理端点路径(base-pathpath-mapping

有时候你不想用 /actuator,比如:

  • 已经被其他功能占用了
  • 想要更简洁的路径(如 /health 而不是 /actuator/health
  • 想统一管理入口为 /manage

1. 修改基础路径:management.endpoints.web.base-path

management.endpoints.web.base-path=/manage

✅ 效果:

  • 原来的 /actuator/health → 变成 /manage/health
  • 所有端点都从 /actuator/manage

📌 注意:这个路径是相对于 server.servlet.context-path 的。
比如你设置了 server.servlet.context-path=/api,那么最终路径是 /api/manage/health


2. 单独映射某个端点:management.endpoints.web.path-mapping

management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck

✅ 效果:

  • /actuator/health → 映射到 /healthcheck
  • 其他端点还是 /info, /metrics

🎯 用途:你想让健康检查路径更语义化,比如 /healthcheck 更符合运维习惯。


🔄 四、6.3.2 使用独立的管理端口(management.server.port

默认行为:

所有 Actuator 端点和业务接口共用同一个端口(如 8080)。

问题:

  • 安全风险:所有端点暴露在公网
  • 路由混乱:业务和管理接口混在一起

解决方案:用独立端口

management.server.port=8081

✅ 效果:

  • 业务接口:http://localhost:8080/
  • 管理接口:http://localhost:8081/actuator/health

🔐 好处:

  • 可以只对内网开放 8081 端口
  • 主应用用 HTTPS,管理端用 HTTP(或反过来)
  • 避免管理流量影响业务性能

⚠️ 注意:在 Cloud Foundry 等 PaaS 平台上,默认只转发 8080 端口,你需要手动配置路由才能访问自定义管理端口。


🔐 五、6.3.3 为管理端配置独立的 SSL(HTTPS)

你可以让:

  • 主应用走 HTTPS(443)
  • 管理端走 HTTP(8081),或
  • 主应用走 HTTP,管理端走 HTTPS

示例:主应用 HTTPS,管理端 HTTP

# 主应用 HTTPS
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:main.jks
server.ssl.key-password=secret# 管理端 HTTP
management.server.port=8080
management.server.ssl.enabled=false

示例:两者都用 HTTPS,但证书不同

# 主应用
server.port=8443
server.ssl.key-store=classpath:main.jks# 管理端
management.server.port=8081
management.server.ssl.enabled=true
management.server.ssl.key-store=classpath:management.jks

🎯 用途:管理端使用内部 CA 签发的证书,主应用使用公网证书。


🧱 六、6.3.4 绑定管理端到特定地址(management.server.address

你想让管理端只能从本机访问,防止外部攻击。

management.server.port=8081
management.server.address=127.0.0.1

✅ 效果:

  • 只有 localhost 能访问 http://127.0.0.1:8081/actuator/...
  • 外部 IP 访问会被拒绝

🔐 安全最佳实践:在生产环境中,管理端只绑定到内网或本地回环地址。

⚠️ 注意:只有当 management.server.port ≠ server.port 时,才能设置 management.server.address


🔒 七、6.3.5 关闭 HTTP 端点(完全禁用)

如果你不想通过 HTTP 暴露任何管理接口,有两种方式:

方法一:关闭管理端口

management.server.port=-1

✅ 效果:所有 HTTP 管理端点完全不可访问

适合:你只通过 JMX 或其他方式监控


方法二:排除所有暴露的端点

management.endpoints.web.exposure.exclude=*

或者:

management.endpoints.web.exposure.include=  # 留空

🔁 区别:

  • port=-1 是彻底关闭 HTTP 服务
  • exclude=* 是保留端口,但不暴露任何端点(未来可以动态开启)

📊 总结:一张表看懂关键配置

配置项作用示例值说明
management.endpoints.web.base-path修改管理端基础路径/manage所有端点前缀
management.endpoints.web.path-mapping.health单独映射某个端点healthcheck/health/healthcheck
management.server.port独立管理端口8081推荐用于生产
management.server.ssl.*管理端独立 SSLkey-store=...可与主应用不同
management.server.address绑定管理端 IP127.0.0.1提高安全性
management.server.port=-1完全关闭 HTTP 管理-1最彻底
management.endpoints.web.exposure.exclude=*不暴露任何端点*保留端口,关闭暴露

💡 实际建议(生产环境最佳实践)

# 1. 使用独立管理端口
management.server.port=8081# 2. 只允许本地访问管理端
management.server.address=127.0.0.1# 3. 使用简洁路径(可选)
management.endpoints.web.base-path=/# 4. 映射健康检查为 /health
management.endpoints.web.path-mapping.health=health# 5. 按需暴露端点(安全!)
management.endpoints.web.exposure.include=health,info,metrics,loggers# 6. 关闭敏感端点(如 env、beans)
management.endpoints.web.exposure.exclude=env,beans

🧩 为什么这些配置很重要?

场景如何受益
安全审计管理端只对内网开放,降低攻击面
微服务监控Prometheus 抓取 /actuator/metrics
故障排查运维通过 /actuator/env 查看配置
动态调优通过 /actuator/loggers 调整日志级别
CI/CD 发布健康检查 /actuator/health 决定是否上线

这套机制让你的应用不再是“黑盒”,而是具备了 可观测性(Observability) 的现代云原生服务。

如果你需要,我可以给你一个完整的 application-prod.yml 示例,展示生产环境下的安全配置。

http://www.dtcms.com/a/521476.html

相关文章:

  • 凡客衬衫官方网站东莞五金网站建设
  • 怎么找网站建设宁夏交通厅建设局网站
  • 使用 n8n 构建自动化科技新闻速览工作流:从 RSS 到 AI 摘要生成与文件存储
  • mysy配置C++
  • 做html网站模板咸阳市城市建设管理局网站
  • 做英文网站有哪些网站建设必须买主机吗
  • 深圳做小程序网站开发服装设计效果图
  • 公司网站首页图片素材台州网站建设公司
  • 项目——基于C/S架构的预约系统平台 (1)
  • 机器学习预测波动率辅助ETF动态止损边界设定
  • 搭建网站一条龙柳江网站开发
  • 网站建设木马科技做美妆网站的关键词
  • 区块链的专业名字从基础到应用​​,从​​技术到生态
  • php个人网站源码带音乐如何去国外网站看内容
  • 关于我们 About Techub News
  • 大腾智能PDM在华为云生态中的应用实践——旭派锂能研发管理数字化转型
  • 椭圆曲线密码学的效率核心:单标量与多标量乘法详解
  • 期货看盘和下单简要说明
  • c2c网站系统芜湖哪家公司做网站不错
  • 网站做cdn怎么弄如何去掉wordpress作者链接
  • 每日开源项目1——HyperLogLog库
  • Dify、FastGPT、BuildingAI 与 RAGFlow 深度体验记录
  • ESP32S3入门之环境搭建
  • 深圳建网站兴田德润很好本地网站更新不了 vps登陆可以
  • 云存储能用来做网站吗网页制作费用大概多少
  • 2017辽宁建设厅查询网站大连网站建设公司排名
  • 性能测试-jmeter16-性能环境搭建、脚本编写、测试数据构造
  • 网站建设分为哪几种类型平台类网站建设价格表
  • kubernets简介和部署
  • YOLO V4 整体架构的由来及用法 详解