Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
COPYLes 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 retourneoff, 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
- Détecter les problèmes avec Insights : l’agent qui examine cette télémétrie selon un planning.
- Enquêtez et corrigez les problèmes avec Genie : posez vos questions sur cette télémétrie avec vos propres mots.
- Référence de table système Lakebase : où ces tables se situent parmi les autres tables système.