Aktivieren der Abfrageprotokollierung für Ihre DB-Instance von RDS für PostgreSQL - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktivieren der Abfrageprotokollierung für Ihre DB-Instance von RDS für PostgreSQL

Sie können detailliertere Informationen über Ihre Datenbankaktivitäten sammeln, einschließlich Abfragen, Abfragen, die auf Sperren warten, Prüfpunkte und viele andere Details, indem Sie einige der in der folgenden Tabelle aufgeführten Parameter festlegen. Dieses Thema konzentriert sich auf das Protokollieren von Abfragen.

Parameter Standard Beschreibung

log_connections

Protokolliert jede erfolgreiche Verbindung.

log_disconnections

Protokolliert das Ende jeder Sitzung und ihre Dauer.

log_checkpoints

1

Protokolliert jeden Checkpoint.

log_lock_waits

Protokolliert lange Sperrenwartezeiten. Dieser Parameter ist standardmäßig nicht festgelegt.

log_min_duration_sample

(ms) Legt die Mindestausführungszeit fest, jenseits der stichprobenartig Anweisungen protokolliert werden. Die Stichprobengröße wird mit dem log_statement_sample_rate-Parameter festgelegt.

log_min_duration_statement

Jede SQL-Anweisung, die mindestens für die angegebene Zeit oder länger ausgeführt wird, wird protokolliert. Dieser Parameter ist standardmäßig nicht festgelegt. Die Aktivierung dieses Parameters kann Sie dabei unterstützen, nicht optimierte Abfragen zu finden.

log_statement

Legt den Typ der protokollierten Anweisungen fest. Standardmäßig ist dieser Parameter nicht festgelegt, aber Sie können ihn in all, ddl oder mod ändern, um die Typen von SQL-Anweisungen anzugeben, die protokolliert werden sollen. Wenn Sie etwas anderes als none für diesen Parameter angeben, sollten Sie auch zusätzliche Maßnahmen ergreifen, um die Offenlegung von Passwörtern in den Protokolldateien zu verhindern. Weitere Informationen finden Sie unter Reduzieren des Risikos der Offenlegung von Passwörtern bei der Verwendung der Abfrageprotokollierung.

log_statement_sample_rate

Der Prozentsatz der Anweisungen, die die in log_min_duration_sample angegebene Zeit bei der Protokollierung überschreiten. Diese Angabe wird als Gleitkommawert zwischen 0,0 und 1,0 ausgedrückt.

log_statement_stats

Schreibt kumulative Leistungsstatistiken in das Serverprotokoll.

Verwendung der Protokollierung, um Abfragen mit langsamer Ausführung zu suchen

Sie können SQL-Anweisungen und Abfragen protokollieren, um Abfragen zu finden, die langsam ausgeführt werden. Sie aktivieren diese Funktion, indem Sie die Einstellungen der Parameter log_statement und log_min_duration wie in diesem Abschnitt beschrieben ändern. Bevor Sie die Abfrageprotokollierung für Ihre DB-Instance von RDS für PostgreSQL aktivieren, sollten Sie sich der möglichen Offenlegung von Passwörtern in den Protokollen bewusst sein und wissen, wie Sie die Risiken minimieren können. Weitere Informationen finden Sie unter Reduzieren des Risikos der Offenlegung von Passwörtern bei der Verwendung der Abfrageprotokollierung.

Nachstehend finden Sie Referenzinformationen zu den Parametern log_statement und log_min_duration.

log_statement

Dieser Parameter gibt den Typ der SQL-Anweisungen an, die an das Protokoll gesendet werden sollen. Der Standardwert ist none. Wenn Sie diesen Parameter in all, ddl oder mod ändern, stellen Sie sicher, dass Sie die empfohlenen Maßnahmen ergreifen, um das Risiko einer Offenlegung von Passwörtern in den Protokollen zu reduzieren. Weitere Informationen finden Sie unter Reduzieren des Risikos der Offenlegung von Passwörtern bei der Verwendung der Abfrageprotokollierung.

all

Protokolliert alle Anweisungen. Diese Einstellung wird für Debugging-Zwecke empfohlen.

ddl

Protokolliert alle Data Definition Language (DDL)-Anweisungen wie CREATE, ALTER, DROP usw.

mod

Protokolliert alle DDL-Anweisungen und Data Manipulation Language (DML)-Anweisungen wie INSERT, UPDATE und DELETE, die die Daten modifizieren.

Keine

Es werden keine SQL-Anweisungen protokolliert. Wir empfehlen diese Einstellung, um das Risiko zu vermeiden, dass Passwörter in den Protokollen offengelegt werden.

log_min_duration_statement

Jede SQL-Anweisung, die mindestens für die angegebene Zeit oder länger ausgeführt wird, wird protokolliert. Dieser Parameter ist standardmäßig nicht festgelegt. Die Aktivierung dieses Parameters kann Sie dabei unterstützen, nicht optimierte Abfragen zu finden.

–1–2147483647

Die Laufzeit in Millisekunden (ms), in der eine Anweisung protokolliert wird.

So richten Sie die Abfrageprotokollierung ein

Bei diesen Schritten wird davon ausgegangen, dass Ihr Die DB-Instance von RDS für PostgreSQL verwendet eine benutzerdefinierte DB-Parametergruppe.

  1. Stellen Sie den Parameter log_statement auf all ein. Im folgenden Beispiel werden die Informationen gezeigt, die bei dieser Parametereinstellung in die Datei postgresql.log geschrieben werden.

    2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
  2. Legen Sie den Parameter log_min_duration_statement fest. Im folgenden Beispiel werden die Informationen gezeigt, die in die Datei postgresql.log geschrieben werden, wenn der Parameter auf 1 festgelegt wird.

    Abfragen, die die im log_min_duration_statement-Parameter angegebene Dauer überschreiten, werden protokolliert. Es folgt ein Beispiel. Sie können die Protokolldatei für Ihre DB-Instance von RDS für PostgreSQL in der Amazon-RDS-Konsole anzeigen.

    2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------

Reduzieren des Risikos der Offenlegung von Passwörtern bei der Verwendung der Abfrageprotokollierung

Wir empfehlen, für log_statement die Einstellung none beizubehalten, um zu vermeiden, dass Passwörter offengelegt werden. Wenn Sie log_statement auf all, ddl oder mod festlegen, sollten Sie einen oder mehrere der folgenden Schritte auszuführen.

  • Verschlüsseln Sie vertrauliche Informationen für den Client. Weitere Informationen finden Sie unter Verschlüsselungsoptionen der PostgreSQL-Dokumentation. Verwenden Sie die Optionen ENCRYPTED und UNENCRYPTED der CREATE- und ALTER-Anweisungen. Weitere Informationen finden Sie im Abschnitt CREATE USER der PostgreSQL-Dokumentation.

  • Richten Sie für Ihre DB-Instance von RDS für PostgreSQL die PostgreSQL Auditing (PGAudit)-Erweiterung ein und verwenden Sie sie. Diese Erweiterung redigiert sensible Informationen in CREATE- und ALTER-Anweisungen, die an das Protokoll gesendet werden. Weitere Informationen finden Sie unter Wird verwendet pgAudit , um Datenbankaktivitäten zu protokollieren.

  • Beschränken Sie den Zugriff auf die Protokolle CloudWatch .

  • Verwenden Sie stärkere Authentifizierungsmechanismen wie IAM.