我是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中显示它。
答案 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>)