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
|
|
GAUGE , INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.commits
|
|
CUMULATIVE , INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.db_size
|
|
GAUGE , INT64 gce_instance |
database
|
workload.googleapis.com/postgresql.rollbacks
|
|
CUMULATIVE , INT64 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