首页 > Java > java教程 > 使用 Actuator、Prometheus 和 Grafana 构建现代应用程序的可观测性和监控

使用 Actuator、Prometheus 和 Grafana 构建现代应用程序的可观测性和监控

Linda Hamilton
发布: 2025-01-05 06:15:42
原创
641 人浏览过

在当今分布式系统和微服务的世界中,确保我们的应用程序可观察和可监控与构建核心功能同样重要。我们已经设置了关键功能,例如NGINX负载均衡器速率限制器断路器,下一步是关注可观察性和监控

在这篇博文中,我们将逐步介绍如何将 Spring Boot ActuatorPrometheusGrafana 添加到我们的应用程序中,以构建强大的可观察性堆。这将帮助我们可视化应用程序的运行状况、跟踪性能指标并快速有效地解决问题。


什么是可观察性?

可观察性是指根据系统产生的数据了解系统内部状态的能力。可观察性的三大支柱是:

  1. 指标:可量化的数据点(例如请求率、内存使用率、CPU 利用率)。
  2. 日志:事件记录(例如错误、警告或业务事件)。
  3. 痕迹:在请求流经多个服务时跟踪请求。

通过专注于指标和日志,我们可以构建强大的仪表板和警报,确保您的应用程序保持高性能和可靠性。


为什么可观测性对我们的应用程序很重要

我们当前的应用程序架构已经拥有必要的组件:

  • NGINX 负载均衡器:跨服务器分配流量。
  • 速率限制器:通过限制请求数量来防止过载。
  • 断路器:通过停止对失败服务的调用来确保恢复能力。

然而,虽然这些工具提高了性能和可靠性,但它们并没有告诉我们为什么某些东西可能会失败或者我们的系统在负载下的表现如何。 ActuatorPrometheusGrafana 等可观察性工具将:

  • 跟踪实时指标应用程序运行状况和性能。
  • 帮助可视化趋势和潜在瓶颈。
  • 当指标超过关键阈值时触发警报。

可观察性堆栈

将这些依赖项添加到您的 pom.xml 文件中:

<dependency>
   <groupId>io.github.resilience4j</groupId>
   <artifactId>resilience4j-micrometer</artifactId>
   <version>2.2.0</version>
</dependency>

<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.14.1</version>
</dependency>

登录后复制
登录后复制

更新 application.properties 的配置

resilience4j.circuitbreaker.metrics.enabled=true

management.health.circuitbreakers.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
management.endpoint.health.show-details=always
management.endpoint.health.access=unrestricted
management.endpoint.prometheus.access=unrestricted
management.prometheus.metrics.export.enabled=true
登录后复制
登录后复制

解释

management.endpoints.web.exposure.include=健康、指标、断路器、普罗米修斯

此行从执行器公开 URI,因此我们可以使用如下 URI:

  • 执行器/
  • 执行器/健康,
  • 执行器/指标,
  • 执行器/断路器,
  • 执行器/普罗米修斯

将 prometheus 与 docker 一起使用

在我们的 docker-compose.yaml 文件中,我们为 prometheus 创建一个服务:

<dependency>
   <groupId>io.github.resilience4j</groupId>
   <artifactId>resilience4j-micrometer</artifactId>
   <version>2.2.0</version>
</dependency>

<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.14.1</version>
</dependency>

登录后复制
登录后复制

普罗米修斯的配置文件

在项目的根目录下创建一个名为 prometheus 的文件夹,并在其中创建一个名为 prometheus.yaml 的文件

resilience4j.circuitbreaker.metrics.enabled=true

management.health.circuitbreakers.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
management.endpoint.health.show-details=always
management.endpoint.health.access=unrestricted
management.endpoint.prometheus.access=unrestricted
management.prometheus.metrics.export.enabled=true
登录后复制
登录后复制

现在,当我们跑步时:

prometheus:
    image: prom/prometheus:latest
    ports:
      - "9090:9090"
    networks:
      - app_network
    volumes:
      - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus

登录后复制

prometheus 容器将启动,并使用来自 URI 执行器的指标/来自我们的 spring-boot-servers 的指标。

我们可以在http://localhost:9090/看到一个仪表板,例如:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

普罗米修斯的仪表板

但是,这并不酷。我们想要查看一些图表,为此我们使用 Grafana。


添加格拉法纳

使用其他服务更新您的 docker compose 文件:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets:
          - 'spring-server-1:8080'
          - 'spring-server-2:8080'
        labels:
          environment: development
          application: spring-boot

登录后复制

现在您可以通过http://localhost:3000访问grafana仪表板

首先他们会询问您的凭据,只需输入 admin 作为用户名和密码。

配置普罗米修斯

在左侧菜单中,转到连接>;添加新连接并搜索 Prometheus

像这样配置连接 URL:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

在 Grafana 上配置 Prometheus

单击按钮“保存并测试”,如果一切正常,您可以开始选择仪表板。

仪表板

前往 Grafana Dashboards 并选择适合您的仪表板。

为此,我选择 Spring Boot Resilience4j Circuit Breaker (3.x)

如果一切正常,您将看到如下内容:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

断路器图

随意浏览其他仪表板。


最后的话

通过将 ActuatorPrometheusGrafana 集成到我们的应用程序中,我们在构建高度可观察的系统方面迈出了重要一步。通过适当的指标、日志记录和监控,您将能够:

  • 全面了解您的应用程序和基础设施。
  • 主动检测并解决问题。
  • 优化性能和可靠性。

有了这些工具,我们不仅可以有效地监控我们的系统,还可以为未来自信地扩展奠定基础。


?参考

  • Grafana 文档
  • 普罗米修斯文档

?项目库

  • Github 上的项目存储库

?跟我说话

  • 领英
  • Github
  • 投资组合

以上是使用 Actuator、Prometheus 和 Grafana 构建现代应用程序的可观测性和监控的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板