PostgreSQL

L'integrazione PostgreSQL raccoglie le metriche di utilizzo del database, ad esempio le dimensioni del database, il numero di backend o il numero di operazioni. L'integrazione raccoglie anche i log PostgreSQL e li analizza in un payload JSON. Questo risultato include campi per ruolo, utente, livello e messaggio.

Per ulteriori informazioni su PostgreSQL, consulta postgresql.org.

Prerequisiti

Per raccogliere e importare log e metriche PostgreSQL, devi installare l'agente operativo versione 2.9.0 o successive.

Questo ricevitore supporta PostgreSQL 10.18 e versioni successive.

Configura la tua istanza PostgreSQL

Il destinatario postgresql si connette per impostazione predefinita a un server postgresql locale utilizzando un socket Unix e l'autenticazione Unix come utente root.

Configurazione dell'agente operativo per PostgreSQL

Segui la guida per configurare l'agente operativo, aggiungi gli elementi necessari per raccogliere log e metriche dalle istanze PostgreSQL e riavvia l'agente.

Configurazione di esempio

Il comando seguente crea il file di configurazione per raccogliere e importare log e metriche per PostgreSQL e riavvia l'agente operativo su 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 raccolta dei log

Per importare i log da PostgreSQL, devi creare dei destinatari per i log prodotti da PostgreSQL, quindi creare una pipeline per i nuovi destinatari.

Per configurare un ricevitore per i log postgresql_general, specifica i seguenti campi:

Campo predefinita Descrizione
type Il valore deve essere postgresql_general.
include_paths [/var/log/postgresql/postgresql*.log, /var/lib/pgsql/data/log/postgresql*.log, /var/lib/pgsql/*/data/log/postgresql*.log] I file di log da leggere.
exclude_paths I file di log da escludere, se include_paths contiene un glob o una directory.

Che cosa viene registrato

I logName dei log postgresql_general sono ricavati dagli ID destinatario specificati nella configurazione. Di seguito sono riportati i campi dettagliati all'interno di LogEntry.

postgresql_general
Questi log contengono i seguenti campi in LogEntry:

Campo Tipo Descrizione
jsonPayload.tid number ID thread da cui ha origine il log
jsonPayload.role string Ruolo autenticato per l'azione registrata, quando pertinente
jsonPayload.user string Utente autenticato per l'azione registrata, quando pertinente
jsonPayload.level string Gravità del log o tipo di interazione di database per alcuni log
jsonPayload.message string Log dell'azione del database
severity stringa (LogSeverity) Livello di voce di log (tradotto)
timestamp stringa (Timestamp) L'ora in cui la voce è stata registrata

Configurazione della raccolta di metriche

Per raccogliere metriche da PostgreSQL, devi creare un ricevitore per le metriche PostgreSQL e quindi creare una pipeline per il nuovo destinatario. Per configurare un ricevitore per le metriche PostgreSQL, specifica i seguenti campi:

Campo predefinita Descrizione
type Il valore deve essere postgresql.
endpoint /var/run/postgresql/.s.PGSQL.5432 Il nome host:porta o socket che inizia con / utilizzato per la connessione al server postgresql.
collection_interval 60s Un valore time.Duration, ad esempio 30s o 5m.
username Il nome utente utilizzato per la connessione al server.
password La password utilizzata per la connessione al server.
insecure true Consente di stabilire se utilizzare o meno una connessione TLS sicura. Se questo criterio viene impostato su false, TLS viene attivato.
insecure_skip_verify false Consente di scegliere se saltare o meno la verifica del certificato. Se insecure è impostato su true, il valore di insecure_skip_verify non viene utilizzato.
cert_file Percorso del certificato TLS da utilizzare per le connessioni TLS richieste.
key_file Percorso della chiave TLS da utilizzare per le connessioni TLS richieste.
ca_file Percorso del certificato CA. In qualità di client, verifica il certificato del server. Se vuoto, il destinatario utilizza la CA radice del sistema.

Che cosa viene monitorato

La seguente tabella fornisce l'elenco delle metriche che l'agente operativo raccoglie dall'istanza PostgreSQL.

Tipo di metrica
Tipo, tipo
Risorse monitorate
Etichette
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
CUMULATIVEINT64
gce_instance
database

Verificare la configurazione

Puoi utilizzare Esplora log e Esplora metriche per verificare di aver configurato correttamente il ricevitore PostgreSQL. L'avvio della raccolta di log e metriche da parte dell'agente operativo potrebbe richiedere uno o due minuti.

Per verificare l'importazione dei log, vai a Esplora log ed esegui la query seguente per visualizzare i log PostgreSQL:

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


Per verificare l'importazione delle metriche, accedi a Metrics Explorer ed esegui la query seguente nella scheda MQL.

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

Passaggi successivi

Per una panoramica su come utilizzare Ansible per installare l'agente operativo, configurare un'applicazione di terze parti e installare una dashboard di esempio, guarda il video dedicato a l'agente operativo per risolvere i problemi delle applicazioni di terze parti.