Utilizzo dell'estensione log_fdw per accedere al registro DB utilizzando SQL - Amazon Relational Database Service

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

Utilizzo dell'estensione log_fdw per accedere al registro DB utilizzando SQL

Il per l'istanza Postgre SQL DB supporta l'log_fdwestensione, che è possibile utilizzare per accedere al registro del motore di database utilizzando un'interfaccia. SQL L'estensione log_fdw offre due nuove funzioni che semplificano la creazione di tabelle esterne per i registri di database:

  • list_postgres_log_files – Elenca i file nella directory dei registri di database e le dimensioni dei file in byte.

  • create_foreign_table_for_log_file(table_name text, server_name text, log_file_name text) – Crea una tabella esterna per il file specificato nel database corrente.

Tutte le funzioni create da log_fdw sono di proprietà di rds_superuser. I membri del ruolo rds_superuser possono concedere l'accesso a queste funzioni ad altri utenti del database.

Per impostazione predefinita, i file di log vengono generati da in formato stderr (errore standard), come specificato nel log_destination parametro. Esistono solo due opzioni per questo parametro stderr e csvlog (valori separati da virgole,). CSV Se aggiungi l'csvlogopzione al parametro, genera entrambi stderr i csvlog log. Ciò può influire sulla capacità di archiviazione del cluster di database, quindi è necessario tenere conto degli altri parametri che influiscono sulla gestione dei log. Per ulteriori informazioni, consulta Impostazione della destinazione del registro (stderr, csvlog).

Un vantaggio della generazione dei registri csvlog è che l'estensione log_fdw consente di costruire le tabelle esterne con i dati suddivisi in diverse colonne. Per eseguire questa operazione, l'istanza deve essere associata a un gruppo parametri del database personalizzato in modo da poter modificare l'impostazione per log_destination. Per ulteriori informazioni su come fare, consulta Utilizzo dei parametri sull'istanza database RDS for PostgreSQL.

L'esempio seguente presuppone che il parametro log_destination includa cvslog.

Per utilizzare l'estensione log_fdw
  1. Installa l'estensione log_fdw.

    postgres=> CREATE EXTENSION log_fdw; CREATE EXTENSION
  2. Creare un server log come wrapper di dati esterno.

    postgres=> CREATE SERVER log_server FOREIGN DATA WRAPPER log_fdw; CREATE SERVER
  3. Selezionare tutti gli elementi da un elenco di file di registro.

    postgres=> SELECT * FROM list_postgres_log_files() ORDER BY 1;

    Di seguito è riportata una risposta di esempio.

    file_name | file_size_bytes ------------------------------+----------------- postgresql.log.2023-08-09-22.csv | 1111 postgresql.log.2023-08-09-23.csv | 1172 postgresql.log.2023-08-10-00.csv | 1744 postgresql.log.2023-08-10-01.csv | 1102 (4 rows)
  4. Creare una tabella con una singola colonna "log_entry" per i file selezionato.

    postgres=> SELECT create_foreign_table_for_log_file('my_postgres_error_log', 'log_server', 'postgresql.log.2023-08-09-22.csv');

    La risposta non fornisce dettagli diversi da quello che la tabella ora esiste.

    ----------------------------------- (1 row)
  5. Selezionare un campione del file di registro. Il seguente codice recupera l'ora del log e la descrizione del messaggio di errore.

    postgres=> SELECT log_time, message FROM my_postgres_error_log ORDER BY 1;

    Di seguito è riportata una risposta di esempio.

    log_time | message ----------------------------------+--------------------------------------------------------------------------- Tue Aug 09 15:45:18.172 2023 PDT | ending log output to stderr Tue Aug 09 15:45:18.175 2023 PDT | database system was interrupted; last known up at 2023-08-09 22:43:34 UTC Tue Aug 09 15:45:18.223 2023 PDT | checkpoint record is at 0/90002E0 Tue Aug 09 15:45:18.223 2023 PDT | redo record is at 0/90002A8; shutdown FALSE Tue Aug 09 15:45:18.223 2023 PDT | next transaction ID: 0/1879; next OID: 24578 Tue Aug 09 15:45:18.223 2023 PDT | next MultiXactId: 1; next MultiXactOffset: 0 Tue Aug 09 15:45:18.223 2023 PDT | oldest unfrozen transaction ID: 1822, in database 1 (7 rows)