Skip to content

Multiprocess with Python prometheus_client

pythonprometheus library の prometheus_client で multiprocess するときのメモ https://github.com/jonashaag/prometheus-multiprocessing-example

import os
from flask import Flask, Response
from prometheus_client import multiprocess
from prometheus_client import generate_latest, CollectorRegistry, CONTENT_TYPE_LATEST, Gauge, Counter
app = Flask(__name__)
IN_PROGRESS = Gauge("inprogress_requests", "Example gauge", multiprocess_mode='livesum')
NUM_REQUESTS = Counter("num_requests", "Example counter")
@app.route("/")
@IN_PROGRESS.track_inprogress()
def hello():
NUM_REQUESTS.inc()
return "Hello World from {}!".format(os.getpid())
@app.route("/metrics")
def metrics():
registry = CollectorRegistry()
multiprocess.MultiProcessCollector(registry)
data = generate_latest(registry)
return Response(data, mimetype=CONTENT_TYPE_LATEST)
rm -rf multiproc-tmp
mkdir multiproc-tmp
export PROMETHEUS_MULTIPROC_DIR=multiproc-tmp
gunicorn -c gunicorn_conf.py -w 4 yourapp:app