PostgreSQL, RED, Golden Signals: una guía para la acción

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'.

De manera similar, puede organizar un tablero.
.

?

  1. Requests. , . , , .

  2. Errors. , - / .

  3. Duration. , . .

  4. Saturation. idle waiting , . , ad-hoc idle .

- .

Weaponry Postgres , idle , Weaponry .

- -Postgres', .




All Articles