Biblioteca cliente de OpenTelemetry Exporter de Azure Monitor para JavaScript: versión 1.0.0-beta.27
Empezar
Este paquete de exportador supone que la aplicación ya está instrumentada con el SDK de OpenTelemetry. Una vez que esté listo para exportar datos de OpenTelemetry, puede agregar este exportador a la aplicación.
Instalación del paquete
npm install @azure/monitor-opentelemetry-exporter
Entornos admitidos actualmente
Consulte nuestra de directiva de soporte técnico de
Advertencia: Este SDK solo funciona para entornos de Node.js. Use la del SDK de JavaScript de
Application Insights para entornos de explorador.
Prerrequisitos
Seguimiento distribuido
Agregue el exportador al proveedor de seguimiento de OpenTelemetry existente (NodeTracerProvider
/ BasicTracerProvider
)
const { AzureMonitorTraceExporter } = require("@azure/monitor-opentelemetry-exporter");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { Resource } = require("@opentelemetry/resources");
const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions");
const tracerProvider = new NodeTracerProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
}),
});
// Register Tracer Provider as global
tracerProvider.register();
// Create an exporter instance
const exporter = new AzureMonitorTraceExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>"
});
// Add the exporter to the Provider
tracerProvider.addSpanProcessor(
new BatchSpanProcessor(exporter, {
bufferTimeout: 15000,
bufferSize: 1000
})
);
Métricas
Agregue el exportador al proveedor de medidores openTelemetry existente (MeterProvider
)
const { metrics } = require("@opentelemetry/api");
const { MeterProvider, PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics");
const { AzureMonitorMetricExporter } = require("@azure/monitor-opentelemetry-exporter");
// Add the exporter into the MetricReader and register it with the MeterProvider
const exporter = new AzureMonitorMetricExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const metricReaderOptions = {
exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
const meterProvider = new MeterProvider();
meterProvider.addMetricReader(metricReader);
// Register Meter Provider as global
metrics.setGlobalMeterProvider(meterProvider);
Trozas
Agregue el exportador de registros al proveedor de registrador openTelemetry existente (LoggerProvider
)
const { logs } = require("@opentelemetry/api-logs");
const { LoggerProvider, BatchLogRecordProcessor } = require("@opentelemetry/sdk-logs");
const { AzureMonitorLogExporter } = require("@azure/monitor-opentelemetry-exporter");
// Add the Log exporter into the logRecordProcessor and register it with the LoggerProvider
const exporter = new AzureMonitorLogExporter({
connectionString:
process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const logRecordProcessor = new BatchLogRecordProcessor(exporter);
const loggerProvider = new LoggerProvider();
loggerProvider.addLogRecordProcessor(logRecordProcessor);
// Register logger Provider as global
logs.setGlobalLoggerProvider(loggerProvider);
Muestreo
Puede habilitar el muestreo para limitar la cantidad de registros de telemetría que recibe. Para habilitar el muestreo correcto en Application Insights, use el ApplicationInsightsSampler
como se muestra a continuación.
const { ApplicationInsightsSampler } = require("@azure/monitor-opentelemetry-exporter");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { Resource } = require("@opentelemetry/resources");
const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions");
// Sampler expects a sample rate of between 0 and 1 inclusive
// A rate of 0.75 means approximately 75 % of your traces will be sent
const aiSampler = new ApplicationInsightsSampler(0.75);
const provider = new NodeTracerProvider({
sampler: aiSampler,
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
}),
});
provider.register();
Ejemplos
Para obtener ejemplos completos de algunos escenarios de campeón, consulte la carpeta samples/
.
Conceptos clave
Para obtener más información sobre el proyecto OpenTelemetry, revise la Especificaciones de OpenTelemetry.
Solución de problemas
Habilitación del registro de depuración
Puede habilitar el registro de depuración cambiando el nivel de registro del proveedor.
const { DiagConsoleLogger, DiagLogLevel, diag } = require("@opentelemetry/api");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const provider = new NodeTracerProvider();
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
provider.register();
Pasos siguientes
Este exportador se realiza para su uso con el OpenTelemetry JS.
Registro de complementos
Para ver si ya se ha realizado un complemento para una biblioteca que está usando, consulte la OpenTelemetry Registry.
Si no puede usar la biblioteca en el registro, no dude en sugerir una nueva solicitud de complemento en opentelemetry-js-contrib
.
Contribuyendo
Si desea contribuir a esta biblioteca, lea la guía de contribución de para obtener más información sobre cómo compilar y probar el código.
Azure SDK for JavaScript