如何使用 prometheus_flask_exporter lib 检查我的指标

Pat*_*osé 5 python flask prometheus

我想使用 lib prometheus_flask_exporter 跟踪我的 Flask 应用程序中的指标。

据我所知,这个库已经跟踪/metrics端点中的默认指标。但是当我尝试访问时,http://localhost:5000/metrics我得到 404 Not Found。

所以我尝试在 上设置直方图指标user_list,但当我尝试访问时,我得到相同的 404 not Foundhttp://localhost:5000/metrics

初始化.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flasgger import Swagger
from flask_caching import Cache
from prometheus_flask_exporter import PrometheusMetrics


app = Flask(__name__)
app.debug = True
app.config.from_object('dev_maintenance.yaml_config_loader')
cache = Cache(app)
db = SQLAlchemy(app)
swagger = Swagger(app)
metrics = PrometheusMetrics(app)


import dev_maintenance.mesos_callback
import dev_maintenance.db_model
import dev_maintenance.active_directory
import dev_maintenance.user_list
import dev_maintenance.audit
import dev_maintenance.machines
import dev_maintenance.yaml_config_loader
import dev_maintenance.roles
import dev_maintenance.user_details


if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

用户列表.py

from dev_maintenance import app
from flask import jsonify, request
from flask_simpleldap import LDAP
from flask_jwt_extended import jwt_required
from dev_maintenance import metrics


ldap = LDAP(app)


@app.route('/api/user', methods=['GET'])
@metrics.do_not_track()
@metrics.histogram('requests_by_status_and_path', 'Request latencies by status and path',
                   labels={'status': lambda r: r.status_code, 'path': lambda: request.path})
def user_list():

    user_list = []
    users = ldap.get_group_members('ship_crew')

    for user in users:
        user_list.append(str(user, encoding='utf-8').split(",")[0].split("=")[1])
    return jsonify(user_list)
Run Code Online (Sandbox Code Playgroud)

我需要创建一条/metrics路线吗?因为在 git 文档中没有提及任何相关内容,所以我想这已经在幕后设置了。

Shu*_*ect 6

使用“app.run(debug=False)”代替“app.run(debug=True)”。debug=True 正在破坏事情。

来自:https://github.com/rycus86/prometheus_flask_exporter/blob/master/README.md

请注意,当使用 debug=True 运行 Flask 应用程序时,实时重新加载的更改不会反映在指标中。有关更多详细信息,请参阅https://github.com/rycus86/prometheus_flask_exporter/issues/4 。

或者 - 从版本 0.5.1 开始 - 如果您设置 DEBUG_METRICS 环境变量,您将获得最新重新加载的代码的指标。这些将导出到主 Flask 应用程序上。在不同的端口上提供指标很可能不起作用 - 例如 PrometheusMetrics.start_http_server(..) 预计不会起作用。