Azure Monitor OpenTelemetry Exporter biblioteca cliente para JavaScript - versão 1.0.0-beta.40

Versão npm

Como começar

Este pacote de exportação pressupõe que seu aplicativo já esteja instrumentado com o SDK do OpenTelemetry. Quando estiver pronto para exportar dados do OpenTelemetry, você poderá adicionar esse exportador ao seu aplicativo.

Instalar o pacote

npm install @azure/monitor-opentelemetry-exporter

Ambientes com suporte no momento

Consulte nossa política de suporte para obter mais detalhes.

Aviso: Este SDK só funciona para ambientes Node.js. Use o SDK do JavaScript do Application Insights para ambientes de navegador.

Pré-requisitos

Rastreamento distribuído

Adicionar o exportador ao seu provedor de rastreamento OpenTelemetry existente (NodeTracerProvider / BasicTracerProvider)

import { AzureMonitorTraceExporter } from "@azure/monitor-opentelemetry-exporter";
import { NodeTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-node";
import { resourceFromAttributes } from "@opentelemetry/resources";
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";

// Create an exporter instance
const exporter = new AzureMonitorTraceExporter({
  connectionString: "<connection string>",
});

// Create and configure the Node Tracer provider
const tracerProvider = new NodeTracerProvider({
  resource: resourceFromAttributes({
    [ATTR_SERVICE_NAME]: "basic-service",
  }),
  spanProcessors: [
    new BatchSpanProcessor(exporter, {
      exportTimeoutMillis: 15000,
      maxQueueSize: 1000,
    }),
  ],
});

// Register Tracer Provider as global
tracerProvider.register();

Métricas

Adicionar o exportador ao seu provedor de medidor OpenTelemetry existente (MeterProvider)

import { AzureMonitorMetricExporter } from "@azure/monitor-opentelemetry-exporter";
import { PeriodicExportingMetricReader, MeterProvider } from "@opentelemetry/sdk-metrics";
import { metrics } from "@opentelemetry/api";

// Add the exporter into the MetricReader and register it with the MeterProvider
const exporter = new AzureMonitorMetricExporter({
  connectionString: "<connection string>",
});

const metricReaderOptions = {
  exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
const meterProvider = new MeterProvider({
  readers: [metricReader],
});

// Register Meter Provider as global
metrics.setGlobalMeterProvider(meterProvider);

Registros

Adicionar o Exportador de Log ao seu provedor de agente de log OpenTelemetry existente (LoggerProvider)

import { AzureMonitorLogExporter } from "@azure/monitor-opentelemetry-exporter";
import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
import { logs } from "@opentelemetry/api-logs";

// Add the Log exporter into the logRecordProcessor and register it with the LoggerProvider
const exporter = new AzureMonitorLogExporter({
  connectionString: "<connection string>",
});

const logRecordProcessor = new BatchLogRecordProcessor(exporter);
const loggerProvider = new LoggerProvider();
loggerProvider.addLogRecordProcessor(logRecordProcessor);

// Register logger Provider as global
logs.setGlobalLoggerProvider(loggerProvider);

Amostragem

Você pode habilitar a amostragem para limitar a quantidade de registros de telemetria recebidos. Para habilitar a amostragem correta no Application Insights, use o ApplicationInsightsSampler conforme mostrado abaixo.

import { ApplicationInsightsSampler } from "@azure/monitor-opentelemetry-exporter";
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { resourceFromAttributes } from "@opentelemetry/resources";
import { ATTR_SERVICE_NAME } from "@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: resourceFromAttributes({
    [ATTR_SERVICE_NAME]: "basic-service",
  }),
});

provider.register();

Exemplos

Para obter exemplos completos de alguns cenários de campeões, consulte a samples/ pasta.

Conceitos principais

Para obter mais informações sobre o projeto OpenTelemetry, examine as Especificações do OpenTelemetry.

Limite de Tamanho de Dimensões Personalizadas

Por padrão, os valores das dimensões personalizadas são truncados para 64KB. Isso protege contra cargas úteis inesperadamente grandes.

Resolução de problemas

Habilitar o log de depuração

Você pode habilitar o log de depuração alterando o nível de log do seu provedor.

import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";

const provider = new NodeTracerProvider();
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.ALL);
provider.register();

Registro

Habilitar o log do Azure também pode ajudar a descobrir informações úteis sobre falhas. Para ver um log de solicitações e respostas HTTP, defina a variável de ambiente AZURE_LOG_LEVEL como info. Como alternativa, o registro em log pode ser habilitado em runtime chamando setLogLevel no @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Para obter instruções mais detalhadas sobre como habilitar logs, você pode examinar os documentos do pacote @azure/agente.

Próximas etapas

Esse exportador foi feito para ser usado com o OpenTelemetry JS.

Registro de plug-ins

Para ver se um plug-in já foi criado para uma biblioteca que você está usando, consulte o OpenTelemetry Registry.

Se você não puder colocar sua biblioteca no registro, sinta-se à vontade para sugerir uma nova solicitação de plug-in em opentelemetry-js-contrib.

Contribuindo

Se você quiser contribuir com essa biblioteca, leia o guia de contribuição para saber mais sobre como criar e testar o código.