Das Unternehmen hat das gleichnamige Erweiterungsmodul pgsentinel veröffentlicht (), das in PostgreSQL die Ansicht pg_active_session_history hinzufügt – die Historie aktiver Sitzungen (analog zur Oracle v$active_session_history).
Im Wesentlichen handelt es sich einfach um sekundengenaue Schnappschüsse aus pg_stat_activity, jedoch gibt es wichtige Punkte:
- Alle gesammelten Informationen werden nur im Arbeitsspeicher gespeichert, und das verbrauchte Speichervolumen wird durch die Anzahl der zuletzt gespeicherten Einträge geregelt.
- Ein Feld queryid wird hinzugefügt – dasselbe queryid aus der Erweiterung pg_stat_statements (eine vorherige Installation ist erforderlich).
- Ein Feld top_level_query wird hinzugefügt – der Text der Abfrage, von der die aktuelle Abfrage aufgerufen wurde (im Fall der Verwendung von pl/pgsql)
Vollständige Liste der Felder pg_active_session_history:
Spalte | Typ
------------------+--------------------------
ash_time | Zeitstempel mit Zeitzone
datid | oid
datname | Text
pid | Ganzzahl
usesysid | oid
usename | Text
application_name | Text
client_addr | Text
client_hostname | Text
client_port | Ganzzahl
backend_start | Zeitstempel mit Zeitzone
xact_start | Zeitstempel mit Zeitzone
query_start | Zeitstempel mit Zeitzone
state_change | Zeitstempel mit Zeitzone
wait_event_type | Text
wait_event | Text
state | Text
backend_xid | xid
backend_xmin | xid
top_level_query | Text
query | Text
queryid | bigint
backend_type | Text
Ein vorgefertigtes Paket zur Installation ist derzeit nicht verfügbar. Es wird empfohlen, die Quellcodes herunterzuladen und die Bibliothek selbst zu erstellen. Zuvor muss das „devel“-Paket für Ihren Server installiert und der Pfad zu pg_config in die PATH-Variable aufgenommen werden. Kompilieren wir:
cd pgsentinel/src
make
make install
Fügen Sie die Parameter in die postgres.conf hinzu:
shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Starten Sie PostgreSQL neu und erstellen Sie das Erweiterung:
create extension pgsentinel;
Die gesammelten Informationen ermöglichen die Beantwortung folgender Fragen:
- Auf welchen Sitzungserwartungen wurde am meisten Zeit verbracht?
- Welche Sitzungen waren am aktivsten?
- Welche Abfragen waren am aktivsten?
Die Antworten auf diese Fragen lassen sich natürlich mit SQL-Abfragen erhalten, aber es ist bequemer, sie anschaulich in einem Diagramm zu sehen, indem Sie mit der Maus die interessierenden Zeitintervalle auswählen. Sie können dies mit dem kostenlosen Programm (Die gesammelten Binärdateien können im Abschnitt ).
Beim Start von PASH-Viewer (ab Version 0.4.0) wird überprüft, ob die Ansicht pg_active_session_history vorhanden ist. Wenn ja, lädt es die gesamte gesammelte Historie daraus und beginnt, neue eingehende Daten zu lesen und das Diagramm alle 15 Sekunden zu aktualisieren.

Quelle: habr.com
