创建一个 API 连接 ArangoDB 和 Prometheus 以获取 ArangoDB 内部数据的指标并将其暴露在 Prometheus 中

Creating an API to connect between ArangoDB and Prometheus to get the metrics of the data inside ArangoDB and expose it in Prometheus

我正在尝试创建一个 API 来连接 ArangoDB 和 Prometheus。例如,我有一个 ArangoDB 中数据的统计信息,我希望在 Prometheus 中看到模拟启动了多少次。因此,我想确认以下问题是否如我所理解的那样正确:

  1. 我查看了 Prometheus 入门指南 (https://prometheus.io/docs/prometheus/latest/getting_started/),其中我们在 Prometheus 中使用 node_exporter 指标。我们需要启动这个 node_exporter 并将其暴露在特定的 IP 地址和端口(侦听地址)上,然后我们需要在 Prometheus 配置中配置目标以针对 node_exporter 是 运行 的这些端口在。因此,对于我的 API,我需要在 Golang 中创建一个 API 和应用程序,并且这个 API/App 需要在特定的 HTTP 端口(例如 8001)中公开,然后在 Prometheus 中,我需要为 8001 端口添加目标,以便 Prometheus 能够抓取我的 API。对吗?
  2. 我需要找出普罗米修斯理解的数据格式。我需要定义我的 API(来自 API)和 Prometheus(进入 Prometheus)之间的数据格式。我从这个文档(https://prometheus.io/docs/instrumenting/exposition_formats/)中发现它是这种形式的文本格式:
metric_name [ "{" label_name "=" `"` label_value `"` { "," label_name "=" `"` label_value `"` } [ "," ] "}" ] value [ timestamp ]

这是正确的吗?能否确认一下我的理解?

最后,如果你能向我推荐一个已经有人做过这种 API 连接 ArangoDB 和 Prometheus 的资源,那就太好了。这真的会帮助我开始这个项目。非常感谢您。

您可能只需要找到一个允许您绘制数据图表的系统。 Prometheus 有一项名为 Grafana.

的兄弟技术

Prometheus 是一种配置为定期从系统端点(==目标)抓取(读取)测量值的工具。这些测量值描述了系统在被抓取时的状态。 Prometheus 将这些测量结果记录在时间序列数据库中,并提供一种富有表现力的查询语言,可以在数据中找到洞察力。 Prometheus 也包含此时间序列数据的基本图表。 Prometheus 经常与 Grafana 结合使用。

您的问题表明您不是要监视数据库的状态,而是要绘制数据库表中包含的(统计)数据的图形。如果是这样,Prometheus 可能不是您需要的。

为了回答您的问题,Prometheus 要求系统以一种称为 Exposition Format 的简单文本格式发布指标集。任何以这种格式生成数据并可以在 HTTP 端点上提供指标的系统都可以被 Prometheus 抓取。

Node Exporter 是此类系统的一个示例,它发布可由 Prometheus 抓取的指标。它发布节点(==主机)指标。

ArangoDB 是另一个可以以 Prometheus 的说明格式发布指标(关于其状态;数据库系统的状态)的系统,请参阅:

https://www.arangodb.com/2020/03/monitoring-arangodb-prometheus-grafana/

我怀疑,您需要的是一个解决方案,用于绘制一组您已经存储在 ArangoDB 表中的数据。为此,您可以将 Grafana 之类的系统连接到您的数据库,然后使用 SQL 查询以可以绘制的形式显示数据。