Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
File di log del database RDS per PostgreSQL
RDS per PostgreSQL registra le attività del database nel file di log PostgreSQL predefinito. Per un'istanza database PostgreSQL on-premise, questi messaggi vengono archiviati localmente in log/postgresql.log
. Per un'istanza database RDS per PostgreSQL, il file di log è disponibile nell'istanza Amazon RDS. Inoltre, devi utilizzare la console Amazon RDS per visualizzarne o scaricarne il contenuto. Il livello di registrazione predefinito rileva gli errori di accesso, gli errori irreversibili del server, i deadlock e gli errori delle query.
Per ulteriori informazioni su come visualizzare, scaricare e guardare i registri di database basati su file, consulta Monitoraggio dei file di log di Amazon RDS. Per ulteriori informazioni sui registri PostgreSQL, consulta Working with Amazon RDS and Aurora PostgreSQL logs: Part 1
Oltre ai log PostgreSQL standard trattati in questo argomento, RDS per PostgreSQL supporta anche l'estensione di audit PostgreSQL (pgAudit
). La maggior parte dei settori regolamentati e degli enti governativi deve mantenere un log di audit o un audit trail delle modifiche apportate ai dati per conformità ai requisiti legali. Per informazioni sull'installazione e sull'utilizzo di pgAudit, consulta Utilizzo di pgAudit per registrare l'attività del database.
Argomenti
Parametri che influiscono sul comportamento della registrazione
È possibile personalizzare il comportamento di registrazione per l'istanza database RDS per PostgreSQL modificando vari parametri. Nella tabella seguente sono riportati, tra le altre impostazioni, i parametri che stabiliscono la durata di archiviazione dei log, quando ruotarli e se l'output del log è in formato CSV (valori separati da virgole). Puoi anche trovare l'output di testo inviato a STDERR, tra le altre impostazioni. Per modificare le impostazioni per i parametri modificabili, utilizza un gruppo di parametri del·clusterdatabase personalizzato per l'istanza database RDS per PostgreSQL. Per ulteriori informazioni, consulta Utilizzo di gruppi di parametri DB in un'istanza DB. Come indicato nella tabella, log_line_prefix
non può essere modificato.
Parametro | Predefinito | Descrizione |
---|---|---|
log_destination | stderr | Imposta il formato di output per il registro. L'impostazione predefinita è |
log_filename |
postgresql.log.%Y-%m-%d-%H |
Specifica il modello per il nome del file di log. Oltre al valore predefinito, questo parametro supporta |
log_line_prefix | %t:%r:%u@%d:[%p]: | Definisce il prefisso per ogni riga di log che viene scritta in |
log_rotation_age | 60 | I minuti dopo i quali il file di log viene ruotato automaticamente. Puoi modificare questo valore entro un intervallo compreso tra 1 e 1440 minuti. Per ulteriori informazioni, consulta Impostazione della rotazione dei file di log. |
log_rotation_size | – | La dimensione (KB) che stabilisce la rotazione automatica del log. Per impostazione predefinita, questo parametro non viene utilizzato perché i log vengono ruotati in base al parametro. |
rds.log_retention_period | 4320 | I registri PostgreSQL più vecchi del numero di minuti specificato vengono eliminati. Il valore di default di 4.320 minuti elimina i file di log dopo 3 giorni. Per ulteriori informazioni, consulta Impostazione del periodo di retention dei log. |
Per identificare i problemi dell'applicazione, puoi cercare fallimenti di query, errori di accesso, deadlock ed errori irreversibili del server nel registro. Ad esempio, supponi di convertire un'applicazione legacy da Oracle ad Amazon RDS PostgreSQL, ma non tutte le query sono state convertite correttamente. Queste query formattate in modo errato generano messaggi di errore nei registri che puoi utilizzare per identificare i problemi. Per ulteriori informazioni sulla registrazione delle query, consulta Attivazione della registrazione delle query per l'istanza database RDS per PostgreSQL.
Negli argomenti seguenti sono disponibili informazioni su come impostare vari parametri che controllano i dettagli di base dei log PostgreSQL.
Argomenti
Impostazione del periodo di retention dei log
Il parametro rds.log_retention_period
specifica per quanto tempo l'istanza database RDS per PostgreSQL conserva i file di log. L'impostazione predefinita è 3 giorni (4.320 minuti), ma è possibile impostare qualsiasi valore compreso tra 1 giorno (1.440 minuti) e 7 giorni (10.080 minuti). Assicurati che l'istanza database RDS per PostgreSQL abbia spazio di archiviazione sufficiente per contenere i file di log per il periodo di tempo specificato.
l'istanza database RDS per PostgreSQL. Per ulteriori informazioni, consulta Pubblicazione dei log PostgreSQL su Amazon Logs CloudWatch . Logs. CloudWatch
Impostazione della rotazione dei file di log
Per impostazione predefinita, nuovi file di log vengono creati da Amazon RDS ogni ora. La tempistica è controllata dal parametro log_rotation_age
. Questo parametro ha un valore predefinito di 60 (minuti), ma è possibile impostarlo su qualsiasi valore tra 1 minuto e 24 ore (1.440 minuti). Al momento della rotazione, viene creato un nuovo file di log distinto. Il file è denominato in base al modello specificato dal parametro log_filename
.
I file di log possono anche essere ruotati in base alle loro dimensioni, come specificato dal parametro log_rotation_size
. Questo parametro specifica che il log deve essere ruotato quando raggiunge la dimensione specificata (in kilobyte). Per un'istanza database RDS for PostgreSQL, log_rotation_size
non è impostato, cioè non è specificato alcun valore. Tuttavia, puoi impostare il parametro su un valore compreso tra 0 e 2.097.151 kB (kilobyte).
I nomi dei file di registro si basano sul modello di nome di file specificato nel parametro log_filename
. Le impostazioni disponibili per questo parametro sono le seguenti:
postgresql.log.%Y-%m-%d
: formato predefinito per il nome del file di registro. Include l'anno, il mese e la data nel nome del file di log.postgresql.log.%Y-%m-%d-%H
: include l'ora nel formato del nome del file di registro.
Per ulteriori informazioni, consulta log_rotation_age
log_rotation_size
Impostazione della destinazione del registro (stderr
, csvlog
)
Per impostazione predefinita, PostgreSQL genera i log in formato errore standard (stderr). Questo formato è l'impostazione predefinita per il parametro log_destination
. Ogni messaggio ha un prefisso che utilizza il modello specificato nel parametro log_line_prefix
. Per ulteriori informazioni, consulta Informazioni sul parametro log_line_prefix.
RDS per PostgreSQL può anche generare log in formato csvlog
. Il formato csvlog
è utile per analizzare i dati dei registri in formato CSV. Ad esempio, supponi di utilizzare l'estensione log_fdw
per lavorare con i log come tabelle esterne. La tabella esterna creata sui file di log di stderr
contiene una singola colonna con i dati degli eventi di log. Aggiungendo csvlog
al parametro log_destination
, ottieni il file di log in formato CSV con le demarcazioni per le diverse colonne della tabella esterna. In tal modo puoi ordinare e analizzare i log più facilmente. Per informazioni su come usare log_fdw
con csvlog
, consulta Utilizzo dell'estensione log_fdw per accedere al registro di database utilizzando SQL.
Se specifichi csvlog
per questo parametro, tieni presente che vengono generati entrambi i file stderr
e csvlog
. Ti consigliamo di monitorare lo spazio di archiviazione consumato dai registri tenendo conto di rds.log_retention_period
e delle altre impostazioni che influiscono sull'archiviazione e sulla rotazione dei registri. Utilizzando stderr
e csvlog
lo spazio di archiviazione consumato dai registri aumenta più del doppio.
Se aggiungi csvlog
a log_destination
e vuoi ripristinare solo stderr
, devi reimpostare il parametro. Per farlo, nella console Amazon RDS apri il gruppo di parametri del·clusterdatabase personalizzato per la tua istanza. Scegli il parametro log_destination
, seleziona Edit parameter (Modifica parametro), quindi Reset (Reimposta).
Per ulteriori informazioni sulla configurazione dei registri, consulta Utilizzo dei log Amazon RDS e Aurora PostgreSQL: Parte 1
Informazioni sul parametro log_line_prefix
Il formato di log stderr
applica il prefisso a ogni messaggio di log con i dettagli specificati dal parametro log_line_prefix
, come indicato di seguito.
%t:%r:%u@%d:[%p]:t
Non puoi modificare questa impostazione. Ogni voce del log inviata a stderr
include le seguenti informazioni.
-
%t
- Ora della voce di log -
%r
- Indirizzo dell'host remoto -
%u@%d
- Nome utente @ nome del database -
[%p]
- ID del processo, se disponibile
Attivazione della registrazione delle query per l'istanza database RDS per PostgreSQL
È possibile raccogliere informazioni più approfondite sulle attività dei database, tra cui query, query in attesa di blocchi, checkpoint e molti altri dettagli impostando alcuni parametri elencati nella tabella seguente. Questo argomento illustra la registrazione delle query.
Parametro | Predefinito | Descrizione |
---|---|---|
log_connections | – | Registra ogni connessione riuscita. |
log_disconnections | – | Registra il momento in cui termina ciascuna sessione e la relativa durata. |
log_checkpoints | 1 | Registra ogni checkpoint. |
log_lock_waits | – | Registra lunghe attese di lock. Per impostazione predefinita, questo parametro non è impostato. |
log_min_duration_sample | – | Imposta il tempo (ms) minimo di esecuzione oltre il quale viene registrato un campione di istruzioni. La dimensione del campione viene impostata utilizzando il parametro log_statement_sample_rate . |
log_min_duration_statement | – | Viene registrata qualsiasi istruzione SQL che viene eseguita per il periodo specificato o per più tempo. Per impostazione predefinita, questo parametro non è impostato. L'attivazione di questo parametro può aiutarti a trovare query non ottimizzate. |
log_statement | – | Imposta il tipo di istruzioni registrate. Per impostazione predefinita, questo parametro non è impostato, ma puoi modificarlo in |
log_statement_sample_rate | – | La percentuale di istruzioni che superano il tempo specificato in |
log_statement_stats | – | Scrive le statistiche cumulative sulla prestazione nel registro del server. |
Utilizzo della registrazione per trovare query lente
È possibile registrare istruzioni e query SQL per trovare le query con prestazioni lente. Puoi attivare questa funzionalità modificando le impostazioni nei parametri log_statement
e log_min_duration
come descritto in questa sezione. Prima di attivare la registrazione delle query per l'istanza database RDS per PostgreSQL, è necessario essere consapevoli della possibile esposizione delle password nei registri e di come mitigare i rischi. Per ulteriori informazioni, consulta Riduzione del rischio di esposizione delle password quando si utilizza la registrazione delle query.
Di seguito sono disponibili informazioni di riferimento sui parametri log_statement
e log_min_duration
.
log_statement
Questo parametro specifica il tipo di istruzioni SQL che devono essere inviate al registro. Il valore predefinito è none
. Se modifichi questo parametro in all
, ddl
o mod
, esegui le azioni consigliate per ridurre il rischio di esporre le password nei log. Per ulteriori informazioni, consulta Riduzione del rischio di esposizione delle password quando si utilizza la registrazione delle query.
- tutto
-
Registra tutte le istruzioni. Questa impostazione è consigliata per il debug.
- ddl
-
Registra tutte le istruzioni DDL (Data Definition Language), come CREATE, ALTER, DROP e così via.
- mod
-
Registra tutte le istruzioni DDL e DML (Data Manipulation Language), come INSERT, UPDATE e DELETE, che modificano i dati.
- nessuno
-
Nessuna istruzione SQL viene registrata. Consigliamo questa impostazione per evitare il rischio di esporre le password nei registri.
log_min_duration_statement
Viene registrata qualsiasi istruzione SQL che viene eseguita per il periodo specificato o per più tempo. Per impostazione predefinita, questo parametro non è impostato. L'attivazione di questo parametro può aiutarti a trovare query non ottimizzate.
- –1–2147483647
-
Il numero di millisecondi (ms) di runtime durante il quale un'istruzione viene registrata.
Per configurare la registrazione delle query
Questi passaggi presuppongono che l'istanza database RDS per PostgreSQL utilizzi un gruppo di parametri database personalizzato.
Imposta il parametro
log_statement
suall
. L'esempio seguente mostra le informazioni scritte nel filepostgresql.log
con questa impostazione del parametro.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 ----------------------
Impostare il parametro
log_min_duration_statement
. L'esempio seguente mostra le informazioni scritte nel filepostgresql.log
quando il parametro è impostato su1
.Le query che superano la durata specificata nel parametro
log_min_duration_statement
vengono registrate. Di seguito viene riportato un esempio. Puoi visualizzare il file di log per l'istanza database RDS per PostgreSQL nella console Amazon RDS.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 ----------------------
Riduzione del rischio di esposizione delle password quando si utilizza la registrazione delle query
Ti consigliamo di mantenere log_statement
impostato su none
per evitare di esporre le password. Se imposti log_statement
su all
, ddl
o mod
, ti consigliamo di eseguire una o più delle seguenti operazioni.
-
Per il client, applica la crittografia delle informazioni sensibili. Per ulteriori informazioni, consulta Encryption Options
(Opzioni di crittografia) nella documentazione di PostgreSQL. Usa le opzioni ENCRYPTED
(eUNENCRYPTED
) delle istruzioniCREATE
eALTER
. Per ulteriori informazioni, consulta CREATE USERnella documentazione di PostgreSQL. Per l'istanza database RDS per PostgreSQL, configura e usa l'estensione di audit PostgreSQL (pgAudit). Questa estensione oscura le informazioni sensibili nelle istruzioni CREATE e ALTER inviate al registro. Per ulteriori informazioni, consulta Utilizzo di pgAudit per registrare l'attività del database.
-
Limita l'accesso ai log. CloudWatch
-
Utilizza meccanismi di autenticazione più efficaci come IAM.
Pubblicazione dei log PostgreSQL su Amazon Logs CloudWatch
Per archiviare i record di log PostgreSQL in uno storage altamente durevole, puoi utilizzare Amazon Logs. CloudWatch Con CloudWatch Logs, puoi anche eseguire analisi in tempo reale dei dati di log e utilizzarli CloudWatch per visualizzare metriche e creare allarmi. Ad esempio, se imposti log_statement
su ddl
, puoi impostare un avviso per notificare ogni volta che viene eseguita un'istruzione DDL. Puoi scegliere di caricare i log di PostgreSQL in Logs durante il processo di creazione dell'istanza DB RDS CloudWatch per PostgreSQL. Se hai scelto di non caricare i registri, puoi successivamente modificare l'istanza per iniziare a caricare i registri da quel momento in poi. In altre parole, i log esistenti non vengono caricati. Solo i nuovi log vengono caricati quando vengono creati sull'istanza database RDS per PostgreSQL modificata.
Tutte le versioni di RDS per PostgreSQL attualmente disponibili supportano la pubblicazione di file di registro in Logs. CloudWatch Per informazioni dettagliate, consulta Amazon RDS for PostgreSQL updates (Aggiornamenti di Amazon RDS per PostgreSQL) in Amazon RDS for PostgreSQL Release Notes (Note di rilascio di Amazon RDS per PostgreSQL).
Per utilizzare CloudWatch Logs, configura l'istanza DB RDS for PostgreSQL per pubblicare i dati di log in un gruppo di log.
È possibile pubblicare i seguenti tipi di log in CloudWatch Logs for RDS for PostgreSQL:
-
Log di PostgreSQL
-
Registro di aggiornamento
Dopo aver completato la configurazione, Amazon RDS pubblica gli eventi di log per registrare i flussi all'interno di un CloudWatch gruppo di log. Ad esempio, i dati di log di PostgreSQL sono archiviati in un gruppo di log /aws/rds/instance/
. Per visualizzare i log, apri la console all' CloudWatch indirizzo https://console.aws.amazon.com/cloudwatch/.my_instance
/postgresql
Per pubblicare i log di PostgreSQL su Logs utilizzando la console CloudWatch
Apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/
. -
Nel pannello di navigazione, scegliere Databases (Database).
-
Scegliere l'istanza database che si desidera modificare e selezionare Modify (Modifica).
-
Nella sezione Esportazioni dei log, scegli i log che desideri iniziare a pubblicare su Logs. CloudWatch
La sezione Esportazioni dei log è disponibile solo per le versioni di PostgreSQL che supportano la pubblicazione nei registri. CloudWatch
-
Scegliere Continue (Continua) e quindi Modify DB Instance (Modifica istanza database) nella pagina di riepilogo.
È possibile pubblicare i log di PostgreSQL con. AWS CLI Puoi chiamare il comando modify-db-instance
con i parametri seguenti.
-
--db-instance-identifier
-
--cloudwatch-logs-export-configuration
Nota
Viene sempre applicata all'istanza database una modifica all'opzione --cloudwatch-logs-export-configuration
immediatamente. Pertanto, le opzioni --apply-immediately
e --no-apply-immediately
non hanno alcun effetto.
Puoi anche pubblicare i log PostgreSQL chiamando i seguenti comandi CLI:
Esegui uno di questi comandi CLI con le opzioni seguenti:
-
--db-instance-identifier
-
--enable-cloudwatch-logs-exports
-
--db-instance-class
-
--engine
Altre opzioni potrebbero essere richieste a seconda del comando CLI eseguito.
Esempio Modifica un'istanza per pubblicare i log in Logs CloudWatch
L'esempio seguente modifica un'istanza DB PostgreSQL esistente per pubblicare file di registro in Logs. CloudWatch Il valore --cloudwatch-logs-export-configuration
è un oggetto JSON. La chiave per questo oggetto è EnableLogTypes
e il suo valore è una matrice di stringhe con qualsiasi combinazione di postgresql
e upgrade
.
Per, o: Linux macOS Unix
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'
Per Windows:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
Esempio Crea un'istanza per pubblicare i log in Logs CloudWatch
L'esempio seguente crea un'istanza DB PostgreSQL e pubblica i file di registro in Logs. CloudWatch Il valore --enable-cloudwatch-logs-exports
è una matrice di stringhe JSON. Le stringhe possono essere una qualsiasi combinazione di postgresql
e upgrade
.
Per, o: Linux macOS Unix
aws rds create-db-instance \ --db-instance-identifier
mydbinstance
\ --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \ --db-instance-classdb.m4.large
\ --enginepostgres
Per Windows:
aws rds create-db-instance ^ --db-instance-identifier
mydbinstance
^ --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^ --db-instance-classdb.m4.large
^ --enginepostgres
È possibile pubblicare i log PostgreSQL con RDS API. Puoi chiamare l'operazione ModifyDBInstance
con i parametri seguenti:
-
DBInstanceIdentifier
-
CloudwatchLogsExportConfiguration
Nota
Viene sempre applicata all'istanza database una modifica al parametro CloudwatchLogsExportConfiguration
immediatamente. Pertanto, il parametro ApplyImmediately
non ha alcun effetto.
È possibile anche pubblicare i log PostgreSQL eseguendo una delle seguenti azioni API RDS:
Esegui una di queste azioni API RDS con i seguenti parametri:
-
DBInstanceIdentifier
-
EnableCloudwatchLogsExports
-
Engine
-
DBInstanceClass
Altri parametri potrebbero essere richiesti a seconda dell'operazione eseguita.