PostgreSQL

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 la función, el usuario, el nivel y el mensaje.

Para obtener más información sobre PostgreSQL, consulta postgresql.org.

Requisitos previos

Para recopilar y transferir registros y métricas de PostgreSQL, debes instalar el agente de operaciones versión 2.9.0 o posterior.

Este receptor es compatible con las versiones 10.18 y posteriores 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 registros y métricas de tus instancias de PostgreSQL y reinicia el agente.

Configuración de ejemplo

El siguiente comando crea el archivo de configuración a fin de recopilar y transferir registros y métricas para PostgreSQL, y reiniciar el agente de operaciones en 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

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 los registros postgresql_general, especifica los siguientes campos:

Campo Predeterminada Descripción
type El valor debe ser postgresql_general.
include_paths [/var/log/postgresql/postgresql*.log, /var/lib/pgsql/data/log/postgresql*.log, /var/lib/pgsql/*/data/log/postgresql*.log] Los archivos de registro que se leerán.
exclude_paths Los archivos de registro que se excluirán si include_paths contiene un glob o un directorio.

¿Qué se registra?

Los logName de los registros postgresql_general derivan de los ID de receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes.

postgresql_general
Estos registros contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.tid número ID de subproceso en el que se originó el registro
jsonPayload.role string Función autenticada para la acción que se registra cuando es relevante
jsonPayload.user string Usuario autenticado para la acción que se registra cuando es relevante
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
severity string (LogSeverity) Nivel de entrada de registro (traducido)
timestamp string (Timestamp) Hora en la que se registró la entrada

Configura la recopilación de métricas

A fin de recopilar métricas de PostgreSQL, debes crear un receptor para las métricas de PostgreSQL y, luego, crear una canalización destinada al receptor nuevo. A fin de configurar un receptor para las métricas de PostgreSQL, especifica los siguientes campos:

Campo Predeterminada Descripción
type El valor debe ser postgresql.
endpoint /var/run/postgresql/.s.PGSQL.5432 La ruta hostname:port o del socket que comienza con / se usa para conectarse al servidor postgresql.
collection_interval 60s Un valor time.Duration, como 30s o 5m.
username El nombre de usuario usado para conectarse al servidor.
password La contraseña usada para conectarse al servidor.
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.
cert_file Ruta de acceso al certificado TLS que se usará para las conexiones requeridas por TLS.
key_file Ruta de acceso a la clave TLS que se usará para las conexiones requeridas por TLS.
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.

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.commits
CUMULATIVEINT64
gce_instance
database
workload.googleapis.com/postgresql.db_size
GAUGEINT64
gce_instance
database
workload.googleapis.com/postgresql.rollbacks
CUMULATIVEINT64
gce_instance
database

Verifica la configuración

Puedes usar el explorador de registros y el explorador de métricas para verificar que configuraste de forma correcta el receptor de PostgreSQL. El agente de operaciones puede tardar uno o dos minutos en comenzar a recopilar los registros y las métricas.

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"
logName=("projects/PROJECT_ID/logs/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.operations'
| align rate(1m)
| 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.