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 ve fázi Public Preview.
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í
Pokud chcete zapnout telemetrii pro aplikaci, nakonfigurujte v nastavení aplikace katalog a schéma pro tabulky telemetrie.
uživatelské rozhraní
- Otevřete stránku podrobností aplikace v pracovním prostoru Azure Databricks.
- Na kartě Nastavení 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í k existujícím tabulkám nebo je vytvoří, pokud neexistují. - Klikněte na Uložit.
- Znovu nasaďte aplikaci, aby telemetrie začala proudit do katalogu Unity.
CLI
Nakonfigurujte telemetrii pomocí
databricks apps updatepříkazu a zadejte úplný katalog, schéma a názvy tabulek:databricks apps update <app-name> --json '{ "telemetry_export_destinations": [ { "unity_catalog": { "logs_table": "<catalog>.<schema>.<your-prefix>-otel_logs", "metrics_table": "<catalog>.<schema>.otel_metrics", "traces_table": "<catalog>.<schema>.otel_spans" } } ] }'Znovu nasaďte aplikaci, aby telemetrie začala proudit do katalogu Unity:
databricks apps deploy <app-name>
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 tabulce otel_logs, například události využití pro přihlášení uživatelů a přímé žádosti 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.
Cenotvorba
Ingestace telemetrie je účtována jako využití Lakeflow Connect, protože telemetrie aplikace zapisuje do tabulek Unity Catalog přes konektor Zerobus Ingest. To je oddělené od výpočetních nákladů na samotný provoz aplikace.
Poplatky jsou účtovány proti "Automatizovanému serverless" SKU. Ceny najdete na stránce s cenami Lakeflow Connect.
Chcete-li sledovat náklady na příjem telemetrie, vyhledejte tabulku systému fakturovatelné spotřeby. Pro filtry, které izolují využití Zerobus Ingest, viz Monitorování vaší spotřeby. Pro sledování výpočetních nákladů samotné aplikace viz Monitor app costs.
Limity a omezení
Telemetrie aplikací používá konektor Nubus Ingest k zápisu dat do tabulek katalogu Unity. Všechna omezení konektoru Zerobus Ingest se vztahují na telemetrii aplikací, včetně omezení velikosti záznamu, propustnosti, záruk doručení a požadavků na cílové tabulky. Viz kvóty konektorů Zerobus Ingest.
Kromě limitů Zerobus telemetrie aplikace vynucuje maximální velikost 1 MB pro každý řádek protokolu.