如何使用prometheus烧瓶出口商定期更新指标



我正在创建一个简单的Flask网络应用程序,它应该生成一个由普罗米修斯提取的随机度量。我使用的是普罗米修斯烧瓶导出器库,它使我能够设置度量。

简单地说,我想知道如何在flask内部配置自定义指标,以便它们从flask应用程序的"/metrics"端点开始每隔一段时间更新。

不是"我多久能让普罗米修斯获得一个特定的度量">

目前,我无法在我的flask应用程序中运行循环,因为如果我有主类的话,它就不会运行。

这只是为了验证概念,自定义度量可以是任何东西。

我的应用程序.py:

from flask import Flask, render_template, request
from prometheus_flask_exporter import PrometheusMetrics
app = Flask(__name__)
metrics = PrometheusMetrics(app)
#Example of exposing information as a Gague metric:
info = metrics.info('random_metric', 'This is a random metric')
info.set(1234)
if __name__ == '__main__':
app.run(host='0.0.0.0')

我不确定你是否理解普罗米修斯是如何工作的。默认情况下,普罗米修斯每15秒从目标获取一次度量,但您可以设置不同的间隔。因此,它将每15秒调用一次端点来检索度量,除非您另有决定。您的端点完全是被动的,并在传入连接发生时对其作出响应。

如果你想要每5秒收集一次指标,那么你必须在普罗米修斯机器上编辑你的YAML配置文件。Flask应用程序不需要更改。

我通过添加后台线程来解决这个问题。

from flask import Flask
import requests
import time
import threading
class HealthChecker():
def __init__(self):
self.app = Flask(__name__)
@self.app.route('/', methods=['GET'])
def hello_world():
return "Hello world from Flask"
self.metrics = PrometheusMetrics(self.app)
threading.Thread(target = self.pull_metric).start()

if __name__ == '__main__':
healthChecker = HealthChecker()
self.app.run(host='0.0.0.0')

最新更新