Métricas do Snowflake Postgres¶
O Snowflake Postgres coleta automaticamente métricas de instância e as armazena na tabela de eventos ativa da sua conta. Um agente de monitoramento amostra métricas aproximadamente a cada 5 a 30 segundos, dependendo do tipo de métrica, e as grava em SNOWFLAKE.TELEMETRY.EVENTS com RECORD_TYPE = 'METRIC'.
É possível consultar essas métricas diretamente no Snowflake ou encaminhá-las para uma plataforma de observabilidade externa, como Grafana ou Observe.
Nota
Para obter informações sobre como consultar dados de log do Postgres na tabela de eventos, consulte Registro em log do Snowflake Postgres.
Métricas disponíveis¶
Métricas do Postgres¶
Métrica |
Tipo |
Descrição |
|---|---|---|
|
gauge |
Número de conexões de back-end ativas |
|
gauge |
Tamanho total de todos os bancos de dados (bytes) |
|
gauge |
Tamanho do diretório WAL (bytes) |
|
gauge |
Tamanho do diretório de logs (bytes) |
|
gauge |
Tamanho do arquivo temporário (bytes) |
|
gauge |
Número de bloqueios concedidos |
|
gauge |
Número de bloqueios em espera/bloqueados |
|
gauge |
Versão do Postgres como um número inteiro (por exemplo, 180003 = 18.0.3) |
Métricas de processo do Postgres¶
Métrica |
Tipo |
Unidade |
Dimensões |
|---|---|---|---|
|
soma |
segundos |
state (user, system, wait) process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
soma |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
|
soma |
bytes |
process.command, process.executable.name, process.owner, process.pid, process.parent_pid |
Nota
Cada processo do Postgres terá uma linha process.cpu.time para cada estado de CPU e uma para cada um destes: process.memory.usage e process.memory.virtual.
Os atributos da dimensão process.* são encontrados na coluna resource_attributes de cada linha. Assim como os valores state para outras métricas, os atributos da dimensão state estão na coluna record_attributes.
Métricas de CPU¶
Métrica |
Tipo |
Unidade |
Dimensões |
|---|---|---|---|
|
soma |
segundos |
state: user, system, wait, idle, nice, interrupt, softirq, steal cpu: cpu# |
|
gauge |
threads |
-– |
|
gauge |
threads |
-– |
|
gauge |
threads |
-– |
Nota
Cada cpu# (como cpu0 e cpu2) terá uma linha system.cpu.time para cada estado de CPU.
system.cpu.time é um contador cumulativo. Para obter uma porcentagem, calcule o delta entre amostras consecutivas e divida pelo intervalo decorrido.
Métricas de memória¶
Métrica |
Tipo |
Unidade |
Dimensões |
|---|---|---|---|
|
soma |
bytes |
state: used, free, cached, buffered, slab_reclaimable, slab_unreclaimable |
Nota
Uma linha system.memory.usage para cada estado.
Métricas de disco¶
Métrica |
Tipo |
Unidade |
Dimensões |
|---|---|---|---|
|
soma |
bytes |
mountpoint, device, state (used, free), type, mode |
Nota
Uma linha system.filesystem.usage para cada estado.
Métricas de rede¶
Métrica |
Tipo |
Unidade |
Dimensões |
|---|---|---|---|
|
soma |
bytes |
device, direction (transmit, receive) |
Nota
Cada dispositivo (“eth0” e “lo”) terá uma linha system.network.io para cada direção.
Métricas de paginação¶
Métrica |
Tipo |
Unidade |
Dimensões |
|---|---|---|---|
|
soma |
bytes |
device, state (used, free) |
Nota
Uma linha system.paging.usage para cada estado.
Atributos de recursos¶
Cada linha de métrica inclui os seguintes campos em RESOURCE_ATTRIBUTES:
Atributo |
Descrição |
Exemplo |
|---|---|---|
|
Identificador da instância do Postgres |
|
|
Nome do host do servidor |
|
|
ID da instância EC2 |
|
|
Família de instâncias |
|
|
Região da AWS |
|
|
Zona de disponibilidade |
|
|
Sempre |
|
|
Sempre |
|
Consulta de métricas¶
Uma determinada instância do Snowflake Postgres pode ter vários servidores em execução a qualquer momento, como um servidor primário e o servidor de HA dele ou uma substituição de atualização aguardando a janela de manutenção da instância para ser ativada. Como cada um desses servidores reportará métricas para o instance_id da instância, você também precisa do host_name do servidor atualmente ativo da instância.
Para encontrar o instance_id da sua instância do Postgres, use DESCRIBE POSTGRES INSTANCE:
O instance_id da instância é o primeiro segmento do valor host retornado (tudo antes do primeiro ponto).
Nota
Você pode usar a coluna host da saída do comando SHOW POSTGRES INSTANCES para ver os valores do host da instância para todas as instâncias do Snowflake Postgres em execução na sua conta.
Para encontrar o host_name do servidor atual da instância, use uma pesquisa DNS CNAME simples do valor host da instância.
Digamos que o valor host retornado foi “4jypgsndvzd5ta6ufaryx6owja.sfengineering-pgtest.preprod.us-west-2.aws.postgres.snowflake.app” (então sabemos que o instance_id da instância é “4jypgsndvzd5ta6ufaryx6owja”).
Aqui está um exemplo usando o utilitário dig CLI para fazer a pesquisa DNS CNAME:
E aqui está um exemplo usando o módulo dns.resolver do Python:
O valor host_name é o primeiro segmento do valor retornado, “df6m4y5m5fgfpb5idy2pj67xrm” nos exemplos acima.
A consulta a seguir retorna o valor mais recente para cada métrica coletada nos últimos 5 minutos:
Nota
A consulta acima usa a tabela de eventos padrão da conta, SNOWFLAKE.TELEMETRY.EVENTS. Se você configurou uma tabela de eventos personalizada, ajuste a consulta adequadamente.
Consultas de métricas de exemplo¶
Conexões ativas¶
Uso de memória por estado¶
Médias de carga do CPU¶
Tamanho do banco de dados¶
Encaminhando métricas para ferramentas externas¶
Como as métricas são armazenadas em uma tabela padrão do Snowflake, é possível encaminhá-las para qualquer plataforma de observabilidade que seja compatível com uma conexão Snowflake. Para obter uma configuração passo a passo com ferramentas específicas, consulte: