跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Spring Boot监控
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Spring Boot监控 = == 介绍 == Spring Boot监控是Spring Boot框架提供的一套用于实时监控应用程序运行状态的机制。通过内置的Actuator模块和第三方工具(如Prometheus、Grafana等),开发者可以收集应用的性能指标、健康状况、配置信息等关键数据,帮助诊断问题并优化系统性能。 监控功能主要包括: * '''健康检查''':验证数据库连接、磁盘空间等基础设施状态 * '''指标收集''':跟踪内存使用率、请求响应时间等运行时数据 * '''环境信息''':查看配置属性、自动配置报告 * '''审计日志''':记录用户操作事件 == 核心组件 == === Spring Boot Actuator === Actuator是Spring Boot的官方监控模块,通过HTTP端点或JMX暴露监控信息。启用基础配置: <syntaxhighlight lang="xml"> <!-- pom.xml 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </syntaxhighlight> === 常用监控端点 === {| class="wikitable" |+ 内置端点列表 ! 端点 !! 描述 !! 默认启用 |- | <code>/actuator/health</code> || 应用健康状态 || 是 |- | <code>/actuator/metrics</code> || 系统指标(内存、线程等) || 是 |- | <code>/actuator/env</code> || 环境变量和配置 || 否 |- | <code>/actuator/loggers</code> || 查看/修改日志级别 || 否 |} == 配置示例 == === 基础配置 === 在<code>application.properties</code>中开放所有端点: <syntaxhighlight lang="properties"> # 开放所有端点 management.endpoints.web.exposure.include=* # 显示健康详情 management.endpoint.health.show-details=always </syntaxhighlight> === 自定义健康检查 === 实现自定义健康指标: <syntaxhighlight lang="java"> @Component public class CustomHealthIndicator implements HealthIndicator { @Override public Health health() { boolean error = checkSystem(); // 自定义检查逻辑 if (error) { return Health.down().withDetail("Error Code", 500).build(); } return Health.up().build(); } } </syntaxhighlight> 访问<code>/actuator/health</code>将返回: <syntaxhighlight lang="json"> { "status": "UP", "components": { "custom": { "status": "UP" }, "diskSpace": {...} } } </syntaxhighlight> == 高级监控方案 == === Prometheus + Grafana === <mermaid> graph LR A[Spring Boot] -->|暴露指标| B(Prometheus) B -->|提供数据源| C[Grafana] C -->|可视化| D[监控仪表盘] </mermaid> 1. 添加Prometheus依赖: <syntaxhighlight lang="xml"> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> </syntaxhighlight> 2. 配置<code>application.properties</code>: <syntaxhighlight lang="properties"> management.endpoints.web.exposure.include=health,metrics,prometheus </syntaxhighlight> === 监控指标公式 === 关键性能指标计算: * 请求错误率 = <math>\frac{\text{错误请求数}}{\text{总请求数}} \times 100\%</math> * 系统负载 = <math>\frac{\text{运行队列长度}}{\text{CPU核心数}}}</math> == 实际案例 == === 电商平台监控 === '''场景''':需要监控订单服务的: 1. API响应时间P99值 2. 数据库连接池使用率 3. 支付接口错误率 '''解决方案''': <syntaxhighlight lang="java"> @RestController @RequestMapping("/orders") public class OrderController { @Timed(value = "order.create", histogram = true, percentiles = {0.95, 0.99}) @PostMapping public Order createOrder() { // 业务逻辑 } } </syntaxhighlight> 在Grafana中配置告警规则: <syntaxhighlight lang="yaml"> alert: - name: HighErrorRate expr: rate(http_server_requests_errors_total[1m]) > 0.05 for: 5m labels: severity: critical </syntaxhighlight> == 最佳实践 == * 生产环境应通过<code>management.endpoints.web.exposure.include</code>精确控制暴露的端点 * 敏感端点(如<code>/env</code>)应配置安全访问控制 * 使用<code>@Timed</code>、<code>@Counted</code>等注解添加自定义指标 * 定期检查<code>/actuator/threaddump</code>分析线程阻塞问题 == 故障排查 == {| class="wikitable" |+ 常见问题 ! 现象 !! 可能原因 !! 解决方案 |- | 端点404 || 未正确暴露端点 || 检查<code>management.endpoints.web.exposure.include</code> |- | 指标缺失 || 未注册MeterRegistry || 添加<code>@EnableMetrics</code>注解 |- | 数据不准 || 采样间隔过长 || 调整Prometheus的<code>scrape_interval</code> |} == 扩展阅读 == * 分布式追踪(Sleuth + Zipkin) * 日志集中分析(ELK Stack) * 容器化监控(Kubernetes + Spring Boot) [[Category:后端框架]] [[Category:Spring]] [[Category:Spring Boot]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)