Monitoring the Connection Manager#
You can view the status of the Connection Manager and its connections through SQL queries and HTTP endpoints.
Available SQL tables and views#
The Connection Manager provides a number of tables and views that can be used to monitor the status of the Connection Manager and its connections. These include:
bdr.stat_activity - which is information from
pg_stat_activityenhanced with addition columns regarding theconnection_manager_client_addrandconnection_manager_client_portis the connection has come through the connection manager, andsession_read_onlyif it has connected through the read-only port.bdr.stat_connection_manager - which is a view that provides statistics about the Connection Manager’s status.
bdr.stat_connection_manager_connections - which is a view that provides statistics about the Connection Manager’s connections.
bdr.stat_connection_manager_node_stats - which is a view that provides statistics about the Connection Manager on each of the data nodes.
bdr.stat_connection_manager_hba_file_rules - which is a view that shows which HBA file rules for the connection manager are being used on this node.
Available HTTP/HTTPS endpoints#
The Connection Manager can be monitored through the HTTP API.
Endpoints returning true/false will also return a 200 status code for true and a 503 status code for false.
The following endpoints are available:
Endpoint |
Description |
|---|---|
/connection/is-live |
Is the connection manager live (listening), always returns “true”, if the manager is not running, the client will simply fail to open the connection/url. |
/connection/is-ready |
Is the connection manager ready to accept connections, returns true(200)/false(503). |
/connection/is-ready-ro |
Is the connection manager ready to accept read-only connections, returns true(200)/false(503). |
/connection/is-ready-rw |
Is the connection manager ready to accept read-write connections, returns true(200)/false(503). |
/node/is-read-write |
Is this PGD node, not the connection manager but the PGD node itself, a read-write node (is it write leader), returns true(200)/false(503). |
/node/is-read-only |
Is this PGD node, not the connection manager but the PGD node itself, a read-only node (not the write leader), returns true(200)/false(503). |
/group/read-write-info |
Returns information about the read-write pool on this instance of connection manager - a list of nodes in the pool in JSON format with node id, node name, node host, node port and node dbname. For the read-write pool, the pool only contains one entry. |
/group/read-only-info |
Returns information about the read-only pool on this instance of connection manager - a list of nodes in the pool in JSON format with node id, node name, node host, node port and node dbname. |
Below is an example of a response body from the
/group/read-write-info endpoint:
[
{
"id": 683485707,
"name": "node-1",
"host": "host-1",
"port": 5432,
"dbname": "pgddb"
}
]
Logging#
All Connection Manager log messages are written to the PostgreSQL log.
The behavior of %r and %h escape sequences in log_line_prefix
has been altered to log “proxy_address/client_address” and
“proxy_port/client_port” respectively.
This is achieved by the proxy setting a GUC for the server connections it uses. As users can override this GUC, any security context derived from the client_address will need to be verified by referring to the full session logs.