PostgreSQL

L'intégration PostgreSQL collecte des métriques d'utilisation de la base de données, telles que la taille de la base de données, le nombre de backends ou le nombre d'opérations. L'intégration collecte également les journaux PostgreSQL et les analyse en une charge utile JSON. Ce résultat inclut des champs pour le rôle, l'utilisateur, le niveau et le message.

Pour en savoir plus sur PostgreSQL, consultez la page postgresql.org.

Prérequis

Pour collecter et ingérer des journaux et des métriques PostgreSQL, vous devez installer l'agent Ops version 2.9.0 ou ultérieure.

Ce récepteur est compatible avec PostgreSQL 10.18 et versions ultérieures.

Configurer une instance PostgreSQL

Le récepteur postgresql se connecte par défaut à un serveur postgresql local à l'aide d'un socket Unix et de l'authentification Unix en tant qu'utilisateur root.

Configurer l'agent Ops pour PostgreSQL

En suivant le guide de configuration de l'agent Ops, ajoutez les éléments requis pour collecter les journaux et les métriques de vos instances PostgreSQL, puis redémarrez l'agent.

Exemple de configuration

La commande suivante crée le fichier de configuration permettant de collecter et d'ingérer des journaux et des métriques de PostgreSQL, et de redémarrer l'agent Ops sous 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

Configurer la collecte de journaux

Pour ingérer des journaux à partir de PostgreSQL, vous devez créer des récepteurs pour les journaux produits par PostgreSQL, puis créer un pipeline pour les nouveaux récepteurs.

Pour configurer un récepteur pour vos journaux postgresql_general, spécifiez les champs suivants :

Champ Par défaut Description
type La valeur doit être égale à postgresql_general.
include_paths [/var/log/postgresql/postgresql*.log, /var/lib/pgsql/data/log/postgresql*.log, /var/lib/pgsql/*/data/log/postgresql*.log] Fichiers journaux à lire
exclude_paths Fichiers journaux à exclure, si include_paths contient un fichier glob ou un répertoire

Contenu consigné

Le logName des journaux postgresql_general est dérivé des ID de récepteur spécifiés dans la configuration. Les champs détaillés dans l'entrée de journal (LogEntry) sont les suivants.

postgresql_general
Ces journaux contiennent les champs suivants dans le LogEntry :

Champ Type Description
jsonPayload.tid nombre ID du thread d'où provient le journal
jsonPayload.role chaîne Rôle authentifié pour l'action enregistrée, le cas échéant
jsonPayload.user chaîne Utilisateur authentifié pour l'action enregistrée, le cas échéant
jsonPayload.level chaîne Niveau de gravité du journal ou type d'interaction de la base de données pour certains journaux
jsonPayload.message chaîne Journal de l'action de base de données
severity chaîne (LogSeverity) Niveau d'entrée de journal (traduit)
timestamp chaîne (Timestamp) Heure à laquelle l'entrée a été consignée

Configurer la collecte de métriques

Pour collecter des métriques à partir de PostgreSQL, vous devez créer un récepteur pour les métriques PostgreSQL, puis créer un pipeline pour le nouveau récepteur. Pour configurer un récepteur pour vos métriques PostgreSQL, spécifiez les champs suivants :

Champ Par défaut Description
type La valeur doit être égale à postgresql.
endpoint /var/run/postgresql/.s.PGSQL.5432 Chemin d'accès au nom d'hôte/port ou au socket commençant par / et permettant de se connecter au serveur postgresql.
collection_interval 60s Une valeur time.Duration, telle que 30s ou 5m.
username Nom d'utilisateur utilisé pour se connecter au serveur.
password Mot de passe utilisé pour se connecter au serveur.
insecure true Indique si une connexion TLS sécurisée doit être utilisée. Si ce paramètre est défini sur false, TLS est activé.
insecure_skip_verify false Indique si la validation du certificat doit être ignorée ou non. Si insecure est défini sur true, la valeur insecure_skip_verify n'est pas utilisée.
cert_file Chemin d'accès au certificat TLS à utiliser pour les connexions TLS requises.
key_file Chemin d'accès à la clé TLS à utiliser pour les connexions TLS requises.
ca_file Chemin d'accès au certificat CA. En tant que client, cela vérifie le certificat du serveur. Si ce champ est vide, le récepteur utilise l'autorité de certification racine du système.

Métriques surveillées

Le tableau suivant fournit la liste des métriques que l'agent Ops collecte à partir de l'instance PostgreSQL.

Type de métrique
Genre, type
Ressources surveillées
Libellés
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

Vérifier la configuration

Vous pouvez utiliser l'explorateur de journaux et l'explorateur de métriques pour vérifier que vous avez correctement configuré le récepteur PostgreSQL. La collecte des journaux et des métriques par l'agent Ops peut prendre une ou deux minutes.

Pour vérifier que les journaux sont ingérés, accédez à l'explorateur de journaux et exécutez la requête suivante pour afficher les journaux PostgreSQL :

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


Pour vérifier que les métriques sont ingérées, accédez à l'explorateur de métriques et exécutez la requête suivante dans l'onglet MQL.

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

Étape suivante

Pour accéder à un tutoriel pas à pas expliquant comment utiliser Ansible pour installer l'agent Ops, configurer une application tierce et installer un exemple de tableau de bord, consultez la vidéo Install the Ops Agent to troubleshoot third-party applications (Installer l'agent Ops pour résoudre les problèmes liés à des applications tierces).