Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Telemetrie aplikací je v beta verzi.
Telemetrie Databricks Apps shromažďuje stopové údaje, protokoly a metriky a ukládá je v tabulkách Katalogu Unity pomocí protokolu OpenTelemetry (OTel). Jakmile povolíte telemetrii aplikací, Databricks automaticky zaznamenává systémové protokoly a události použití, jako jsou přihlášení uživatele a přímé požadavky rozhraní API. Můžete také přidat vlastní instrumentaci pomocí sady OpenTelemetry SDK pro vaši architekturu.
Požadavky
- Pracovní prostor musí být v podporované oblasti:
australiaeast,brazilsouth,canadacentral,centralindia,centralus,eastus,eastus2,germanywestcentral,northcentralus,northeurope,southcentralus,southeastasia,swedencentral,switzerlandnorth,uksouth,westeurope,westus,westus2,westus3.
- Pokud chcete vytvořit nové cílové tabulky telemetrie v katalogu Unity, potřebujete
CAN MANAGEoprávnění k cílovému katalogu a schématu aCREATE TABLEschématu. - Pokud chcete zapisovat do existujících cílových tabulek telemetrie v katalogu Unity, potřebujete mít oprávnění buď ke cílovému katalogu a schématu, nebo všichni uživatelé účtu musí mít
CAN MANAGE,USE CATALOG,USE SCHEMAaSELECTk cílovým tabulkám. - Cílové tabulky musí být spravované tabulky Delta ve stejné oblasti jako váš pracovní prostor.
- Databricks doporučuje povolit prediktivní optimalizaci cílových tabulek telemetrie, aby se zlepšil výkon dotazů.
Povolení telemetrie aplikací
Poznámka:
Pokud jste aplikaci vytvořili před beta verzí telemetrie aplikace, musíte ji zastavit a restartovat, než budete pokračovat v následujících krocích konfigurace.
Pokud chcete zapnout telemetrii pro aplikaci, nakonfigurujte v nastavení aplikace katalog a schéma pro tabulky telemetrie.
- Otevřete stránku podrobností aplikace v pracovním prostoru Azure Databricks.
- Na kartě Přehled vyhledejte oddíl konfigurace telemetrie aplikace a klikněte na Přidat.
- Zadejte nebo procházejte, abyste vybrali katalog a schéma. Azure Databricks zapisuje telemetrická data do tří tabulek ve vybraném umístění:
otel_metrics,otel_spansaotel_logs. - (Volitelné) Zadejte předponu tabulky tak, aby se tabulky jmenovaly
<prefix>_otel_metrics,<prefix>_otel_spansa<prefix>_otel_logs. Azure Databricks připojí existující tabulky nebo je vytvoří, pokud neexistují. - Klikněte na Uložit.
- Znovu nasaďte aplikaci, aby telemetrie začala proudit do katalogu Unity.
Ověření telemetrických dat
Tabulka otel_logs se vyplní automaticky po opětovném nasazení. Tabulky otel_spans a otel_metrics jsou naplněny až po přidání vlastní instrumentace do vaší aplikace.
Po opětovném nasazení aplikace:
Přejděte na adresu URL aplikace a vygenerujte aktivitu.
Počkejte několik sekund, než se zobrazí počáteční dávka dat.
Spuštěním následujícího dotazu v Databricks SQL ověřte, že data proudí:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Dotazování telemetrických dat
Užitečné sloupce pro filtrování a korelaci telemetrických dat zahrnují time, service_name, trace_id, span_id a attributes. Sloupec attributes je mapa, která obsahuje metadata specifická pro události, například event.name.
Pokud chcete zobrazit úplné schéma jakékoli tabulky telemetrie, spusťte příkaz:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
Následující příklad dotazuje protokoly chybové úrovně z poslední hodiny, což je užitečné pro ladění problémů aplikací.
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;
Dotazovat systémové události
Azure Databricks automaticky zaznamenává systémové události v otel_logs tabulce, jako jsou například události využití pro přihlášení uživatelů a přímé požadavky rozhraní API. Vyhledejte tyto události filtrováním podle atributu event.name.
Následující příklad načte 100 nejnovějších událostí využití pro aplikaci:
SELECT time, attributes
FROM <catalog>.<schema>.otel_logs
WHERE service_name = '<app-name>'
AND attributes:["event.name"]::string = 'app.auth'
ORDER BY time DESC
LIMIT 100;
Přidání vlastní instrumentace
Přidejte automatickou instrumentaci OpenTelemetry pro generování vlastních trasování, metrik a protokolů. Aktualizujte soubory app.yaml a soubory závislostí, jak je znázorněno pro váš rámec.
Streamlit
Aktualizace app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizace 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
Pomlčka
Aktualizace app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizace 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
Aktualizace app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizace requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Aktualizace app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Aktualizace requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Vytvořte soubor 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);
Aktualizace 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"
}
}
Proměnné prostředí
Když povolíte telemetrii aplikací, Databricks automaticky nakonfiguruje proměnné prostředí v modulu runtime vaší aplikace pro koncový bod kolektoru OTLP, protokol exportu, atributy prostředků a dávkové zpracování. Pro úplný seznam proměnných prostředí OTel, viz App telemetry environment variables.
Limity a omezení
Telemetrie aplikací používá konektor Nubus Ingest k zápisu dat do tabulek katalogu Unity. Všechna omezení konektoru Ingestu Zerobus platí pro telemetrii aplikací, včetně omezení velikosti záznamů, propustnosti, záruk doručení a požadavků na cílovou tabulku.
Kromě limitů Zerobus telemetrie aplikace vynucuje maximální velikost 1 MB pro každý řádek protokolu.