Registro em log do Snowflake Postgres

Recuperando dados de log do Postgres

All Postgres servers on Snowflake Postgres instances log locally to syslog. The log data is collected from there and sent to your account’s active event table.

Para visualizar os logs do Postgres de uma determinada instância, consulte a tabela de eventos do campo TIMESTAMP e a parte MESSAGE do campo VALUE dos registros com o comando record_type = 'LOG', usando a parte inicial do nome de host da instância, também conhecida como ID da instância (ou cluster_id). Por exemplo, o comando abaixo extrairá os últimos 10 minutos de entradas de log da instância com ID oyrpb2cwtvbu5al5vtbyrsnkgy:

SELECT TIMESTAMP, VALUE:MESSAGE as log_line
FROM SNOWFLAKE.TELEMETRY.EVENTS
WHERE resource_attributes['snowflake.o11y.logtype'] = 'postgres-otelcol-vm-agent'
  AND resource_attributes['instance.id'] = 'oyrpb2cwtvbu5al5vtbyrsnkgy'
  AND record_type = 'LOG'
  AND TIMESTAMP > CURRENT_TIMESTAMP() - INTERVAL '10 MINUTES'
LIMIT 100;
Copy

Nota

A consulta acima usa a tabela de eventos padrão da conta, SNOWFLAKE.TELEMETRY.EVENTS. Se você configurou uma tabela de eventos personalizada, deve ajustar a consulta adequadamente.

Each row of the output will contain a single log-line entry that was logged by the Postgres server on the given Snowflake Postgres instance with the timestamp when it was originally logged. Note that it can take up to a few minutes between the time Postgres makes a log entry and it is available in the event table.

Explicando a intercalação de linhas de log do Postgres

Note that Postgres uses multi-line logging and since multiple Postgres server processes will be making log entries concurrently, full log entries from different Postgres server processes will often be interleaved. For example, let’s consider these log line entries:

Exemplo de linhas de log do Postgres

timestamp

log_line

2025-12-09 23:16:38.760

«[14-1] [1592908][client backend][27/2][0] [user=snowflake_admin,db=postgres,app=psql] [34.214.158.144] ERROR: canceling statement due to user request»

2025-12-09 23:16:38.760

«[10-1] [1593992][not initialized][][0] [user=[unknown],db=[unknown],app=[unknown]] [34.214.158.144] LOG: connection received: host=34.214.158.144 port=46114»

2025-12-09 23:16:38.760

«[14-2] [1592908][client backend][27/2][0] [user=snowflake_admin,db=postgres,app=psql] [34.214.158.144] STATEMENT: select pg_sleep(10);»

2025-12-09 23:16:43.007

«[15-1] [1592908][client backend][27/3][0] [user=snowflake_admin,db=postgres,app=psql] [34.214.158.144] LOG: AUDIT: SESSION,2,1,MISC,SHOW,,,show log_min_duration_statement,<not logged>»

Em cada entrada de linha de log:

  • Os primeiros valores entre colchetes são o número do comando da sessão que executou o comando e a linha de log desse comando separados por hífen. Por exemplo, [1-1] e [1-2] são duas linhas de log do primeiro comando executado em uma sessão.

  • The second bracketed value is the process ID (pid) for the session that logged the line. Postgres uses a process-based (vs. thread-based) concurrency model so each session is run on its own server process.

Neste exemplo, você pode ver que:

  • O comando 14 foi executado pela sessão com pid 1592908 como cancelamento de uma consulta select pg_sleep(10);.

  • O registro do comando 14 pelo pid 1592908 adicionou duas linhas de log, [14-1] e [14-2].

  • Uma única linha de log do décimo comando executado pela sessão com pid 1593992 terminou entre as duas linhas do comando 14 no pid 1592908.

  • O comando seguinte executado pela sessão com pid 1592908 era uma consulta show log_min_duration_statement e exigia apenas uma linha de log: [15-1].

Dica

O formato da linha de log do Postgres é determinado pela configuração de servidor log_line_prefix, que usa o padrão «[%p][%b][%v][%x] %q[user=%u,db=%d,app=%a] [%h]» nas instâncias do Snowflake Postgres.