Die Geschichte aktiver Sitzungen in PostgreSQL – das neue pgsentinel-Erweiterung

Das Unternehmen pgsentinel hat das gleichnamige Erweiterungsmodul pgsentinel veröffentlicht (GitHub-Repository), 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:

  1. Alle gesammelten Informationen werden nur im Arbeitsspeicher gespeichert, und das verbrauchte Speichervolumen wird durch die Anzahl der zuletzt gespeicherten Einträge geregelt.
  2. Ein Feld queryid wird hinzugefügt – dasselbe queryid aus der Erweiterung pg_stat_statements (eine vorherige Installation ist erforderlich).
  3. 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 PASH-Viewer (Die gesammelten Binärdateien können im Abschnitt Releases).

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.

Die Geschichte aktiver Sitzungen in PostgreSQL – das neue pgsentinel-Erweiterung

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster