Los métodos de observación Golden Signals y RED son plantillas para el monitoreo de servicios de construcción y definen las métricas clave que se necesitan para el monitoreo. Anteriormente, solo los administradores de supervisión o los ingenieros de SRE conocían estos métodos. Ahora el tema de la instrumentación de aplicaciones ya no es algo nuevo y más o menos todos conocen estos métodos.
En esta publicación, discutiré cómo cubrir PostgreSQL en el monitoreo usando los métodos RED y Golden Signals. El subsistema de monitoreo en Postgres se implementó en los días en que RED y Golden Signals aún no existían, y en mi humilde opinión, tiene algunos inconvenientes, y puede parecer una tarea desalentadora poner RED o Golden Signals en Postgres de inmediato. En esta publicación, intentaré revisar brevemente las posibilidades que ofrece Postgres para implementar la observación usando métodos RED / Golden Signals y daré instrucciones específicas para implementar esto. Además, no es tan difícil como podría pensar.
He estado familiarizado con RED y Golden Signals durante un tiempo relativamente largo y hay varias razones por las que debería usar estos métodos:
El monitoreo usando estos métodos le permite determinar rápidamente (pero superficialmente) si todo está en orden con el servicio.
Si hay una amplia cobertura de otras métricas, mientras investiga el problema, puede profundizar en la dirección correcta, excluyendo las menos importantes.
son más o menos universales y aplicables tanto a los servicios web como a los servicios del sistema que no están enfocados al trabajo directo con el usuario.
son un buen comienzo para cubrir las necesidades básicas de seguimiento de cualquier servicio.
, , RED Golden Signals . ( ) . - . , .
, Postgres'.
RED Golden Signals , RED :
Request rate - .
Request errors - .
Request duration - ( ).
Golden Signals ( ), (Latency, Traffic, Errors), Saturation - , , .
HTTP (), - , . (Requests), (Errors), (Duration), (Saturation).
. , "". SQL- SQL-? SQL-, .. , 1 = 1 SQL-. RED SQL- (request_id, , / ..).
Requests
, R - requests. , - . Postgres (views). .
pg_stat_statements. . per-statement , statement () calls . calls . pg_stat_statements .
pg_stat_statements . - pg_stat_statements.track . 2 . "top" . "all" . "top", .. , , .
pg_stat_statements.
SELECT sum(calls) FROM pg_stat_statements;
. Prometheus, , Zabbix UserParameter.
pg_stat_activity pg_stat_database. , pg_stat_activity , .. (snapshot) , . xact_commit, .. . , .
Errors
" " pg_stat_database. xact_rollback . - , . . , SQL- ( BEGIN .. END) xact_rollback. xact_rollback .
SQL.
SELECT sum(xact_rollback) FROM pg_stat_database;
, . , . , . Postgres .
Duration
pg_stat_statements total_time. ( ) . total_time .
SELECT sum(total_time) FROM pg_stat_statements;
, , .. Prometheus . , pg_stat_statements . total_time min_time, max_time, mean_time, stddev_time. 13 . DBA-specific , - .
Saturation
(saturation), RED , Golden Signals. ( ) , ( ).
max_connections. , . , : 1) idle 2) - tps . , : , ( ), . . , max_connections, . .
pg_stat_activity. , , .
?
(COUNTER) . " " ( , - ). . pg_stat_activity GAUGES () . . - OLTP , / GAUGE . GAUGES.
GAUGE, . , . :
(active, idle in transaction, waiting).
SELECT
count(*) FILTER (WHERE state IS NOT NULL) AS total,
count(*) FILTER (WHERE state = 'idle') AS idle,
count(*) FILTER (WHERE state IN ('idle in transaction', 'idle in transaction (aborted)')) AS idle_in_xact,
count(*) FILTER (WHERE state = 'active') AS active,
count(*) FILTER (WHERE wait_event_type = 'Lock') AS waiting,
count(*) FILTER (WHERE state IN ('fastpath function call','disabled')) AS others
FROM pg_stat_activity WHERE backend_type = 'client backend';
. xact_start - , state_change - - active .
.
SELECT coalesce(max(extract(epoch FROM clock_timestamp() - xact_start)),0) AS max_idle_seconds
FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'idle in transaction (aborted)');
.
SELECT coalesce(max(extract(epoch FROM clock_timestamp() - state_change)),0) AS max_idle_seconds
FROM pg_stat_activity
WHERE wait_event_type = 'Lock';
, . . :
idle in transactions waiting .
idle .
.
Postgres' RED Golden Signals SQL . , , . , request rate pg_stat_statements.calls. Request errors pg_stat_database.xact_rollback. Request duration pg_stat_statements.total_time. Saturation state, wait_event_type, xact_start, state_change pg_stat_activity.
6 , - drilldown- /. Postgres'.
?
- .
Weaponry Postgres , idle , Weaponry .
- -Postgres', .