Share via


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

versión de npm

Introducción

Este paquete 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.

Instalar el paquete

npm install @azure/monitor-opentelemetry-exporter

Entornos admitidos actualmente

Para más información, consulte la directiva de compatibilidad.

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

Requisitos previos

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

Registros

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 como ApplicationInsightsSampler 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 campeones, consulte la samples/ carpeta .

Conceptos clave

Para obtener más información sobre el proyecto OpenTelemetry, revise las 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 OpenTelemetry JS.

Registro de complementos

Para ver si ya se ha realizado un complemento para una biblioteca que está usando, consulte el Registro de OpenTelemetry.

Si no puede usar la biblioteca en el registro, no dude en sugerir una nueva solicitud de complemento en opentelemetry-js-contrib.

Contribuciones

Si desea contribuir a esta biblioteca, lea la guía de contribución para obtener más información sobre cómo compilar y probar el código.

Impresiones