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 ENV FLASK_ENV production
COPY . . COPY . .
ENV prometheus_multiproc_dir /tmp
STOPSIGNAL SIGINT STOPSIGNAL SIGINT
USER uwsgi USER uwsgi
CMD flask db upgrade && exec uwsgi --http-socket 0.0.0.0:5000 \ CMD flask db upgrade && exec uwsgi --http-socket 0.0.0.0:5000 \

View File

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

View File

@ -3,6 +3,7 @@ import flask_sqlalchemy
import flask_migrate import flask_migrate
import flask_admin import flask_admin
import flask_babel import flask_babel
import prometheus_flask_exporter
import spaceauth import spaceauth
from flask_admin.contrib.sqla import ModelView as BaseModelView from flask_admin.contrib.sqla import ModelView as BaseModelView
@ -27,3 +28,4 @@ migrate = flask_migrate.Migrate()
admin = flask_admin.Admin(template_mode='bootstrap3') admin = flask_admin.Admin(template_mode='bootstrap3')
babel = flask_babel.Babel() babel = flask_babel.Babel()
auth = spaceauth.SpaceAuth() 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 flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, TextAreaField, IntegerField, validators, ValidationError from wtforms import StringField, BooleanField, TextAreaField, IntegerField, validators, ValidationError
from wtforms.widgets import html5 from wtforms.widgets import html5
from jinja2 import Markup
class FaceshieldRequestForm(FlaskForm): 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()) 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): def validate_faceshield_model(self, field):
model = field.data.strip() model = field.data.strip()

View File

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