【问题标题】:How to update metrics regularly using prometheus-flask-exporter?如何使用 prometheus-flask-exporter 定期更新指标?
【发布时间】:2022-02-08 00:31:29
【问题描述】:

我正在创建一个简单的 Flask webapp,它应该生成一个随机指标以供 Prometheus 提取。我正在使用 prometheus-flask-exporter 库,它使我能够设置指标。

简而言之,我想知道如何在烧瓶内部配置自定义指标,以便它们在烧瓶应用程序的“/metrics”端点间隔更新。

不是“我多久可以让 prometheus 获取特定指标”

目前我无法在我的烧瓶应用程序中运行循环,因为如果我有主类则不会运行。

这只是一个概念证明,自定义指标可以是任何东西。

我的 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')

【问题讨论】:

    标签: flask flask-sqlalchemy prometheus prometheus-node-exporter prometheus-blackbox-exporter


    【解决方案1】:

    我不确定您是否了解 Prometheus 的工作原理。默认情况下,Prometheus 每 15 秒从目标中获取指标,但您可以设置不同的间隔。因此,除非您另有决定,否则它将每 15 秒调用一次您的端点以检索指标。您的端点纯粹是被动的,并在传入连接发生时对其进行响应。

    如果您想要每 5 秒收集一次指标,那么您必须在 Prometheus 机器上编辑您的 YAML 配置文件。 Flask 应用不需要更改。

    【讨论】:

    • 我确实了解 prometheus 的工作原理。你根本没有理解我的问题。我在问如何配置我的 Flask 应用程序,它使用 prometheus 烧瓶导出器库,以便每隔一段时间更新指标。我想知道如何设置我的自定义指标,以便它们从指标端点每隔一段时间更新一次,而不是普罗米修斯应该多久获取一次指标。有区别
    • 然后是一个重复计时器,比如this?
    • 我会尝试一下,谢谢 :) 不幸的是,我无法在提供的代码中运行循环(你可以试一试),所以接下来我将看看替代方案...
    【解决方案2】:

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

    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')
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 2020-06-18
      • 2020-11-14
      • 1970-01-01
      相关资源
      最近更新 更多