Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Apptelemetri finns i Beta.
Databricks Apps-telemetri samlar in spårningar, loggar och mått och bevarar dem till Unity Catalog-tabeller med hjälp av OTel-protokollet (OpenTelemetry). När du har aktiverat apptelemetri samlar Databricks automatiskt in systemloggar och användningshändelser som användarinloggning och direkta API-begäranden. Du kan också lägga till anpassad instrumentation med hjälp av OpenTelemetry SDK för ditt ramverk.
krav
- Arbetsytan måste vara i en region som stöds:
australiaeast,brazilsouth,canadacentral,centralindia,centralus,eastus,eastus2,germanywestcentral,northcentralus,northeurope,southcentralus,southeastasia,swedencentral,switzerlandnorth,uksouth,westeurope,westus,westus2,westus3.
- Om du vill skapa nya telemetrimåltabeller i Unity Catalog behöver
CAN MANAGEdu behörigheter för målkatalogen och schemat samtCREATE TABLEschemat. - Om du vill skriva till befintliga telemetrimåltabeller i Unity Catalog behöver du antingen
CAN MANAGEbehörigheter för målkatalogen och schemat, eller så måste alla kontoanvändare haUSE CATALOG,USE SCHEMA,SELECTochMODIFYpå måltabellerna. - Måltabeller måste vara hanterade Delta-tabeller i samma region som din arbetsyta.
- Databricks rekommenderar att du aktiverar förutsägande optimering på telemetrimåltabellerna för bättre frågeprestanda.
Aktivera apptelemetri
Anmärkning
Om du har skapat en app före apptelemetri beta måste du stoppa och starta om den innan du fortsätter med följande konfigurationssteg.
Om du vill aktivera telemetri för en app konfigurerar du en katalog och ett schema för telemetritabellerna i appinställningarna.
- Öppna sidan med appinformation på din Azure Databricks-arbetsyta.
- Leta upp avsnittet Apptelemetrikonfiguration på fliken Översikt och klicka på Lägg till.
- Ange eller bläddra för att välja en katalog och ett schema. Azure Databricks skriver telemetridata till tre tabeller på den valda platsen:
otel_metrics,otel_spansochotel_logs. - (Valfritt) Ange ett tabellprefix så att tabellerna heter
<prefix>_otel_metrics,<prefix>_otel_spansoch<prefix>_otel_logs. Azure Databricks lägger till i befintliga tabeller eller skapar dem om de inte finns. - Klicka på Spara.
- Distribuera om appen så att telemetrin börjar flöda till Unity Catalog.
Verifiera telemetridata
Tabellen otel_logs fylls i automatiskt efter omdistributionen. Tabellerna otel_spans och otel_metrics fylls bara i när du har lagt till anpassad instrumentation i din app.
När du har distribuerat om appen:
Gå till appens URL för att generera aktivitet.
Vänta några sekunder tills den första databatchen visas.
Kör följande fråga i Databricks SQL för att bekräfta att data flödar:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Fråga efter telemetridata
Användbara kolumner för filtrering och korrelering av telemetridata är time, service_name, trace_id, span_idoch attributes. Kolumnen attributes är en karta som innehåller händelsespecifika metadata, till exempel event.name.
Om du vill visa hela schemat för en telemetritabell kör du:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
Följande exempel frågar tabellen otel_logs efter system- eller anpassade OpenTelemetry ERROR-loggar inom den senaste timmen:
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;
Lägga till anpassad instrumentation
Lägg till autoinstrumentation för OpenTelemetry för att generera anpassade spårningar, mått och loggar. Uppdatera dina app.yaml filer och beroendefiler enligt vad som visas för ramverket.
Streamlit
Uppdatera app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Uppdatera requirements.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
Dash
Uppdatera app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Uppdatera requirements.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
Uppdatera app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Uppdatera requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Uppdatera app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Uppdatera requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Skapa en otel.js-fil:
'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);
Uppdatera package.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"
}
}
Miljövariabler
När du aktiverar apptelemetri konfigurerar Databricks automatiskt miljövariabler i appkörningen för OTLP-insamlarens slutpunkt, exportprotokoll, resursattribut och batchbearbetning. En fullständig lista över OTel-miljövariabler finns i Miljövariabler för apptelemetri.
Gränser och begränsningar
Apptelemetri använder Zerobus Ingest-anslutningsappen för att skriva data till Unity Catalog-tabeller. Alla begränsningar för Zerobus Ingest-anslutningsappen gäller för apptelemetri, inklusive begränsningar för poststorlek, dataflöde, leveransgarantier och måltabellkrav.
Förutom Zerobus-gränserna, begränsar appens telemetri storleken på en loggpost till maximalt 1 MB per rad.