Separate Admin into Observability and Health Check (#716)
This commit is contained in:
@@ -86,7 +86,7 @@ First, in addition to the minimal example, we need to store the media types and
|
|||||||
|
|
||||||
Next, we set modify the function to set the content type and filename.
|
Next, we set modify the function to set the content type and filename.
|
||||||
We use this opportunity to configure some basic, client-side caching.
|
We use this opportunity to configure some basic, client-side caching.
|
||||||
For production, you probably want to configure additional caches, e.g. on the :ref:`reverse proxy <admin>`.
|
For production, you probably want to configure additional caches, e.g. on the :ref:`reverse proxy <nginx>`.
|
||||||
|
|
||||||
.. code-block:: postgres
|
.. code-block:: postgres
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -123,7 +123,8 @@ Technical references for PostgREST's functionality.
|
|||||||
references/schema_cache.rst
|
references/schema_cache.rst
|
||||||
references/errors.rst
|
references/errors.rst
|
||||||
references/configuration.rst
|
references/configuration.rst
|
||||||
references/*
|
references/observability.rst
|
||||||
|
references/health_check.rst
|
||||||
|
|
||||||
Explanations
|
Explanations
|
||||||
------------
|
------------
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
.. _health_check:
|
||||||
|
|
||||||
|
Health Check
|
||||||
|
############
|
||||||
|
|
||||||
|
You can enable a health check to verify if PostgREST is available for client requests. Also to check the status of its internal state.
|
||||||
|
|
||||||
|
To do this, set the configuration variable :ref:`admin-server-port` to the port number of your preference. Two endpoints ``live`` and ``ready`` will then be available.
|
||||||
|
|
||||||
|
The ``live`` endpoint verifies if PostgREST is running on its configured port. A request will return ``200 OK`` if PostgREST is alive or ``503`` otherwise.
|
||||||
|
|
||||||
|
The ``ready`` endpoint also checks the state of both the Database Connection and the :ref:`schema_cache`. A request will return ``200 OK`` if it is ready or ``503`` if not.
|
||||||
|
|
||||||
|
For instance, to verify if PostgREST is running at ``localhost:3000`` while the ``admin-server-port`` is set to ``3001``:
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. code-tab:: http
|
||||||
|
|
||||||
|
GET localhost:3001/live HTTP/1.1
|
||||||
|
|
||||||
|
.. code-tab:: bash Curl
|
||||||
|
|
||||||
|
curl -I "http://localhost:3001/live"
|
||||||
|
|
||||||
|
.. code-block:: http
|
||||||
|
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
|
||||||
|
If you have a machine with multiple network interfaces and multiple PostgREST instances in the same port, you need to specify a unique :ref:`hostname <server-host>` in the configuration of each PostgREST instance for the health check to work correctly. Don't use the special values(``!4``, ``*``, etc) in this case because the health check could report a false positive.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
.. _admin:
|
.. _observability:
|
||||||
|
|
||||||
Admin
|
Observability
|
||||||
#####
|
#############
|
||||||
|
|
||||||
.. _pgrst_logging:
|
.. _pgrst_logging:
|
||||||
|
|
||||||
@@ -284,34 +284,18 @@ For example, to only allow requests from an IP address to get the execution plan
|
|||||||
-- set this function on your postgrest.conf
|
-- set this function on your postgrest.conf
|
||||||
-- db-pre-request = filter_plan_requests
|
-- db-pre-request = filter_plan_requests
|
||||||
|
|
||||||
|
.. raw:: html
|
||||||
|
|
||||||
.. _health_check:
|
<script type="text/javascript">
|
||||||
|
let hash = window.location.hash;
|
||||||
|
|
||||||
Health Check
|
const redirects = {
|
||||||
------------
|
'#health_check': 'health_check.html',
|
||||||
|
};
|
||||||
|
|
||||||
You can enable a health check to verify if PostgREST is available for client requests. Also to check the status of its internal state.
|
let willRedirectTo = redirects[hash];
|
||||||
|
|
||||||
To do this, set the configuration variable :ref:`admin-server-port` to the port number of your preference. Two endpoints ``live`` and ``ready`` will then be available.
|
if (willRedirectTo) {
|
||||||
|
window.location.href = willRedirectTo;
|
||||||
The ``live`` endpoint verifies if PostgREST is running on its configured port. A request will return ``200 OK`` if PostgREST is alive or ``503`` otherwise.
|
}
|
||||||
|
</script>
|
||||||
The ``ready`` endpoint also checks the state of both the Database Connection and the :ref:`schema_cache`. A request will return ``200 OK`` if it is ready or ``503`` if not.
|
|
||||||
|
|
||||||
For instance, to verify if PostgREST is running at ``localhost:3000`` while the ``admin-server-port`` is set to ``3001``:
|
|
||||||
|
|
||||||
.. tabs::
|
|
||||||
|
|
||||||
.. code-tab:: http
|
|
||||||
|
|
||||||
GET localhost:3001/live HTTP/1.1
|
|
||||||
|
|
||||||
.. code-tab:: bash Curl
|
|
||||||
|
|
||||||
curl -I "http://localhost:3001/live"
|
|
||||||
|
|
||||||
.. code-block:: http
|
|
||||||
|
|
||||||
HTTP/1.1 200 OK
|
|
||||||
|
|
||||||
If you have a machine with multiple network interfaces and multiple PostgREST instances in the same port, you need to specify a unique :ref:`hostname <server-host>` in the configuration of each PostgREST instance for the health check to work correctly. Don't use the special values(``!4``, ``*``, etc) in this case because the health check could report a false positive.
|
|
||||||
@@ -95,6 +95,7 @@ npm
|
|||||||
nxl
|
nxl
|
||||||
nxr
|
nxr
|
||||||
OAuth
|
OAuth
|
||||||
|
Observability
|
||||||
OpenAPI
|
OpenAPI
|
||||||
openapi
|
openapi
|
||||||
ORM
|
ORM
|
||||||
|
|||||||
Reference in New Issue
Block a user