从API调用获取数据到第三方系统并在Promethues中显示

时间:2017-12-22 22:47:21

标签: prometheus

我是Prometheus的新手,我正在尝试使用python库编写自定义导出器。为此,我使用prometheus_client

我的最终目标是监控我的保险库节点。我有许多API可用于收集我的保险库节点的指标。在这结束时,我希望我的promethues dahsboard能说出类似的内容:

vault_total_conection <some-number>
vault_total_secrets <some-number>

等等。

我从https://github.com/prometheus/client_python获得的基本python代码是:

from prometheus_client import start_http_server, Summary
import random
import time

# Create a metric to track time spent and requests made.
REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')

# Decorate function with metric.
@REQUEST_TIME.time()
def process_request(t):
    """A dummy function that takes some time."""
    time.sleep(t)

if __name__ == '__main__':
    # Start up the server to expose the metrics.
    start_http_server(8000)
    # Generate some requests.
    while True:
        process_request(random.random())

现在我已经找到了面向保险库的API设置。我有一个联系保险库的函数,并返回一个浮点数。

def extract_metric_from_vault():
    // some code
    return float_number

所以这个函数在上面的代码中定义。我无法理解的是如何将其与promethue客户端集成。我想使用Gauge,因为我知道值会高或低。

所以我尝试做一些事情:

TEST_VALUE   = Gauge('vault_total_conection', 'Description of gauge')
TEST_VALUE.extract_metric_from_vault()

但这显然无效。

我收到了错误:

Traceback (most recent call last):
  File "main.yaml", line 8, in <module>
    TEST_VALUE.extract_metric_from_vault()
AttributeError: 'Gauge' object has no attribute 'extract_metric_from_vault'

所以有人可以指导我在这里连接点所需要的东西。我想使用函数从API调用中提取一些值,并在prometheus中显示它。

1 个答案:

答案 0 :(得分:1)

AFAIK您需要在main()

中调用您的函数
if __name__ == '__main__':
# Start up the server to expose the metrics.
start_http_server(8000)
# Generate some requests.
while True:
    extract_metric_from_vault()

然后,你需要测量值

TEST_VALUE.set(<extracted value>)