Fixes the healthcheck factory method and docs
This change fix the factory method of the healthcheck middleware It also adds documentation about how to configure the middleware Change-Id: Ie549d4686e921a9d407ba2829f69f92216bfcf9a
This commit is contained in:
6
doc/source/healthcheck_plugins.rst
Normal file
6
doc/source/healthcheck_plugins.rst
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
================================
|
||||||
|
Healthcheck middleware plugins
|
||||||
|
================================
|
||||||
|
|
||||||
|
.. automodule:: oslo_middleware.healthcheck.disable_by_file
|
||||||
|
:members:
|
||||||
@@ -8,4 +8,5 @@ Contents
|
|||||||
|
|
||||||
installation
|
installation
|
||||||
api
|
api
|
||||||
|
healthcheck_plugins
|
||||||
contributing
|
contributing
|
||||||
|
|||||||
@@ -22,10 +22,52 @@ from oslo_middleware import base
|
|||||||
|
|
||||||
|
|
||||||
class Healthcheck(base.Middleware):
|
class Healthcheck(base.Middleware):
|
||||||
"""Helper class that returns debug information.
|
"""Healthcheck middleware used for monitoring.
|
||||||
|
|
||||||
|
If the path is /healthcheck, it will respond 200 with "OK" as the body.
|
||||||
|
Or 503 with the reason as the body if one of the backend report
|
||||||
|
an application issue.
|
||||||
|
|
||||||
|
Example of paste configuration:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[filter:healthcheck]
|
||||||
|
paste.filter_factory = oslo_middleware:Healthcheck.factory
|
||||||
|
path = /healthcheck
|
||||||
|
backends = disable_by_file
|
||||||
|
disable_by_file_path = /var/run/nova/healthcheck_disable
|
||||||
|
|
||||||
|
[pipeline:public_api]
|
||||||
|
pipeline = healthcheck sizelimit [...] public_service
|
||||||
|
|
||||||
|
|
||||||
|
Multiple filter sections can be defined if it desired to have
|
||||||
|
pipelines with different healthcheck configuration, example:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[pipeline:public_api]
|
||||||
|
pipeline = healthcheck_public sizelimit [...] public_service
|
||||||
|
|
||||||
|
[pipeline:admin_api]
|
||||||
|
pipeline = healthcheck_admin sizelimit [...] admin_service
|
||||||
|
|
||||||
|
[filter:healthcheck_public]
|
||||||
|
paste.filter_factory = oslo_middleware:Healthcheck.factory
|
||||||
|
path = /healthcheck_public
|
||||||
|
backends = disable_by_file
|
||||||
|
disable_by_file_path = /var/run/nova/healthcheck_public_disable
|
||||||
|
|
||||||
|
[filter:healthcheck_admin]
|
||||||
|
paste.filter_factory = oslo_middleware:Healthcheck.factory
|
||||||
|
path = /healthcheck_admin
|
||||||
|
backends = disable_by_file
|
||||||
|
disable_by_file_path = /var/run/nova/healthcheck_admin_disable
|
||||||
|
|
||||||
|
More details on available backends and their configuration can be found
|
||||||
|
on this page: :doc:`healthcheck_plugins`.
|
||||||
|
|
||||||
Can be inserted into any WSGI application chain to get information about
|
|
||||||
the request and response.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
NAMESPACE = "oslo.middleware.healthcheck"
|
NAMESPACE = "oslo.middleware.healthcheck"
|
||||||
@@ -38,7 +80,7 @@ class Healthcheck(base.Middleware):
|
|||||||
|
|
||||||
def healthcheck_filter(app):
|
def healthcheck_filter(app):
|
||||||
return cls(app, conf)
|
return cls(app, conf)
|
||||||
return cls
|
return healthcheck_filter
|
||||||
|
|
||||||
def __init__(self, application, conf):
|
def __init__(self, application, conf):
|
||||||
super(Healthcheck, self).__init__(application)
|
super(Healthcheck, self).__init__(application)
|
||||||
|
|||||||
@@ -23,6 +23,22 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class DisableByFileHealthcheck(pluginbase.HealthcheckBaseExtension):
|
class DisableByFileHealthcheck(pluginbase.HealthcheckBaseExtension):
|
||||||
|
"""DisableByFile healthcheck middleware plugin
|
||||||
|
|
||||||
|
This plugin checks presence of a file to report if the service
|
||||||
|
is unavailable or not.
|
||||||
|
|
||||||
|
Example of middleware configuration:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[filter:healthcheck]
|
||||||
|
paste.filter_factory = oslo_middleware:Healthcheck.factory
|
||||||
|
path = /healthcheck
|
||||||
|
backends = disable_by_file
|
||||||
|
disable_by_file_path = /var/run/nova/healthcheck_disable
|
||||||
|
"""
|
||||||
|
|
||||||
def healthcheck(self):
|
def healthcheck(self):
|
||||||
path = self.conf.get('disable_by_file_path')
|
path = self.conf.get('disable_by_file_path')
|
||||||
if path is None:
|
if path is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user