可昕之家

可昕之家

张先生

平淡如水,爱护家人,好好工作

48 文章数
0 评论数

通过 Grafana 监控 Spring Boot 应用的完整步骤

张清磊
2025-03-18 / 0 评论 / 7 阅读 / 0 点赞

1. 访问 Grafana

1.1 通过 kubectl port-forward 访问

bash

复制

kubectl port-forward svc/grafana -n monitoring 3000:3000

访问 http://localhost:3000,默认凭据为:

  • 用户名: admin
  • 密码: admin(首次登录后需修改)

1.2 通过 Ingress 访问(可选)

如果已配置 Ingress,访问对应的域名(如 http://grafana.example.com)。


2. 配置 Prometheus 数据源

Grafana 默认可能已集成 Prometheus。若未配置,手动添加:

  1. 进入 Configuration > Data Sources
  2. 点击 Add data source,选择 Prometheus
  3. 填写 Prometheus 的 URL(通常为 http://prometheus-k8s.monitoring.svc:9090)。
  4. 点击 Save & Test,确认显示 "Data source is working"。

3. 导入 Spring Boot 监控仪表盘

3.1 使用官方推荐仪表盘

  • 仪表盘 ID: 4701(Micrometer 官方推荐)。
  1. 进入 Dashboards > Import
  2. 输入 ID 4701,点击 Load
  3. 选择 Prometheus 数据源,点击 Import

3.2 自定义仪表盘示例

若需自定义,可创建一个新仪表盘并添加以下面板:

面板 1:JVM 内存使用
  • PromQL 查询
    promql

    复制

    jvm_memory_used_bytes{application="your-springboot-app-name", area="heap"}
    
  • 可视化类型:Time series 或 Gauge。

面板 2:HTTP 请求吞吐量
  • PromQL 查询
    promql

    复制

    sum(rate(http_server_requests_seconds_count[5m])) by (uri, method, status)
    
  • 可视化类型:Table 或 Bar chart。


4. 验证监控数据

  1. 在仪表盘中检查是否有数据更新。

  2. 确认指标名称与 Spring Boot 应用暴露的 Prometheus 指标一致:
    bash

    复制

    kubectl exec -it <pod-name> -n epoch-test -- curl localhost:8080/actuator/prometheus
    

5. 高级配置

5.1 自定义业务指标

在 Spring Boot 代码中添加自定义指标:

java

复制

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;

@Autowired
private MeterRegistry registry;

public void trackCustomMetric() {
    Counter counter = registry.counter("custom_metric");
    counter.increment();
}

5.2 配置告警

  1. 进入 Alerting > Alert rules
  2. 创建告警规则,例如 JVM 内存使用超过 80%
    • PromQL:
      promql

      复制

      (jvm_memory_used_bytes{area="heap"} / jvm_memory_max_bytes{area="heap"}) * 100 > 80
      
    • 持续时长: 5m

    • 通知渠道: 配置 Slack、Email 等。


6. 故障排查

问题 1:仪表盘无数据

  • 检查 Prometheus 数据源:确认 Prometheus 的 Targets 页面中应用状态为 UP
  • 验证指标名称:直接访问应用的 /actuator/prometheus 端点,确认指标存在。

问题 2:指标名称不匹配

  • 同步标签:在 Spring Boot 的 application.yml 中添加统一标签:
    yaml

    复制

    management:
      metrics:
        tags:
          application: ${spring.application.name}
    

7. 最终效果

  • 仪表盘示例
    Grafana Dashboard Example
  • 告警通知:当 JVM 内存、线程池或 HTTP 错误率超过阈值时触发通知。

附录

  • Grafana 官方文档: Grafana Dashboards
  • Spring Boot 监控指标列表: Micrometer Metrics
  • 示例仪表盘 ID 列表:
    • 4701: Spring Boot 2.1 Statistics
    • 6756: JVM Micrometer Metrics
    • 11378: Spring Boot HikariCP Monitoring

完成以上步骤后,你的 Spring Boot 服务的运行状态、性能指标和业务数据将实时展示在 Grafana 中!

最后成功监控

20250318e20c55e3513e476ea0fc3161a8f8893b.png

上一篇 下一篇
评论
最新回复
    暂无内容
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月
文章目录
今日天气