From 5d5bb9cd92d84c7468bfdbff52bcdaf2d46a1d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20Krist=C3=B3f?= Date: Thu, 19 Nov 2020 00:30:26 +0100 Subject: [PATCH] add health endpoint --- requirements.txt | 1 + src/app.py | 5 ++++- src/healthchecks.py | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/healthchecks.py diff --git a/requirements.txt b/requirements.txt index 9448263..c798801 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ psycopg2-binary marshmallow marshmallow-sqlalchemy flask-marshmallow +py-healthcheck \ No newline at end of file diff --git a/src/app.py b/src/app.py index 5ddad77..c4fa622 100644 --- a/src/app.py +++ b/src/app.py @@ -5,12 +5,13 @@ from flask_restful import Api import sentry_sdk from sentry_sdk.integrations.flask import FlaskIntegration from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration - +from healthcheck import HealthCheck from config import * from db import db from marshm import ma from resources import SampleResource, SampleParameterResource +from healthchecks import health_database_status """ Main Flask RESTful APIm @@ -42,6 +43,7 @@ app.config['FLASK_PIKA_PARAMS'] = {'host': RABBITMQ_HOST, 'port': 5672, 'virtual_host': '/'} api = Api(app) +health = HealthCheck(app, "/healthz") db.init_app(app) ma.init_app(app) @@ -62,6 +64,7 @@ logger.addHandler(handler) api.add_resource(SampleResource, "/sample") api.add_resource(SampleParameterResource, '/sample/') +health.add_check(health_database_status) if __name__ == "__main__": app.run( diff --git a/src/healthchecks.py b/src/healthchecks.py new file mode 100644 index 0000000..ed614c2 --- /dev/null +++ b/src/healthchecks.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +from db import db + +""" +Healthchek functions +""" + +__author__ = "@tormakris" +__copyright__ = "Copyright 2020, Birbnetes Team" +__module_name__ = "healthchecks" +__version__text__ = "1" + + +def health_database_status(): + is_database_working = True + output = 'database is ok' + try: + db.session.execute('SELECT 1') + except Exception as e: + output = str(e) + is_database_working = False + return is_database_working, output