Compartir a través de


Biblioteca cliente de OpenTelemetry Exporter de Azure Monitor para JavaScript: versión 1.0.0-beta.27

versión de npm

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 para obtener más información.

Advertencia: Este SDK solo funciona para entornos de Node.js. Use la del SDK de JavaScript de Application Insights para entornos de explorador.

Prerrequisitos

  • Un de suscripción de Azure de
  • Un área de trabajo de Application Insights

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.

impresiones