Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
La telemetría de la aplicación está en beta.
La telemetría de Databricks Apps recopila seguimientos, registros y métricas y los conserva en tablas de Catálogo de Unity mediante el protocolo OpenTelemetry (OTel). Después de habilitar la telemetría de la aplicación, Databricks captura automáticamente los registros del sistema y los eventos de uso, como el inicio de sesión de usuario y las solicitudes de API directas. También puede agregar instrumentación personalizada mediante el SDK de OpenTelemetry para el marco de trabajo.
Requisitos
- El área de trabajo debe estar en una región admitida:
australiaeast,brazilsouth,canadacentral,centralindia,centralus,eastus,eastus2,germanywestcentral,northcentralus,northeurope,southcentralus,southeastasia,swedencentral,switzerlandnorth,uksouth,westeurope,westus,westus2,westus3.
- Para crear nuevas tablas de telemetría objetivo en el catálogo de Unity, necesita permisos
CAN MANAGEen el catálogo y el esquema de destino, y permisosCREATE TABLEen el esquema. - Para escribir en las tablas de destino de telemetría existentes en el catálogo de Unity, necesita
CAN MANAGEpermisos en el catálogo y el esquema de destino, o todos los usuarios de la cuenta deben tenerUSE CATALOG,USE SCHEMA,SELECT, yMODIFYpermisos en las tablas de destino. - Las tablas de destino deben ser tablas Delta administradas en la misma región que el área de trabajo.
- Databricks recomienda habilitar la optimización predictiva en las tablas de destino de telemetría para mejorar el rendimiento de las consultas.
Habilitación de la telemetría de la aplicación
Nota:
Si creó una aplicación antes de la versión beta de telemetría de la aplicación, debe detenerla y reiniciarla antes de continuar con los pasos de configuración siguientes.
Para activar la telemetría de una aplicación, configure un catálogo y un esquema para las tablas de telemetría en la configuración de la aplicación.
- Abra la página de detalles de la aplicación en el área de trabajo de Azure Databricks.
- En la pestaña Información general, busque la sección Configuración de telemetría de la aplicación y haga clic en Agregar.
- Escriba o navegue para seleccionar un catálogo y un esquema. Azure Databricks escribe datos de telemetría en tres tablas de la ubicación seleccionada:
otel_metrics,otel_spansyotel_logs. - (Opcional) Especifique un prefijo de tabla para que las tablas se denominan
<prefix>_otel_metrics,<prefix>_otel_spansy<prefix>_otel_logs. Azure Databricks anexa a las tablas existentes o las crea si no existen. - Haz clic en Guardar.
- Vuelva a implementar la aplicación para que la telemetría empiece a fluir al catálogo de Unity.
Comprobación de los datos de telemetría
La otel_logs tabla se rellena automáticamente después de volver a implementarla. Las otel_spans tablas y otel_metrics solo se rellenan después de agregar instrumentación personalizada a la aplicación.
Después de volver a implementar la aplicación:
Visite la dirección URL de la aplicación para generar actividad.
Espere unos segundos para que aparezca el lote inicial de datos.
Ejecute la siguiente consulta en Databricks SQL para confirmar que los datos fluyen:
SELECT * FROM <catalog>.<schema>.otel_logs LIMIT 10;
Consulta de datos de telemetría
Las columnas útiles para filtrar y correlacionar los datos de telemetría incluyen time, service_name, trace_id, span_idy attributes. La attributes columna es un mapa que contiene metadatos específicos del evento, como event.name.
Para ver el esquema completo de cualquier tabla de telemetría, ejecute:
DESCRIBE TABLE <catalog>.<schema>.otel_logs;
En el ejemplo siguiente se consulta la tabla otel_logs en búsqueda de los registros de error de OpenTelemetry del sistema o personalizados de la última hora.
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;
Adición de instrumentación personalizada
Agregue la instrumentación automática de OpenTelemetry para generar seguimientos, métricas y registros personalizados. Actualice su app.yaml y los archivos de dependencia según se muestra para su marco de trabajo.
Streamlit
Actualiza app.yaml:
command: ['opentelemetry-instrument', 'streamlit', 'run', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Actualiza 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
Actualiza app.yaml:
command: ['opentelemetry-instrument', 'python', 'app.py']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Actualiza 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
Actualiza app.yaml:
command: ['opentelemetry-instrument', 'flask', '--app', 'app.py', 'run', '--no-reload']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Actualiza requirements.txt:
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-flask
FastAPI
Actualiza app.yaml:
command: ['opentelemetry-instrument', 'uvicorn', 'app:app', '--host', '0.0.0.0', '--port', '8000']
env:
- name: OTEL_TRACES_SAMPLER
value: 'always_on'
Actualiza requirements.txt:
fastapi
uvicorn
opentelemetry-distro
opentelemetry-exporter-otlp-proto-grpc
opentelemetry-instrumentation-fastapi
Node.js.
Cree un archivo 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);
Actualiza 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"
}
}
Variables de entorno
Al habilitar la telemetría de la aplicación, Databricks configura automáticamente las variables de entorno en el entorno de ejecución de la aplicación para el punto de conexión del recopilador de OTLP, el protocolo de exportación, los atributos de recursos y el procesamiento por lotes. Para obtener la lista completa de variables de entorno de OTel, consulte Variables de entorno de telemetría de aplicaciones.
Límites y limitaciones
La telemetría de la aplicación usa el conector de Ingesta de Zerobus para escribir datos en tablas del catálogo de Unity. Todas las limitaciones del conector de ingesta de Zerobus se aplican a la telemetría de la aplicación, incluidos los límites del tamaño del registro, el rendimiento, las garantías de entrega y los requisitos de la tabla de destino.
Además de los límites de Zerobus, la telemetría de la aplicación aplica un tamaño máximo de línea de registro de 1 MB por línea de registro.