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