Add prometheus metrics

master
informatic 2020-03-30 09:12:37 +02:00
parent 034d54522f
commit 767868ce38
5 changed files with 9 additions and 3 deletions

View File

@ -20,7 +20,7 @@ ENV FLASK_APP formity
ENV FLASK_ENV production
COPY . .
ENV prometheus_multiproc_dir /tmp
STOPSIGNAL SIGINT
USER uwsgi
CMD flask db upgrade && exec uwsgi --http-socket 0.0.0.0:5000 \

View File

@ -1,6 +1,6 @@
import flask
from formity.admin import IndexView
from formity.extensions import db, migrate, admin, auth, babel
from formity.extensions import db, migrate, admin, auth, babel, metrics
def create_app():
app = flask.Flask(
@ -16,6 +16,7 @@ def create_app():
migrate.init_app(app, db)
babel.init_app(app)
auth.init_app(app)
metrics.init_app(app)
import formity.views
import formity.models

View File

@ -3,6 +3,7 @@ import flask_sqlalchemy
import flask_migrate
import flask_admin
import flask_babel
import prometheus_flask_exporter
import spaceauth
from flask_admin.contrib.sqla import ModelView as BaseModelView
@ -27,3 +28,4 @@ migrate = flask_migrate.Migrate()
admin = flask_admin.Admin(template_mode='bootstrap3')
babel = flask_babel.Babel()
auth = spaceauth.SpaceAuth()
metrics = prometheus_flask_exporter.PrometheusMetrics(None, group_by='url_rule')

View File

@ -1,6 +1,7 @@
from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, TextAreaField, IntegerField, validators, ValidationError
from wtforms.widgets import html5
from jinja2 import Markup
class FaceshieldRequestForm(FlaskForm):
@ -15,7 +16,7 @@ class FaceshieldRequestForm(FlaskForm):
faceshield_full_required = IntegerField('Pilnie potrzebna minimalna ilość pełnych przyłbic', default=0, validators=[validators.InputRequired()], widget=html5.NumberInput())
rules_approval = BooleanField('Jestem z placówki medycznej i zobowiązuję się do nieodsprzedawania otrzymanego sprzętu ochronnego. Jestem świadom, że nie jest to certyfikowany produkt medyczny i nie jest dezynfekowany/sterylny.', validators=[validators.DataRequired()])
rules_approval = BooleanField(Markup('<b>Jestem pracownikiem powyższej placówki medycznej</b> i zobowiązuję się do nieodsprzedawania otrzymanego sprzętu ochronnego. Jestem świadom, że nie jest to certyfikowany produkt medyczny i nie jest dezynfekowany/sterylny.'), validators=[validators.DataRequired()])
def validate_faceshield_model(self, field):
model = field.data.strip()

View File

@ -21,6 +21,8 @@ Mako==1.1.2
MarkupSafe==1.1.1
marshmallow==3.5.1
oauthlib==2.1.0
prometheus-client==0.7.1
prometheus-flask-exporter==0.13.0
python-dateutil==2.8.1
python-dotenv==0.12.0
python-editor==1.0.4