Задать вопрос
@ateistemes

Как правильно подключить prometheus к flask + gunicorn?

я использую Flask + gunicorn. Хочу подключить мониторинг Prometheus.
так как gunicorn использует воркеры
подключаю prometheus в multiprocess mode

примерно так:
from flask import Blueprint, Response
from prometheus_client import multiprocess, CollectorRegistry, generate_latest, CONTENT_TYPE_LATEST

metrics_bp = Blueprint("metrics", __name__)

@metrics_bp.route("/metrics")
def metrics():
    registry = CollectorRegistry()
    multiprocess.MultiProcessCollector(registry)
    data = generate_latest(registry)
    return Response(data, mimetype=CONTENT_TYPE_LATEST)


как в документации написано, запускаю так:
CMD rm -rf /tmp/metrics/* && \
    mkdir -p /tmp/metrics && \
    export PROMETHEUS_MULTIPROC_DIR=/tmp/metrics && \
    gunicorn -c app/gunicorn_conf.py app:app


еще в gunicorn_conf.py:
from prometheus_client import multiprocess

def child_exit(server, worker):
    multiprocess.mark_process_dead(worker.pid)


Но проблема в том что после вызова /metrics
через некоторое время все падает
получаю:
[9] [CRITICAL] WORKER TIMEOUT (pid:13)
 [13] [ERROR] Error handling request (no URI read)
  • Вопрос задан
  • 45 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы