Aller au contenu principal

Traces PostgreSQL et carte de dépendances

Avuru Obs observe une base à travers ses applications clientes. Un nœud sur la carte atteste une dépendance ; ce n’est pas un diagnostic de santé PostgreSQL.

Choisir les preuves utiles​

PreuveSourceCe qu’elle ne démontre pas
Connexion réseauFlux eBPFTexte SQL, latence d’une requête ou santé de la base
Opération PostgreSQLCapture de protocole prise en charge ou instrumentation du clientPlan d’exécution ou détenteur d’un verrou
Dépendance de baseSpan client de l’application appelanteP95 propre ou verdict de santé du serveur PostgreSQL
Pool ou métriques internesInstrumentation ou receiver explicitement configuréCollecte automatique à partir du nœud de dépendance

La couverture dépend du runtime, du noyau, du chiffrement et du protocole. Une connexion visible sans span de requête peut nécessiter une instrumentation applicative. Toutes les connexions ne peuvent pas être décodées en requêtes.

Identifier l’opération de base​

Créez un span client autour de la vraie requête et transmettez son contexte. Les intégrations de langage peuvent le faire pour leurs drivers compatibles. Attributs OpenTelemetry utiles :

{
"db.system.name": "postgresql",
"server.address": "orders-db",
"server.port": 5432,
"db.namespace": "shop",
"db.operation.name": "SELECT"
}

Certaines instrumentations utilisent encore db.system=postgresql et db.name. Inspectez le span et la version des conventions avant de les modifier. L’exercice checkout fournit les deux noms de système de base dans son exemple.

N’intégrez pas de credentials ni de valeurs de paramètres SQL à la télémétrie. Le texte SQL peut contenir des informations sensibles : examinez ce que collecte votre instrumentation. Voir les conventions de spans de base de données.

Examiner une requête lente​

  1. Choisissez l’application appelante et la fenêtre dans Traces.
  2. Ouvrez la requête et repérez son span PostgreSQL client.
  3. Comparez sa durée à la requête englobante sans additionner les spans imbriqués.
  4. Examinez opération, cible, statut et logs portant le même ID.
  5. Vérifiez ensuite vos hypothèses avec des preuves côté base : verrous, plans ou capacité.

Selon les limites de l’instrumentation, le span client peut inclure attente de pool, réseau et exécution. Sa durée seule ne prouve pas la cause racine.

L’exemple téléchargeable permet de pratiquer sans base : il envoie un span synthétique explicitement nommé, sans exécuter de SQL.

Dépannage​

  • Pas de nœud : cherchez un span client avec identité de base et adresse cible.
  • Pas de santé ou de p95 propre : attendu pour une dépendance inférée ; examinez les mesures côté appelant.
  • Plusieurs noms pour une base : comparez server.address, alias et identité des ressources.
  • Logs non rattachés : vérifiez trace_id et span_id ; nom et heure ne suffisent pas.

Consultez les dépendances inférées et la corrélation traces/logs.