Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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({
processors: [logRecordProcessor],
});
// Register logger Provider as global
logs.setGlobalLoggerProvider(loggerProvider);
Resultados de disponibilidade
Após registrar o provedor do logger, emita um registro de log do OpenTelemetry com os atributos de disponibilidade abaixo. O exportador converte o registro em telemetria de disponibilidade do Application Insights.
import { logs } from "@opentelemetry/api-logs";
const logger = logs.getLogger("availability");
logger.emit({
body: "Homepage availability test completed.",
attributes: {
"microsoft.availability.id": "availability-test-run-123",
"microsoft.availability.name": "Homepage",
"microsoft.availability.duration": "00:00:00.250",
"microsoft.availability.success": true,
"microsoft.availability.runLocation": "westus2",
"microsoft.availability.message": "HTTP 200",
},
});
Os atributos a seguir são obrigatórios:
| Attribute | Descrição |
|---|---|
microsoft.availability.id |
Identificador para este teste. |
microsoft.availability.name |
Nome do teste de disponibilidade. |
microsoft.availability.duration |
Duração do teste, por 00:00:00.250exemplo. |
microsoft.availability.success |
Se o teste foi bem-sucedido. |
microsoft.availability.runLocation e microsoft.availability.message são opcionais. Se o atributo da mensagem for omitido, o corpo do log é usado como a mensagem de disponibilidade. O carimbo de tempo do resultado de disponibilidade vem do registro de log do OpenTelemetry.
Registros de disponibilidade usam o mesmo contexto de correlação que outros logs do OpenTelemetry. Quando um registro é emitido com um espaço ativo (ou um contexto explícito do OpenTelemetry), o ID do traço de span e o ID do span preenchem o ID da operação e o ID pai do Application Insight. Esses valores são autoritativos e não podem ser anulados por atributos logarítmicos. O ID de disponibilidade para execução de teste permanece separado do ID de operação.
Se algum atributo necessário estiver ausente ou vazio, o exportador envia o registro como telemetria de mensagem regular. Atributos de exceção e eventos personalizados têm precedência sobre atributos de disponibilidade.
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.
Azure SDK for JavaScript