add health endpoint
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Torma Kristóf 2020-11-19 01:49:40 +01:00
parent 1aef09c5ed
commit ddee056c25
4 changed files with 33 additions and 2 deletions

View File

@ -7,3 +7,4 @@ Flask-Classful
gunicorn gunicorn
sentry_sdk sentry_sdk
flask_minio flask_minio
py-healthcheck

View File

@ -4,9 +4,10 @@ import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration from sentry_sdk.integrations.flask import FlaskIntegration
from flask import Flask from flask import Flask
from werkzeug.middleware.proxy_fix import ProxyFix from werkzeug.middleware.proxy_fix import ProxyFix
from healthcheck import HealthCheck
# import stuff # import stuff
from utils import register_all_error_handlers, storage from utils import register_all_error_handlers, storage, health_database_status
# import views # import views
from views import ObjectView from views import ObjectView
@ -41,6 +42,9 @@ app.config['MINIO_BUCKET_NAME'] = os.environ['MINIO_BUCKET_NAME']
app.config['MINIO_SECURE'] = os.environ.get('MINIO_SECURE', False) app.config['MINIO_SECURE'] = os.environ.get('MINIO_SECURE', False)
app.config['MINIO_REGION'] = os.environ.get('MINIO_REGION', None) app.config['MINIO_REGION'] = os.environ.get('MINIO_REGION', None)
health = HealthCheck(app, "/healthz")
# register error handlers # register error handlers
register_all_error_handlers(app) register_all_error_handlers(app)
@ -48,6 +52,8 @@ register_all_error_handlers(app)
for view in [ObjectView]: for view in [ObjectView]:
view.register(app, trailing_slash=False) view.register(app, trailing_slash=False)
health.add_check(health_database_status)
# start debugging if needed # start debugging if needed
if __name__ == "__main__": if __name__ == "__main__":
app.run(debug=True) app.run(debug=True)

View File

@ -2,3 +2,4 @@
from .require_decorators import json_required from .require_decorators import json_required
from .error_handlers import register_all_error_handlers from .error_handlers import register_all_error_handlers
from .storage import storage from .storage import storage
from .healthchecks import health_database_status

View File

@ -0,0 +1,23 @@
#!/usr/bin/env python3
from utils import storage
"""
Healthchek functions
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "healthchecks"
__version__text__ = "1"
def health_database_status():
is_database_working = True
output = 'storage is ok'
try:
storage.connection.list_buckets()
except Exception as e:
output = str(e)
is_database_working = False
return is_database_working, output