Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Данные телеметрии приложений доступны в общедоступной предварительной версии.
Данные телеметрии Databricks Apps собираются, сохраняются и отправляются в таблицы Unity Catalog с использованием протокола OpenTelemetry (OTel), включая трассировки, журналы и метрики. После включения телеметрии приложения Databricks автоматически записывает системные журналы и события использования, такие как вход пользователя и прямые запросы API. Вы также можете добавить настраиваемое инструментирование с помощью пакета SDK OpenTelemetry для платформы.
Требования
- Рабочая область должна находиться в поддерживаемом регионе:
australiaeast,brazilsouthcanadacentralcentralindiacentraluseastuseastus2germanywestcentralnorthcentralusnortheuropesouthcentralussoutheastasiaswedencentralswitzerlandnorthuksouthwesteuropewestuswestus2.westus3
- Чтобы создать новые целевые таблицы телеметрии в каталоге Unity, вам нужны
CAN MANAGEразрешения на целевой каталог и схему, а такжеCREATE TABLEна схему. - Чтобы записывать в существующие целевые таблицы телеметрии в каталоге Unity, вам потребуется либо
CAN MANAGEразрешение на целевой каталог и схему, либо все пользователи учетной записи должны иметьUSE CATALOG,USE SCHEMA,SELECTиMODIFYв целевых таблицах. - Целевые таблицы должны быть управляемыми таблицами Delta в том же регионе, что и рабочая область.
- Databricks рекомендует включить прогнозную оптимизацию целевых таблиц телеметрии для повышения производительности запросов.
Включение телеметрии приложения
Чтобы включить телеметрию для приложения, настройте каталог и схему для таблиц телеметрии в параметрах приложения.
Пользовательский интерфейс
- Откройте страницу сведений о приложении в рабочей области Azure Databricks.
- На вкладке "Параметры" найдите раздел конфигурации телеметрии приложения и нажмите кнопку "Добавить".
- Введите или перейдите к выбору каталога и схемы. Azure Databricks записывает данные телеметрии в три таблицы в выбранном расположении:
otel_metrics,otel_spansиotel_logs. - (Необязательно) Укажите префикс таблицы, чтобы таблицы были именованы
<prefix>_otel_metrics,<prefix>_otel_spansи<prefix>_otel_logs. Azure Databricks дополняет существующие таблицы или создаёт новые, если таковые отсутствуют. - Нажмите кнопку Сохранить.
- Повторно разверните приложение, чтобы данные телеметрии начали поступать в каталог Unity.
CLI
Настройте данные телеметрии с помощью
databricks apps updateкоманды, указав полный каталог, схему и имена таблиц: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" } } ] }'Повторно разверните приложение, чтобы данные телеметрии начали поступать в Unity Catalog:
databricks apps deploy <app-name>
Проверка данных телеметрии
Таблица otel_logs заполняется автоматически после повторного развертывания. Таблицы otel_spans и otel_metrics заполняются лишь после того как вы добавите пользовательское инструментирование в ваше приложение.
После повторного развертывания приложения:
Посетите URL-адрес приложения, чтобы создать действие.
Подождите несколько секунд, пока появится начальный пакет данных.
Выполните следующий запрос в Databricks SQL, чтобы подтвердить поток данных:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Запрос данных телеметрии
Полезные столбцы для фильтрации и сопоставления данных телеметрии: time, , service_name, trace_idspan_idи attributes. Столбец attributes — это карта, содержащая метаданные, относящиеся к событиям, event.nameнапример.
Чтобы просмотреть полную схему любой таблицы телеметрии, выполните следующую команду:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
В следующем примере запрашивается журналы на уровне ошибок за последний час, что полезно для отладки проблем с приложением:
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;
Запрос системных событий
Azure Databricks автоматически фиксирует системные события в таблице otel_logs, например события использования для входа пользователей и прямые запросы API. Запрашивайте эти события, фильтруя их по атрибуту event.name.
В следующем примере извлекаются 100 последних событий использования для приложения:
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;
Добавьте настраиваемое инструментирование
Добавьте автоматическое инструментирование OpenTelemetry для создания пользовательских трассировок, метрик и журналов. Обновите ваши файлы app.yaml и файлы зависимостей, как показано для вашего фреймворка.
Streamlit
Обновление app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление 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
Панель
Обновление app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление 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
Обновление app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Обновление app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Обновление requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js
Создайте файл 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);
Обновление 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"
}
}
Переменные среды
При включении телеметрии приложения Databricks автоматически настраивает переменные среды в среде выполнения приложения для конечной точки сборщика OTLP, протокола экспорта, атрибутов ресурсов и пакетной обработки. Полный список переменных среды OTel см. в разделе переменные среды телеметрии приложений.
Ценообразование
Приём телеметрии тарифицируется как использование Lakeflow Connect, поскольку данные телеметрии приложения записываются в таблицы Unity Catalog через коннектор Zerobus Ingest. Это отдельно от вычислительных расходов на запуск самого приложения.
Оплата начисляется с «Автоматизированного безсерверного» SKU. Для получения тарифов смотрите страницу с ценами Lakeflow Connect.
Чтобы отслеживать затраты на приём телеметрии, запросите системную таблицу тарифицируемого использования. Фильтры, изолирующие использование Zerobus Ingest, см. раздел «Мониторинг вашего использования». Чтобы отслеживать вычислительные затраты самого приложения, смотрите раздел «Мониторинг затрат приложения».
Пределы и ограничения
Телеметрия приложения использует соединитель Ingest Zerobus для записи данных в таблицы каталога Unity. Все ограничения разъёмов Zerobus Ingest применяются к телеметрии приложений, включая ограничения по размеру записи, пропускной способности, гарантиям доставки и требованиям к таблице целей. См. квоты на Zerobus Ingest.
Помимо ограничений Zerobus, телеметрия приложения ограничивает максимальный размер строки журнала до 1 МБ.