Я хочу отслеживать метрики в моем приложении flask, используя lib prometheus_flask_exporter.
Для того, чтобы я мог понять, эта библиотека уже отслеживает метрики по умолчанию в конечной точке /metrics
. Но когда я пытаюсь получить доступ к http://localhost:5000/metrics
, я получаю 404. Not Found.
Поэтому я попытался установить метрику гистограммы c на user_list
, но я получаю те же 404, которые Not Found, когда я пытаюсь для доступа к http://localhost:5000/metrics
init.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)
user_list.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)
Нужно ли создавать маршрут /metrics
? Потому что в документации git об этом ничего не сказано, поэтому я полагаю, что это уже скрыто.