Delen via


Telemetrie configureren voor Databricks-apps

Belangrijk

App-telemetrie bevindt zich in de bètaversie.

Databricks Apps-telemetrie verzamelt traceringen, logboeken en metrische gegevens en bewaart deze naar Unity Catalog-tabellen met behulp van het OTel-protocol (OpenTelemetry). Nadat u app-telemetrie hebt ingeschakeld, legt Databricks automatisch systeemlogboeken en gebruiksevenementen vast, zoals gebruikersaanmelding en directe API-aanvragen. U kunt ook aangepaste instrumentatie toevoegen met behulp van de OpenTelemetry SDK voor uw framework.

vereisten voor

  • Uw werkruimte moet zich in een ondersteunde regio bevinden: australiaeast, brazilsouth, canadacentral, centralindiacentralus, eastus, eastus2germanywestcentralnorthcentralusnortheuropesouthcentralussoutheastasiaswedencentralswitzerlandnorthuksouthwesteuropewestus, , . westus2westus3
  • Als u nieuwe telemetriedoeltabellen wilt maken in Unity Catalog, hebt u machtigingen nodig CAN MANAGE voor de doelcatalogus en het schema CREATE TABLE .
  • Als u wilt schrijven naar bestaande telemetriedoelen tabellen in Unity Catalog, hebt u CAN MANAGE machtigingen nodig voor de doelcatalogus en het schema, of alle accountgebruikers moeten USE CATALOG, USE SCHEMA, SELECT en MODIFY hebben op de doeltabellen.
  • Doeltabellen moeten beheerde Delta-tabellen zijn binnen dezelfde regio als uw werkruimte.
  • Databricks raadt aan voorspellende optimalisatie in te schakelen voor de telemetriedoeltabellen voor betere queryprestaties.

App-telemetrie inschakelen

Opmerking

Als u een app hebt gemaakt vóór de bètaversie van de app-telemetrie, moet u deze stoppen en opnieuw starten voordat u verdergaat met de volgende configuratiestappen.

Als u telemetrie voor een app wilt inschakelen, configureert u een catalogus en schema voor de telemetrietabellen in de app-instellingen.

  1. Open de pagina met app-details in uw Azure Databricks-werkruimte.
  2. Ga op het tabblad Overzicht naar de sectie App-telemetrieconfiguratie en klik op Toevoegen.
  3. Voer in of blader om een catalogus en een schema te kiezen. Azure Databricks schrijft telemetriegegevens naar drie tabellen op de geselecteerde locatie: otel_metrics, otel_spansen otel_logs.
  4. (Optioneel) Geef een tabelvoorvoegsel op, zodat tabellen een naam <prefix>_otel_metricshebben, <prefix>_otel_spansen <prefix>_otel_logs. Azure Databricks voegt toe aan bestaande tabellen of maakt ze als ze niet bestaan.
  5. Klik op Opslaan.
  6. Implementeer de app opnieuw zodat telemetrie naar Unity Catalog stroomt.

Telemetriegegevens verifiëren

De otel_logs tabel wordt automatisch ingevuld na het opnieuw implementeren. De otel_spans tabellen en otel_metrics tabellen worden alleen ingevuld nadat u aangepaste instrumentatie aan uw app hebt toegevoegd.

Nadat u de app opnieuw hebt geïmplementeerd:

  1. Ga naar de URL van de app om activiteit te genereren.

  2. Wacht enkele seconden totdat de eerste batch met gegevens wordt weergegeven.

  3. Voer de volgende query uit in Databricks SQL om te bevestigen dat gegevens stromen:

    SELECT * FROM <catalog>.<schema>.otel_logs
    LIMIT 10;
    

Telemetriegegevens opvragen

Nuttige kolommen voor het filteren en correleren van telemetriegegevens zijn onder andere time, service_name, trace_id, span_iden attributes. De attributes kolom is een kaart die gebeurtenisspecifieke metagegevens bevat, zoals event.name.

Als u het volledige schema van een telemetrietabel wilt weergeven, voert u het volgende uit:

DESCRIBE TABLE <catalog>.<schema>.otel_logs;

In het volgende voorbeeld wordt vanuit het afgelopen uur een query uitgevoerd op de otel_logs tabel voor systeem- of aangepaste OpenTelemetry ERROR-logboeken:

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;

Aangepaste instrumentatie toevoegen

Voeg automatische instrumentatie van OpenTelemetry toe om aangepaste traceringen, metrische gegevens en logboeken te genereren. Werk uw app.yaml en afhankelijkheidsbestanden bij zoals weergegeven voor uw framework.

Streamlit

app.yamlbijwerken:

command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
  - name: OTEL_TRACES_SAMPLER
    value: 'always_on'

requirements.txtbijwerken:

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

app.yamlbijwerken:

command: ['opentelemetry-instrument', 'python', 'app.py']
env:
  - name: OTEL_TRACES_SAMPLER
    value: 'always_on'

requirements.txtbijwerken:

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

Flacon

app.yamlbijwerken:

command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
  - name: OTEL_TRACES_SAMPLER
    value: 'always_on'

requirements.txtbijwerken:

opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask

FastAPI

app.yamlbijwerken:

command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
  - name: OTEL_TRACES_SAMPLER
    value: 'always_on'

requirements.txtbijwerken:

fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi

Node.js

Maak een otel.js-bestand:

'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);

package.jsonbijwerken:

{
  "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"
  }
}

Omgevingsvariabelen

Wanneer u app-telemetrie inschakelt, configureert Databricks automatisch omgevingsvariabelen in uw app-runtime voor het OTLP-collectoreindpunt, exportprotocol, resourcekenmerken en batchverwerking. Zie Omgevingsvariabelen voor app-telemetrie voor de volledige lijst met OTel-omgevingsvariabelen.

Limieten en beperkingen

App-telemetrie maakt gebruik van de Zerobus Ingest-connector om gegevens naar Unity Catalog-tabellen te schrijven. Alle beperkingen van de Zerobus Ingest-connector zijn van toepassing op app-telemetrie, waaronder limieten voor recordgrootte, doorvoer, leveringsgaranties en vereisten voor doeltabellen.

Naast Zerobus-limieten dwingt app-telemetrie een maximale grootte van 1 MB per logboekregel af.