PostgreSQL

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

La integración de PostgreSQL recopila métricas de uso de la base de datos, como el tamaño de la base de datos, la cantidad de backends o de operaciones. La integración también recopila registros de PostgreSQL y los analiza en una carga útil de JSON. Este resultado incluye campos para el rol, el usuario, el nivel y el mensaje.

Para obtener más información acerca de PostgreSQL, consulta la documentación de PostgreSQL.

Requisitos previos

Para recopilar la telemetría de PostgreSQL, debes instalar el agente de operaciones:

  • Para las métricas, instala la versión 2.9.0 o una posterior. Se agregaron métricas adicionales en la versión 2.21.0.
  • Para los registros, instala la versión 2.9.0 o una posterior.

Esta integración es compatible con la versión 10.18+ de PostgreSQL.

Configura tu instancia de PostgreSQL

El receptor postgresql se conecta de forma predeterminada a un servidor postgresql local con un socket Unix y la autenticación Unix como el usuario root.

Configura el agente de operaciones para PostgreSQL

Mediante la guía Configura el Agente de operaciones, agrega los elementos necesarios para recopilar la telemetría de las instancias de PostgreSQL y reinicia el agente.

Configuración de ejemplo

Los siguientes comandos crean la configuración para recopilar y transferir la telemetría para PostgreSQL y reinician el agente de operaciones.

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    postgresql:
      type: postgresql
      username: postgres
      password: abc123
      insecure: true
      endpoint: localhost:5432
  service:
    pipelines:
      postgresql:
        receivers:
        - postgresql
logging:
  receivers:
    postgresql_general:
      type: postgresql_general
  service:
    pipelines:
      postgresql:
        receivers:
          - postgresql_general
EOF

sudo service google-cloud-ops-agent restart
sleep 60

Configura la recopilación de registros

A fin de transferir registros desde PostgreSQL, debes crear receptores para los registros que produce PostgreSQL y, luego, crear una canalización para los receptores nuevos.

A fin de configurar un receptor para tus registros postgresql_general, especifica los siguientes campos:

Campo Predeterminada Descripción
exclude_paths Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.
include_paths [/var/log/postgresql/postgresql*.log, /var/lib/pgsql/data/log/postgresql*.log, /var/lib/pgsql/*/data/log/postgresql*.log] Una lista de rutas de acceso del sistema de archivos que se leerán mediante la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type El valor debe ser postgresql_general.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración de tiempo que se puede analizar mediante time.ParseDuration, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

¿Qué se registra?

logName se deriva de los ID de receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes.

Los registros postgresql_general contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.level string Gravedad del registro o tipo del tipo de interacción de la base de datos para algunos registros
jsonPayload.message string Registro de la acción de la base de datos
jsonPayload.role string Rol autenticado para la acción que se registra cuando es relevante
jsonPayload.tid número ID de subproceso en el que se originó el registro
jsonPayload.user string Usuario autenticado para la acción que se registra cuando es relevante
severity string (LogSeverity) Nivel de entrada de registro (traducido).

Configura la recopilación de métricas

A fin de transferir métricas desde PostgreSQL, debes crear receptores para las métricas que produce PostgreSQL y, luego, una canalización para los receptores nuevos.

A fin de configurar un receptor para las métricas de postgresql, especifica los siguientes campos:

Campo Predeterminada Descripción
ca_file Ruta al certificado de CA. Como cliente, esto verifica el certificado del servidor. Si está vacío, el receptor usa la CA raíz del sistema.
cert_file Ruta de acceso al certificado TLS que se usará para las conexiones requeridas por mTLS.
collection_interval 60s Un valor time.Duration, como 30s o 5m.
endpoint /var/run/postgresql/.s.PGSQL.5432 La ruta hostname:port o del socket que comienza con / se usa para conectarse al servidor postgresql.
insecure true Establece si se debe usar o no una conexión TLS segura. Si se configura como false, TLS está habilitado.
insecure_skip_verify false Establece si se debe omitir la verificación del certificado. Si insecure se configura como true, no se usa el valor insecure_skip_verify.
key_file Ruta de acceso a la clave TLS que se usará para las conexiones requeridas por mTLS.
password La contraseña usada para conectarse al servidor.
type Este valor debe ser postgresql.
username El nombre de usuario usado para conectarse al servidor.

Qué se supervisa

En la siguiente tabla, se proporciona una lista de métricas que el agente de operaciones recopila de la instancia PostgreSQL.

Tipo de métrica 
Categoría, tipo
Recursos supervisados
Etiquetas
workload.googleapis.com/postgresql.backends
GAUGEINT64
gce_instance
database
workload.googleapis.com/postgresql.bgwriter.buffers.allocated
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/postgresql.bgwriter.buffers.writes
CUMULATIVEINT64
gce_instance
source
workload.googleapis.com/postgresql.bgwriter.checkpoint.count
CUMULATIVEINT64
gce_instance
type
workload.googleapis.com/postgresql.bgwriter.duration
CUMULATIVEINT64
gce_instance
type
workload.googleapis.com/postgresql.bgwriter.maxwritten
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/postgresql.blocks_read
CUMULATIVEINT64
gce_instance
database
table
source
workload.googleapis.com/postgresql.commits
CUMULATIVEINT64
gce_instance
database
workload.googleapis.com/postgresql.connection.max
GAUGEINT64
gce_instance
 
workload.googleapis.com/postgresql.database.count
GAUGEINT64
gce_instance
 
workload.googleapis.com/postgresql.db_size
GAUGEINT64
gce_instance
database
workload.googleapis.com/postgresql.index.scans
CUMULATIVEINT64
gce_instance
database
table
index
workload.googleapis.com/postgresql.index.size
GAUGEINT64
gce_instance
database
table
index
workload.googleapis.com/postgresql.operations
CUMULATIVEINT64
gce_instance
database
table
operation
workload.googleapis.com/postgresql.replication.data_delay
GAUGEINT64
gce_instance
replication_client
workload.googleapis.com/postgresql.rollbacks
CUMULATIVEINT64
gce_instance
database
workload.googleapis.com/postgresql.rows
GAUGEINT64
gce_instance
database
state
table
workload.googleapis.com/postgresql.table.count
GAUGEINT64
gce_instance
database
workload.googleapis.com/postgresql.table.size
GAUGEINT64
gce_instance
database
table
workload.googleapis.com/postgresql.table.vacuum.count
CUMULATIVEINT64
gce_instance
database
table
workload.googleapis.com/postgresql.wal.age
GAUGEINT64
gce_instance
 
workload.googleapis.com/postgresql.wal.lag
GAUGEINT64
gce_instance
operation
replication_client

Panel de muestra

Para ver tus métricas de PostgreSQL, debes tener configurado un gráfico o un panel. Cloud Monitoring proporciona una biblioteca de paneles de muestra para integraciones, que contienen gráficos preconfigurados. Para obtener información sobre la instalación de estos paneles, consulta Instala paneles de muestra.

Verifica la configuración

En esta sección, se describe cómo verificar que hayas configurado correctamente el receptor de PostgreSQL. El agente de operaciones puede tardar uno o dos minutos en comenzar a recopilar telemetría.

Para verificar que se transfieran los registros, ve a Explorador de registros y ejecuta la siguiente consulta a fin de ver los registros de PostgreSQL:

resource.type="gce_instance"
log_id("postgresql_general")

Para verificar que las métricas se transfieran, ve a Explorador de métricas y ejecuta la siguiente consulta en la pestaña MQL:

fetch gce_instance
| metric 'workload.googleapis.com/postgresql.backends'
| every 1m

¿Qué sigue?

Para obtener una explicación sobre cómo usar Ansible a fin de instalar el agente de operaciones, configurar una aplicación de terceros y, luego, instalar un panel de muestra, consulta el video Instala el agente de operaciones para solucionar problemas de apps de terceros.