Informations de référence sur la table de télémétrie

Important

Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Cette page documente les tables que Lakebase écrit dans votre schéma de catalogue Unity une fois que vous avez configuré l’observabilité pour un projet. Insights et Genie lisent ces mêmes données, et parce qu’elles se trouvent dans votre propre catalogue Unity, vous pouvez l’interroger directement avec n’importe quel outil Azure Databricks.

Note

Il s’agit d’une fonctionnalité bêta. Les noms de tables et de colonnes peuvent changer avant la disponibilité générale.

Ce qui est capturé

Lakebase capture les signaux qu’un DBA expérimenté recherche, atterrissant dans une poignée de tables que vous pouvez interroger directement une fois qu’elles sont exportées :

Ce qui est capturé Où il atterrit
Sessions actives et événements d’attente active_session_history, wait_event_counters
Plans de requête et statistiques d’exécution par requête plan_history, pg_stat_statements_counters
Modifications de schéma : ce qui a changé, quand et par qui ddl_history
Statistiques de base de données : taille, lignes lues et modifiées, et nombres de sessions database_counters, database_gauges
Utilisation des ressources de calcul : PROCESSEUR, mémoire, cache, connexions compute_counters, compute_gauges
Messages bruts du journal Postgres, y compris l’erreur à l’origine d’un échec postgres_logs

Insights et Genie lisent ces données pour ancrer leurs réponses sur ce qui s’est réellement passé dans votre base de données, et les mêmes tableaux alimentent les tableaux de bord d’observabilité prêts à l’emploi. Le reste de cette page documente chaque colonne de chaque tableau.

Colonnes communes à chaque table

Chaque tableau ci-dessous comprend ces colonnes, qui identifient l’emplacement d’une ligne :

Column Type Description
project_id STRING Le projet Lakebase de la ligne provient.
branch_id STRING La branche de la ligne provient.
endpoint_id STRING Point de terminaison de calcul à partir duquel la ligne provient.
compute_id STRING Instance de calcul spécifique. Cela change lorsqu’un calcul est mis à l’échelle à zéro et reprend.
ts TIMESTAMP Lorsque la ligne a été enregistrée.
compute_mode STRING Mode de calcul à l’heure, par exemple en lecture-écriture ou en lecture seule.

Les tables avec noms se terminant _counters par une colonne incluent également une previous_ts colonne, marquant le début de l’intervalle sur lequel les valeurs d’une ligne ont été accumulées. Il s’agit de valeurs cumulatives pour cet intervalle, et non pour les lectures à un point dans le temps. Les tableaux se terminant par _gauges des lectures à un point dans le temps sont à la place, et n’ont pas previous_ts.

Les tableaux ci-dessous répertorient uniquement les colonnes au-delà de ces colonnes communes.

Activité de session

Capture instantanée de chaque back-end actif, échantillonné en continu. Il s’agit du même modèle que AWS Performance Insights ou l’historique de session active d’Oracle (ASH) : si une session fait quoi que ce soit, y compris en attente, elle apparaît ici.

active_session_history

Column Type Description
sample_seq LONG Position ordinale de cet exemple dans son lot.
pid LONG ID de processus du back-end.
datid LONG ID d’objet de la base de données.
userid LONG ID d’objet du rôle de connexion.
queryid LONG Identifie la requête en cours d’exécution. Correspond queryid à pg_stat_statements_counters.
wait_event_info LONG Encodage interne de l’événement d’attente.
wait_event_type STRING Catégorie de l’événement d’attente, par exemple Timeout ou Lock.
wait_event STRING Événement d’attente spécifique, par exemple PgSleep.
backend_state LONG État du back-end, par exemple actif ou inactif.
backend_type LONG Type de processus back-end.
xact_age_ms LONG Durée d’ouverture de la transaction actuelle.
query_age_ms LONG Durée d’exécution de la requête actuelle.
blocking_pid LONG PiD d’une session bloquant celle-ci, le cas échéant.
leader_pid LONG PID du leader de requête parallèle, si ce back-end est un worker parallèle.
flags LONG Indicateurs d’état internes.
plan_fingerprint LONG Liens vers une forme de plan spécifique dans plan_history.
appname_hash LONG Hachage du nom de l’application de connexion.

Événements d’attente

Nombre d’événements d’attente agrégés et temps, en complément de la vue par exemple dans active_session_history.

wait_event_counters

Column Type Description
wait_event_id LONG Encodage interne de l’événement d’attente.
wait_class_name STRING Catégorie de l’événement d’attente.
wait_event_name STRING Événement d’attente spécifique.
wait_event_count LONG Combien de fois cet événement d’attente s’est produit dans l’intervalle.
wait_event_time DOUBLE Temps total passé dans cet événement d’attente pendant l’intervalle.

Plans de requête

Enregistrement par exécution des plans de requête, y compris les statistiques de stockage complètes et spécifiques à Neon. Il s’agit de la table la plus détaillée et, en règle générale, où une investigation de requête lente se termine.

plan_history

Column Type Description
row_position LONG Position ordinale de cette ligne dans son lot.
analyze_enabled BOOLEAN Indique si le plan inclut des statistiques d’exécution réelles (EXPLAIN ANALYZE, pas seulement des estimations).
buffers_enabled BOOLEAN Indique si le plan inclut des statistiques d’utilisation des mémoires tampons.
query_hash STRING Hachage identifiant le texte de la requête.
queryid LONG Identifie la requête. Correspondances queryid dans pg_stat_statements_counters et active_session_history.
duration_ms DOUBLE Durée d’exécution de la requête.
total_cost DOUBLE Coût estimé du planificateur pour la requête.
plan_rows LONG Nombre estimé de lignes du planificateur.
actual_rows LONG Nombre de lignes réel retourné.
plan_fingerprint LONG Identifie cette forme de plan spécifique. Correspond plan_fingerprint à active_session_history.
lock_wait_time_ms DOUBLE Temps passé à attendre les verrous.
planning_time_ms DOUBLE Le temps passé à planifier la requête, séparément de l’exécution.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Activité de cache de mémoire tampon partagée pour cette exécution.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Activité de mémoire tampon locale, pour les tables temporaires.
temp_blks_read / temp_blks_written LONG Activité de fichier temporaire, par exemple à partir d’un tri ou d’un hachage volumineux.
neon_getpage_count LONG Nombre de demandes de page envoyées au serveur de pages.
neon_file_cache_hits LONG Nombre de pages servies à partir du cache de fichiers local au lieu du serveur de pages.
neon_getpage_wait_us LONG Temps passé en attente sur les demandes de page de serveur de pages, en microsecondes.
backend_pid LONG ID de processus principal qui a exécuté cette requête.
lock_wait_count LONG Nombre de fois où cette exécution a attendu un verrou.
userid / dbid LONG ID d’objet du rôle de connexion et de la base de données.
query_text STRING Texte de la requête.
plan_json STRING Plan de requête complet, en tant que JSON.
usename / datname STRING Noms du rôle de connexion et de la base de données.
application_name / client_addr STRING Nom et adresse client de l’application de connexion.
wait_events STRING Événements d’attente observés pendant cette exécution.
parameters STRING Lier les paramètres utilisés dans la requête, le cas échéant.
blocking_pids STRING Pids de sessions qui ont bloqué cette exécution, le cas échéant.
neon_branch_id / neon_endpoint_id / neon_timeline_id STRING Identificateurs de neon internes pour la branche, le point de terminaison et la chronologie.
cpu_user_time_ms / cpu_sys_time_ms DOUBLE Temps processeur consommé par cette exécution, divisé en temps utilisateur et système.
voluntary_csw / involuntary_csw LONG Le contexte bascule pendant cette exécution.
trace_id / span_id / trace_flags / service_name CORDE / CORDE / LONG / CORDE Identificateurs de suivi de style OpenTelemetry, si la requête faisait partie d’une requête trace.
timeline_id LONG Identificateur de chronologie interne.
truncated BOOLEAN Indique si les données de cette ligne (par exemple, un plan volumineux) ont été tronquées avant d’être écrites.

Statistiques sur les requêtes

Statistiques agrégées par requête, provenant de l’extension standard pg_stat_statements .

pg_stat_statements_counters

Column Type Description
userid / dbid LONG ID d’objet du rôle de connexion et de la base de données.
queryid LONG Identifie la requête. Correspondances queryid dans plan_history et active_session_history.
toplevel BOOLEAN Indique si cette ligne concerne une instruction de niveau supérieur, par opposition à une instruction imbriquée à l’intérieur d’une fonction ou d’une procédure PL/pgSQL. Consultez la limitation PL/pgSQL.
query STRING Texte de la requête.
calls LONG Nombre de fois où cette requête a été exécutée dans l’intervalle.
plans LONG Nombre de fois où cette requête a été planifiée dans l’intervalle.
rows LONG Nombre total de lignes retournées ou affectées.
total_exec_time / total_plan_time DOUBLE Temps total consacré à l’exécution et à la planification de cette requête dans l’intervalle.
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written LONG Activité de cache de mémoire tampon partagée.
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written LONG Activité de mémoire tampon locale, pour les tables temporaires.
temp_blks_read / temp_blks_written LONG Activité de fichier temporaire.
wal_bytes / wal_fpi / wal_records LONG Volume de journal en écriture anticipée généré par cette requête.
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time Mixed Statistiques de compilation JIT (juste-à-temps), si JIT a été utilisé pour cette requête.

Modifications de schéma

Modifications de schéma : ce qui a changé, quand et par qui. C’est ce que Genie lit pour tracer un incident vers une modification de schéma, qu’il s’agisse d’un déploiement ou d’une modification manuelle.

ddl_history

Column Type Description
row_position LONG Position ordinale de cette ligne dans son lot.
command_tag STRING Type de commande DDL, par exemple ALTER TABLE.
object_type / object_name STRING Type et nom de l’objet qui a changé.
schema_name STRING Schéma Postgres auquel appartient l’objet.
query_text STRING Instruction DDL complète.
duration_ms DOUBLE Durée d’exécution de l’instruction DDL.
userid / usename LONG / CORDE ID et nom de l’objet du rôle de connexion.
application_name STRING Nom de l’application de connexion.
backend_pid LONG ID de processus principal qui a exécuté l’instruction.
dbid LONG ID d’objet de la base de données.
search_path STRING Chemin de recherche de la session à l’heure.
ddl_json STRING Représentation structurée et analysée de l’instruction DDL.

Note

La capture DDL a un véritable écart : une modification apportée juste autour d’une reprise de calcul de mise à l’échelle à zéro peut être manquée. Si une modification de schéma n’apparaît pas ici même si vous savez qu’elle s’est produite, c’est la raison la plus probable. Consultez Limitations.

Journaux Postgres

Les messages de journalisation Postgres bruts, y compris l’erreur spécifique derrière une défaillance.

postgres_logs

Column Type Description
sample_seq LONG Position ordinale de cette ligne dans son lot.
elevel LONG Encodage au niveau du journal interne.
severity STRING Gravité du journal, par exemple ERROR ou LOG.
sqlstate STRING Code d’erreur Postgres SQLSTATE, par exemple 42703 pour une colonne non définie.
backend_pid / leader_backend_pid LONG ID de processus principal et PID de son leader de requête parallèle le cas échéant.
userid / usename LONG / CORDE ID et nom de l’objet du rôle de connexion.
datid / datname LONG / CORDE ID et nom de l’objet de la base de données.
application_name / client_addr STRING Nom et adresse client de l’application de connexion.
schema_name / table_name / column_name / constraint_name / datatype_name STRING Schéma, table, colonne, contrainte ou type de données référencé par l’erreur, lorsque Postgres en a un.
funcname STRING La fonction dans laquelle l’erreur s’est produite, le cas échéant.
filename / lineno CORDE / LONG Le fichier source Postgres et la ligne de l’erreur proviennent.
message STRING Texte du message de journal.
detail / hint / context STRING Détails supplémentaires, correctif suggéré et contexte de l’erreur, quand Postgres les contient.
internalquery STRING Requête générée en interne liée à l’erreur, le cas échéant.
statement STRING Instruction qui a déclenché cette entrée de journal.
truncated_mask LONG Indique les champs, le cas échéant, ont été tronqués avant d’être écrits.

Note

Les champs structurés schema_nameet table_name les column_namechamps ne sont pas renseignés pour chaque type d’erreur. Une erreur d’analyse simple « colonne n’existe pas » (SQLSTATE 42703par exemple, les laisse vides même si elle message nomme directement la colonne. Ne vous fiez pas à ces champs renseignés. Vérifiez message d’abord.

Métriques de calcul

Utilisation des ressources au niveau du calcul : processeur, mémoire, disque et E/S réseau et cache de fichiers local (LFC), cache côté calcul de Lakebase devant le serveur de pages.

compute_counters

Column Type Description
backpressure_throttling_seconds DOUBLE Temps passé la couche de stockage à limiter les écritures dans cet intervalle. Une valeur non nulle signifie que le volume d’écriture a dépassé ce que le stockage peut absorber.
host_busiest_cpu_seconds / host_cpu_seconds DOUBLE Temps processeur consommé, pour le cœur le plus bus et dans le total.
host_disk_read_bytes / host_disk_written_bytes DOUBLE Volume d’E/S de disque.
host_network_receive_bytes / host_network_transmit_bytes DOUBLE Volume d’E/S réseau.
lfc_evictions / lfc_hits / lfc_misses / lfc_writes LONG Activité du cache de fichiers local pour cet intervalle.
replica_lfc_redo_evictions LONG Évictions de cache de fichiers locales provoquées par la restauration de réplica, si ce calcul est un réplica en lecture.

compute_gauges

Column Type Description
current_lsn LONG Position actuelle du journal d’écriture anticipée.
replica_wal_replay_lsn / replica_wal_receive_lsn LONG Relecture wal et positions de réception, si ce calcul est un réplica en lecture.
max_connections LONG Limite de connexion configurée.
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m LONG Taille estimée du jeu de travail au cours des 5, 15 et 60 dernières minutes.
lfc_size_limit / lfc_allocated / lfc_used LONG Capacité du cache de fichiers local et utilisation actuelle.
total_size_limit / total_size LONG Capacité de stockage globale et utilisation actuelle.
replication_lag_bytes / replication_lag_time_ms LONG / DOUBLE Décalage de réplication, si ce calcul est un réplica en lecture.
host_logical_cpus / host_memory_total_bytes DOUBLE Processeur et mémoire provisionnés du calcul.

Métriques de base de données

Activité par base de données : lignes modifiées, transactions, sessions et intégrité du vide. C’est là que les ballonnements de table et les signaux de nettoyage automatique sont en direct.

database_counters

Column Type Description
datid / datname LONG / CORDE ID et nom de l’objet de la base de données.
active_time_ms / idle_in_transaction_time_ms / session_time_ms DOUBLE Temps passé actif, inactif dans une transaction ouverte et connecté dans l’ensemble.
deadlocks LONG Nombre d’interblocages détectés.
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated LONG Activité au niveau des lignes pour l’intervalle.
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed LONG Nombre de cycles de vie de session.
shared_blks_hit / shared_blks_read LONG Activité de cache de mémoire tampon partagée.
xact_commit / xact_rollback LONG Transactions validées et restaurées.

database_gauges

Column Type Description
datid / datname LONG / CORDE ID et nom de l’objet de la base de données.
numbackends LONG Nombre actuel de connexions à cette base de données.
size LONG Taille de la base de données sur disque.
oldest_frozen_xid_age / oldest_mxid_age LONG ID de transaction et âge de l’ID multixact de la ligne non vide la plus ancienne. Les valeurs montantes sont le signal le plus ancien de la chute de vide derrière, bien avant que le ballonnement ne devienne visible dans la taille de la table.

Limitations

Warning

Si vous créez des rôles pour connecter des applications, un mot de passe tapé dans une instruction SQL peut se retrouver dans l’historique CREATE ROLE ... PASSWORD '...' des requêtes ou des instructions. Créez le rôle via l’interface utilisateur, SDK, API ou CLI, qui génèrent le mot de passe côté serveur pour que vous ne le tapiez jamais en texte clair. L’interface affiche le mot de passe généré une seule fois. Le SDK, l’API et la ligne de code ne le renvoient pas, donc obtenez un mot de passe ensuite. Voir Comment obtenir un mot de passe.

Pendant la version bêta, les limitations suivantes s’appliquent :

  • COPY les opérations ne sont actuellement pas capturées dans l’historique du plan de requête.

  • Une requête exécutée à l’intérieur d’une fonction OU d’une procédure PL/pgSQL n’est pas capturée dans les données de télémétrie au niveau de la requête, sauf si elle s’exécute également en tant qu’instruction de niveau supérieur. Le suivi des propres instructions de Postgres compte uniquement les instructions de niveau supérieur par défaut.

  • Les branches et les points de terminaison apparaissent dans la télémétrie exportée et les insights avec leur ID interne (par exemple, br-odd-mud-y2icrn1h), et non avec un nom d’affichage comme « production ». Consultez l’ID dans l’interface utilisateur de Lakebase si vous devez confirmer à quelle branche ou à quel point de terminaison un insight ou une ligne de tableau fait référence.

  • Les GUCs qui activent la capture de télémétrie peuvent ne pas se propager automatiquement à une ressource de calcul existante. Si la télémétrie n’apparaît pas après avoir configuré l’observabilité, connectez-vous au projet et vérifiez :

    SHOW neon_monitor.log_capture_enabled;
    SHOW databricks.o11y_exporter_enabled;
    

    Les deux doivent retourner on. Si l’un ou l’autre retourne off, redémarrez le point de terminaison de calcul.

Étapes suivantes