Skip to content
Snippets Groups Projects
Commit 35979308 authored by Kevin Lyda's avatar Kevin Lyda :speech_balloon:
Browse files

Working test python gunicorn+prom script.

parents
Branches
No related tags found
Loading
*.pyc
/metrics
myapp.py 0 → 100644
import pprint
def app(environ, start_response):
data = b"Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
pprint.pprint(environ)
return iter([data])
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# Copyright © 2017 kevin <kevin@phrye.com>
#
# Distributed under terms of the GPL license.
"""
Prometheus multi-proc test app.
"""
import os
from prometheus_client import multiprocess
from prometheus_client import generate_latest, CollectorRegistry, CONTENT_TYPE_LATEST, Gauge
# Example gauge.
IN_PROGRESS = Gauge("inprogress_requests", "help", multiprocess_mode='livesum')
INDEX = Gauge("index_hits", "help", multiprocess_mode='livesum')
INDEX_PRO = Gauge("index_pro_hits", "help", ['pro'], multiprocess_mode='livesum')
REG = CollectorRegistry()
multiprocess.MultiProcessCollector(REG)
def index(environ, start_response):
INDEX.inc()
INDEX_PRO.labels(str(os.getpid())).inc()
data = b"Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
return iter([data])
def metrics(environ, start_response):
data = generate_latest(REG)
status = '200 OK'
response_headers = [
('Content-type', CONTENT_TYPE_LATEST),
('Content-Length', str(len(data)))
]
start_response(status, response_headers)
return iter([data])
# Expose metrics.
@IN_PROGRESS.track_inprogress()
def app(environ, start_response):
path = environ.get('PATH_INFO', '')
if path == '/metrics':
return metrics(environ, start_response)
else:
return index(environ, start_response)
run.sh 0 → 100755
#! /bin/sh
prometheus_multiproc_dir=metrics/ gunicorn -w 4 promapp:app
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment