如何使用 prometheus-flask-exporter 定期更新指标?
How to update metrics regularly using prometheus-flask-exporter?
我正在创建一个简单的 Flask 网络应用程序,它应该生成一个由 Prometheus 提取的随机指标。我正在使用 prometheus-flask-exporter 库,它使我能够设置指标。
简而言之,我想知道如何在 Flask 内部配置自定义指标,以便它们从 Flask 应用程序的“/metrics”端点定期更新。
不是'how often can I get prometheus to fetch a particular metric'
目前我无法在我的 Flask 应用程序中运行循环,因为主要的 class 没有 运行 如果我有的话。
这只是为了概念验证,自定义指标可以是任何东西。
我的app.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')
我不确定您是否了解 Prometheus 的工作原理。默认情况下,Prometheus 每 15 秒从目标中获取一次指标,但您可以设置不同的时间间隔。因此,除非您另有决定,否则它将每 15 秒调用您的端点以检索指标。您的端点完全是被动的,并且会在传入连接发生时对其做出响应。
如果你想要每 5 秒收集一次指标,那么你必须在 Prometheus 机器上编辑 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')
我正在创建一个简单的 Flask 网络应用程序,它应该生成一个由 Prometheus 提取的随机指标。我正在使用 prometheus-flask-exporter 库,它使我能够设置指标。
简而言之,我想知道如何在 Flask 内部配置自定义指标,以便它们从 Flask 应用程序的“/metrics”端点定期更新。
不是'how often can I get prometheus to fetch a particular metric'
目前我无法在我的 Flask 应用程序中运行循环,因为主要的 class 没有 运行 如果我有的话。
这只是为了概念验证,自定义指标可以是任何东西。
我的app.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')
我不确定您是否了解 Prometheus 的工作原理。默认情况下,Prometheus 每 15 秒从目标中获取一次指标,但您可以设置不同的时间间隔。因此,除非您另有决定,否则它将每 15 秒调用您的端点以检索指标。您的端点完全是被动的,并且会在传入连接发生时对其做出响应。
如果你想要每 5 秒收集一次指标,那么你必须在 Prometheus 机器上编辑 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')