Télémétrie de Lakebase dans les tables système

Important

Cette fonctionnalité est en version bêta. Pour l’utiliser, un administrateur d’espace de travail doit activer l’observabilité Lakebase dans les Tables Système depuis la page des Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Lakebase capture sa télémétrie d’observabilité dans le system.lakebase schéma, en commençant par des signaux Postgres avancés. La capture est automatique. Avec cette prévisualisation activée, la télémétrie se situe dans ces tables pendant que le calcul du projet s’exécute. Il n’y a pas de configuration à créer, pas de destination à choisir, et aucun identifiant à fournir. Insights et Genie lisent les mêmes tableaux, et vous pouvez les interroger avec n’importe quel outil Azure Databricks.

Note

Les noms de tables et de colonnes peuvent changer avant la disponibilité générale.

Exigences

  • L’observabilité Lakebase dans l’aperçu des tables système est activée pour votre espace de travail.
  • Un projet Lakebase sur AWS ou Azure. Consultez Obtenir une base de données Postgres.

Ce qui est capturé

Lakebase enregistre les signaux nécessaires pour expliquer une base de données lente ou défaillante, à travers les tables suivantes :

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

Les archives sont conservées pendant 7 jours. Le reste de cette page documente chaque colonne de chaque tableau. Pour savoir où ces tables se situent parmi les autres tableaux système, voir référence à la table système Lakebase.

Access

Les system.lakebase tables sont régies par le catalogue Unity. Les utilisateurs ayant à la fois les rôles d’administrateur de compte et d’administrateur du métastore peuvent lire la télémétrie et gérer l’accès. Consultez Gérer les privilèges dans Unity Catalog.

Access s’applique au niveau du schéma, donc un utilisateur capable de lire system.lakebase voit la télémétrie pour chaque projet du compte.

Texte de déclaration masquée

Les colonnes contenant le texte des relevés reviennent <REDACTED> , sauf si vous êtes administrateur de compte ou membre du databricks_pii_access groupe au niveau du compte. Un administrateur de compte crée et gère ce groupe. Voir Créer et gérer le databricks_pii_access groupe et accéder au texte de la déclaration masquée.

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. Masqué. Voir le texte de déclaration masquée.
plan_json STRING Plan de requête complet, en tant que JSON. Masqué. Voir le texte de déclaration masquée.
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. Masqué. Voir le texte de déclaration masquée.
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. Masqué. Voir le texte de déclaration masquée.
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. Masqué. Voir le texte de déclaration masquée.
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. Masqué. Voir le texte de déclaration masquée.

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. Masqué. Voir le texte de déclaration masquée.
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

Note

Les mots de passe sont expurgés lorsqu’une déclaration est capturée, donc une saisie CREATE ROLE lit PASSWORD '***'. La rédaction dépend de la détection du mot de passe dans la déclaration, et une déclaration mal formée peut échapper à la détection.

Azure Databricks recommande les rôles OAuth, qui authentifient les identités Azure Databricks avec des jetons sans laisser de mot de passe pour taper.

Les limites suivantes s'appliquent :

  • COPY Les opérations ne sont pas enregistré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 d’extrémité apparaissent dans la télémétrie et les insights par identifiant interne (par exemple, br-odd-mud-y2icrn1h), et non par un nom d’affichage comme « production ». Recoupez l’ID dans l’interface Lakebase si vous devez confirmer à quelle branche ou point d’extrémité une ligne d’insight ou de table 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 l’activation de l’aperçu, 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.

Configurations d’observabilité héritées

Avant que la télémétrie ne passe aux tables système, vous pouviez créer une configuration d’observabilité qui capturait la télémétrie dans un catalogue et un schéma dans votre propre catalogue Unity, tout en fournissant des tableaux de bord préconstruits. Les configurations existantes continuent de fonctionner, et leurs tableaux de bord restent disponibles. Vous ne pouvez plus créer de nouvelles configurations d’observabilité, et la capture dans les tables système ne crée pas de tableaux de bord.

Étapes suivantes