Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
I dati di telemetria dell'app sono in versione beta.
I dati di telemetria di Databricks Apps raccolgono tracce, log e metriche e li rende persistenti nelle tabelle del catalogo Unity usando il protocollo OpenTelemetry (OTel). Dopo aver abilitato i dati di telemetria delle app, Databricks acquisisce automaticamente i log di sistema e gli eventi di utilizzo, ad esempio l'accesso utente e le richieste API dirette. È anche possibile aggiungere strumentazione personalizzata usando OpenTelemetry SDK per il framework.
Requisiti
- L'area di lavoro deve trovarsi in un'area supportata:
australiaeast,brazilsouthcanadacentralcentralindiacentralus,eastus, .eastus2germanywestcentralnorthcentralusnortheuropesouthcentralussoutheastasiaswedencentralswitzerlandnorthuksouthwesteuropewestuswestus2westus3
- per creare nuove tabelle di destinazione di telemetria nel Catalogo Unity, sono necessarie
CAN MANAGEautorizzazioni sul catalogo e sullo schema di destinazione, eCREATE TABLEsullo schema. - Per scrivere nelle tabelle di destinazione dei dati di telemetria esistenti in Unity Catalog, sono necessarie
CAN MANAGEautorizzazioni per il catalogo e lo schema di destinazione oppure tutti gli utenti dell'account devono avereUSE CATALOG,USE SCHEMA,SELECTeMODIFYnelle tabelle di destinazione. - Le tabelle di destinazione devono essere tabelle Delta gestite nella stessa regione del tuo spazio di lavoro.
- Databricks consiglia di abilitare l'ottimizzazione predittiva nelle tabelle di destinazione dei dati di telemetria per migliorare le prestazioni delle query.
Abilitare la telemetria delle applicazioni
Annotazioni
Se è stata creata un'app prima della versione beta di telemetria dell'app, è necessario arrestarla e riavviarla prima di procedere con i passaggi di configurazione seguenti.
Per attivare la telemetria per un'app, configurare un catalogo e uno schema per le tabelle di telemetria nelle impostazioni dell'app.
- Aprire la pagina dei dettagli dell'app nell'area di lavoro di Azure Databricks.
- Nella scheda Panoramica individuare la sezione Configurazione dei dati di telemetria dell'app e fare clic su Aggiungi.
- Immettere o sfogliare per selezionare un catalogo e uno schema. Azure Databricks scrive i dati di telemetria in tre tabelle nella posizione selezionata:
otel_metrics,otel_spanseotel_logs. - (Facoltativo) Specificare un prefisso di tabella in modo che le tabelle siano denominate
<prefix>_otel_metrics,<prefix>_otel_spanse<prefix>_otel_logs. Azure Databricks aggiunge alle tabelle esistenti o li crea se non esistono. - Fare clic su Salva.
- Ridistribuire l'app in modo che i dati di telemetria inizino a passare a Unity Catalog.
Verificare i dati di telemetria
La otel_logs tabella viene popolata automaticamente dopo la ridistribuzione. Le otel_spans tabelle e otel_metrics vengono popolate solo dopo l'aggiunta di strumentazione personalizzata all'app.
Dopo aver ridistribuito l'app:
Visita l'URL dell'app per generare l'attività.
Attendere alcuni secondi per visualizzare il batch iniziale di dati.
Eseguire la query seguente in Databricks SQL per verificare che i dati vengano trasmessi:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Eseguire query sui dati di telemetria
Le colonne utili per filtrare e correlare i dati di telemetria includono time, service_nametrace_id, span_id, e attributes. La attributes colonna è una mappa che contiene metadati specifici dell'evento, event.namead esempio .
Per visualizzare lo schema completo di qualsiasi tabella di telemetria, eseguire:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
Nell'esempio seguente viene eseguita una query sulla tabella otel_logs per i log di ERRORI di sistema o di OpenTelemetry personalizzati nell'ultima ora.
SELECT time, body
FROM <catalog>.<schema>.otel_logs
WHERE service_name = '<app-name>'
AND severity_text = "ERROR"
AND time >= current_timestamp() - INTERVAL 1 HOUR
ORDER BY time DESC
LIMIT 100;
Aggiungere strumentazione personalizzata
Aggiungere la strumentazione automatica OpenTelemetry per generare tracce, metriche e log personalizzati. Aggiorna i file app.yaml e di dipendenza come mostrato per il tuo framework.
Streamlit
Aggiornamentoapp.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aggiornamentorequirements.txt:
streamlit==1.38.0
# Auto-instrumentation
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
# Required for Streamlit
opentelemetry-instrumentation-tornado
# Host metrics (CPU, memory)
opentelemetry-instrumentation-system-metrics
Cruscotto
Aggiornamentoapp.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aggiornamentorequirements.txt:
dash
dash-bootstrap-components
pandas
plotly
databricks-sql-connector
databricks-sdk
python-dotenv
dash-ag-grid
opentelemetry-distro[otlp]
opentelemetry-instrumentation-flask
opentelemetry-exporter-otlp-proto-grpc
Flask
Aggiornamentoapp.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aggiornamentorequirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Aggiornamentoapp.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aggiornamentorequirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Creare un file otel.js :
'use strict';
import { NodeSDK } from '@opentelemetry/sdk-node';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';
const sdk = new NodeSDK({
traceExporter: new OTLPTraceExporter(),
metricReader: new PeriodicExportingMetricReader({
exporter: new OTLPMetricExporter(),
exportIntervalMillis: 10000,
}),
instrumentations: [
getNodeAutoInstrumentations({
'@opentelemetry/instrumentation-fs': { enabled: false },
}),
],
});
try {
sdk.start();
} catch (e) {
console.error('OTel SDK failed to start', e);
}
async function shutdown() {
try {
await sdk.shutdown();
} catch (e) {
console.error('OTel SDK shutdown failed', e);
} finally {
process.exit(0);
}
}
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);
Aggiornamentopackage.json:
{
"name": "nodejs-otel",
"version": "0.1.0",
"private": true,
"main": "app.js",
"scripts": {
"start": "node -r ./otel.js app.js"
},
"dependencies": {
"express": "^4.21.2",
"morgan": "^1.10.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/sdk-node": "0.203.0",
"@opentelemetry/auto-instrumentations-node": "0.67.3",
"@opentelemetry/exporter-trace-otlp-proto": "0.203.0",
"@opentelemetry/exporter-metrics-otlp-proto": "0.203.0",
"@opentelemetry/exporter-logs-otlp-proto": "0.203.0",
"@opentelemetry/sdk-metrics": "2.0.1"
}
}
Variabili di ambiente
Quando si abilita la telemetria delle app, Databricks configura automaticamente le variabili di ambiente nel runtime dell'app per l'endpoint del raccoglitore OTLP, il protocollo di esportazione, gli attributi delle risorse e l'elaborazione batch. Per l'elenco completo delle variabili di ambiente OTel, vedere Variabili di ambiente di telemetria delle app.
Limiti e limitazioni
La telemetria dell'app usa il connettore Zerobus Ingest per scrivere dati nelle tabelle del catalogo Unity. Tutte le limitazioni del connettore Ingest Zerobus si applicano alla telemetria delle applicazioni, inclusi i limiti relativi alle dimensioni dei record, alla larghezza di banda, alle garanzie di recapito e ai requisiti della tabella di destinazione.
Oltre ai limiti di Zerobus, la telemetria delle app applica un formato massimo di 1 MB per riga di log.