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

Posted

技术标签:

【中文标题】创建一个 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 【发布时间】:2021-08-05 08:34:56 【问题描述】:

我正在尝试创建一个 API 来连接 ArangoDB 和 Prometheus。我对 ArangoDB 中的数据进行了统计,例如,我想在 Prometheus 中看到多少次模拟已经启动。因此,如果我理解的正确,我想确认以下问题:

    我查看了 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。对吗? 我需要找出Prometheus能理解的数据格式。我需要定义我的 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 的来源,那就太好了。这真的会帮助我开始这个项目。非常感谢您。

【问题讨论】:

【参考方案1】:

您可能只需要找到一个允许您绘制数据的系统。 Prometheus 有一个名为Grafana 的兄弟技术。

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

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

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

Node Exporter 就是这样一种系统的一个例子,它发布了可以被 Prometheus 抓取的指标。它发布节点(==主机)指标。

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

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

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

【讨论】:

您好@DazWilkin 非常感谢您的详细回答,我已经有配置为连接到 Prometheus 的 Grafana,我不知道是否可以将我的 Grafana 配置为直接连接到阿兰戈数据库。我会检查一下。 我在 ArangoDB 上找到了这个页面,这是正确的方向吗? arangodb.com/projects-and-integrations/bi-connector-arangodb 不客气!对,就是这样。如果我正确理解您的需求,那就是要走的路。

以上是关于创建一个 API 来连接 ArangoDB 和 Prometheus 以获取 ArangoDB 内部数据的指标并将其暴露在 Prometheus 中的主要内容,如果未能解决你的问题,请参考以下文章

ArangoDB Restful API

ArangoDB集合操作

ArangoDB集合操作

用python操作和管理ArangoDB

ArangoDB 链接文档

使用Java驱动操作ArangoDB