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
+1 -1
View File
@@ -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.
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
+2 -1
View File
@@ -123,7 +123,8 @@ Technical references for PostgREST's functionality.
references/schema_cache.rst
references/errors.rst
references/configuration.rst
references/*
references/observability.rst
references/health_check.rst
Explanations
------------
+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>
+1
View File
@@ -95,6 +95,7 @@ npm
nxl
nxr
OAuth
Observability
OpenAPI
openapi
ORM