PostgreSQL

A integração do PostgreSQL coleta métricas de uso do banco de dados, como o tamanho do banco de dados, o número de back-ends ou o número de operações. A integração também coleta registros do PostgreSQL e os analisa em um payload JSON. Esse resultado inclui campos para papel, usuário, nível e mensagem.

Para mais informações sobre o PostgreSQL, consulte postgresql.org (em inglês).

Pré-requisitos

Para coletar e ingerir registros e métricas do PostgreSQL, você precisa instalar o agente de operações versão 2.9.0 ou mais recente.

Este receptor suporta as versões 10.18 e mais recentes do PostgreSQL.

Configurar a instância do PostgreSQL

Por padrão, o receptor postgresql se conecta a um servidor postgresql local usando um soquete Unix e a autenticação Unix como usuário root.

Configurar o agente de operações para PostgreSQL

Seguindo o guia para configurar o agente de operações, adicione os elementos necessários para coletar registros e métricas das instâncias do PostgreSQL e reiniciar o agente.

Exemplo de configuração

O comando a seguir cria o arquivo de configuração para coletar e ingerir registros e métricas do PostgreSQL e reiniciar o agente de operações no Linux.

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    postgresql_general:
      type: postgresql_general
  service:
    pipelines:
      postgresql:
        receivers:
          - postgresql_general
metrics:
  receivers:
    postgresql:
      type: postgresql
      collection_interval: 60s
      username: usr
      password: pwd
  service:
    pipelines:
      postgresql_pipeline:
        receivers:
          - postgresql
EOF
sudo service google-cloud-ops-agent restart

Configurar a coleta de registros

Para ingerir registros do PostgreSQL, você precisa criar receptores para os registros que o PostgreSQL produz e, em seguida, criar um pipeline para os novos receptores.

Para configurar um receptor para os registros postgresql_general, especifique os seguintes campos:

Campo Padrão Descrição
type O valor precisa ser postgresql_general.
include_paths [/var/log/postgresql/postgresql*.log, /var/lib/pgsql/data/log/postgresql*.log, /var/lib/pgsql/*/data/log/postgresql*.log] Os arquivos de registro a serem lidos.
exclude_paths Os arquivos de registro a serem excluídos, se include_paths contiver um glob ou diretório.

O que é registrado

Os registros logName de postgresql_general são derivados dos IDs do receptor especificados na configuração. Os campos detalhados dentro de LogEntry são os seguintes.

postgresql_general
Esses registros contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
jsonPayload.tid número ID da linha de execução em que o registro foi originado
jsonPayload.role string Papel autenticado para a ação que está sendo registrada quando relevante
jsonPayload.user string Usuário autenticado da ação que está sendo registrada quando relevante
jsonPayload.level string Gravidade de registro ou tipo de interação do banco de dados para alguns registros
jsonPayload.message string Registro da ação do banco de dados
severity string (LogSeverity) Nível de entrada de registro (traduzido)
timestamp string (Timestamp) Hora em que a entrada foi registrada

Configurar a coleta de métricas

Para coletar métricas do PostgreSQL, é preciso criar um receptor para as métricas do PostgreSQL e, em seguida, criar um pipeline para o novo receptor. Para configurar um receptor para suas métricas do PostgreSQL, especifique os campos a seguir:

Campo Padrão Descrição
type O valor precisa ser postgresql.
endpoint /var/run/postgresql/.s.PGSQL.5432 O nome do host: porta ou caminho do soquete que começa com / usado para se conectar ao servidor postgresql.
collection_interval 60s Um valor de time.Duration, como 30s ou 5m.
username O nome de usuário usado para se conectar ao servidor.
password A senha usada para se conectar ao servidor.
insecure true Define se uma conexão TLS segura será ou não usada. Se definido como false, o TLS será ativado.
insecure_skip_verify false Define se é necessário pular a verificação do certificado. Se insecure for definido como true, o valor de insecure_skip_verify não será usado.
cert_file Caminho para o certificado TLS a ser usado para conexões exigidas por TLS.
key_file Caminho para a chave TLS a ser usada para conexões exigidas por TLS.
ca_file Caminho para o certificado de CA. Como cliente, isso verifica o certificado do servidor. Se estiver vazio, o receptor usará a CA raiz do sistema.

O que é monitorado?

A tabela a seguir fornece a lista de métricas que o agente de operações coleta da instância do PostgreSQL.

Tipo de métrica 
Tipo, tipo
Recursos monitorados
Rótulos
workload.googleapis.com/postgresql.backends
GAUGEINT64
gce_instance
database
workload.googleapis.com/postgresql.commits
CUMULATIVEINT64
gce_instance
database
workload.googleapis.com/postgresql.db_size
GAUGEINT64
gce_instance
database
workload.googleapis.com/postgresql.rollbacks
CUMULATIVEINT64
gce_instance
database

Verificar a configuração

Use o Explorador de registros e o Metrics Explorer para verificar se você configurou o receptor PostgreSQL corretamente. Pode levar um ou dois minutos para o agente de operações começar a coletar registros e métricas.

Para verificar se os registros são ingeridos, acesse o Explorador de registros e execute a seguinte consulta para ver os registros PostgreSQL:

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/postgresql_general")


Para verificar se as métricas são ingeridas, acesse o Metrics Explorer e execute a seguinte consulta na guia do MQL.

fetch gce_instance
| metric 'workload.googleapis.com/postgresql.operations'
| align rate(1m)
| every 1m

A seguir

Para ver um tutorial sobre como usar o Ansible para instalar o agente de operações, configurar um aplicativo de terceiros e instalar um painel de amostra, consulte o vídeo Instalação do agente de operações para resolver problemas de aplicativos de terceiros.