Separate Admin into Observability and Health Check (#716)

This commit is contained in:
Laurence Isla
2023-12-04 16:32:02 -05:00
committed by GitHub
parent 92573215b9
commit 48dee75d1a
5 changed files with 48 additions and 32 deletions
+30
View File
@@ -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:
@@ -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
-- 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.
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.
if (willRedirectTo) {
window.location.href = willRedirectTo;
}
</script>