为 Prometheus 暴露 Vert.x 指标,在 Grafana 中可视化

本文档将向您展示如何为 Prometheus 暴露 Vert.x 指标并在 Grafana 中将它们可视化。

您将构建什么

您将构建一个网络服务器,该服务器将

  • EventBus 上根据请求生成问候语

  • 回复 /greeting 路径上的 GET 请求,

  • /metrics 路径上为 Prometheus 暴露指标。

然后,您将配置 Prometheus 来抓取这些指标,并配置 Grafana 来可视化它们。

该应用程序只需一个 MainVerticle 类即可实现

您需要什么

  • 文本编辑器或 IDE

  • Java 11 或更高版本

  • Maven 或 Gradle

  • Prometheus(或 Docker)

  • Grafana(或 Docker)

创建项目

此项目的代码包含功能等效的 Maven 和 Gradle 构建文件。

使用 Maven

以下是您应该使用的 pom.xml 文件的内容

使用 Gradle

假设您使用带有 Kotlin DSL 的 Gradle,您的 build.gradle.kts 文件应如下所示

实现服务器

问候语生成器

首先,让我们定义一些问候语

然后,我们将在 EventBus 上为 greetings 地址定义一个消费者。该消费者会随机选择一个问候语,并在任意时间后返回它

HTTP 服务器

首先,我们需要一个 Vert.x Web 路由器

然后,让我们为 greeting 路径上的 GET 请求创建一个处理器

Vert.x Micrometer Metrics 模块提供了一个 Vert.x Web 处理器,当您需要以 Prometheus 文本格式暴露数据时,它会非常方便

配置好 Vert.x Web 路由器后,我们就可以启动 HTTP 服务器了

最后,MainVerticle 需要一个 main 方法

重要
必须启用指标选项来创建 Vert.x 实例。

运行应用程序

您可以运行应用程序

  • 直接从您的 IDE 运行,或者

  • 使用 Maven:mvn compile exec:java,或者

  • 使用 Gradle:./gradlew run (Linux, macOS) 或 gradlew run (Windows)。

以下示例使用 HTTPie 命令行 HTTP 客户端。如果您的系统尚未安装,请参阅其安装文档。

测试问候语服务器

要从服务器获取问候语,请打开您的终端并执行此命令

http :8080/greeting

您应该会看到类似以下内容:

HTTP/1.1 200 OK
content-length: 11
content-type: text/plain

Hola Mundo!

测试指标端点

获取指标

http :8080/metrics

您应该会看到类似以下内容:

使用 Prometheus 抓取

如果您不熟悉 Prometheus,请查看入门指南

您需要配置 Prometheus 服务器来抓取 localhost:8080

  - job_name: 'vertx-8080'
    static_configs:
      - targets: ['localhost:8080']

要在您的机器上使用 Docker 运行预配置的 Prometheus 服务器,请克隆本教程的仓库,打开您的终端并执行此命令

docker run --network host -v ${PWD}/prometheus:/etc/prometheus -it prom/prometheus

使用 Grafana 可视化

如果您不熟悉 Grafana,请查看入门指南

要在您的机器上使用 Docker 运行 Grafana 服务器,请克隆本教程的仓库,打开您的终端并执行此命令

docker run --network host -it grafana/grafana

作为起点,您可以从 grafana/dashboard.json 导入仪表盘。

您应该会看到类似以下内容:

仪表盘

Dashboard

总结

本文档涵盖了

  1. 设置 Vert.x 以便为 Prometheus 暴露指标,

  2. 在 Grafana 中可视化指标数据。


最近发布:2025-02-04 01:11:26 +0000。