Monitoraggio di Azure OpenTelemetry Exporter client library for JavaScript - versione 1.0.0-beta.46

Versione npm

Come iniziare

Questo pacchetto di esportazione presuppone che l'applicazione sia già instrumentata con OpenTelemetry SDK. Quando si è pronti per esportare i dati OpenTelemetry, è possibile aggiungere questo esportatore all'applicazione.

Installare il pacchetto

npm install @azure/monitor-opentelemetry-exporter

Ambienti attualmente supportati

Per altri dettagli, vedere i criteri di supporto .

Avvertimento: Questo SDK funziona solo per ambienti Node.js. Usare Application Insights JavaScript SDK per gli ambienti browser.

Prerequisiti

Tracciamento distribuito

Aggiungere l'esportatore al provider OpenTelemetry Tracer esistente (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();

Metriche

Aggiungere l'esportatore al provider di contatori OpenTelemetry esistente (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);

Registrazioni

Aggiungere Log Exporter al provider di logger OpenTelemetry esistente (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);

Risultati della disponibilità

Dopo aver registrato il fornitore di logger, emettere un registro di OpenTelemetry con gli attributi di disponibilità qui sotto. L'esportatore converte il record in telemetria di disponibilità di 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",
  },
});

Gli attributi seguenti sono obbligatori:

Attribute Description
microsoft.availability.id Identificatore per questa prova.
microsoft.availability.name Nome del test di disponibilità.
microsoft.availability.duration Durata del test, ad 00:00:00.250esempio.
microsoft.availability.success Se il test avesse avuto successo.

microsoft.availability.runLocation e microsoft.availability.message sono facoltativi. Se l'attributo del messaggio viene omesso, il corpo del log viene usato come messaggio di disponibilità. Il timestamp del risultato della disponibilità proviene dal registro di OpenTelemetry.

I record di disponibilità utilizzano lo stesso contesto di correlazione degli altri log OpenTelemetry. Quando un record viene emesso con un span attivo (o un contesto esplicito di OpenTelemetry), l'ID della traccia span e l'ID dello span popolano l'ID operazione Application Insights e l'ID genitore. Questi valori sono autorevoli e non possono essere sovrascritti dagli attributi logaritari. L'ID di disponibilità per l'esecuzione del test rimane separato dall'ID operazione.

Se manca o è vuoto un attributo richiesto, l'esportatore invia il record come telemetria del messaggio normale. Gli attributi eccezione ed eventi personalizzati hanno la precedenza sugli attributi di disponibilità.

Campionamento

È possibile abilitare il campionamento per limitare la quantità di record di telemetria ricevuti. Per abilitare il campionamento corretto in Application Insights, usare come ApplicationInsightsSampler illustrato di seguito.

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

Esempi

Per esempi completi di alcuni scenari di campioni, vedere la samples/ cartella.

Concetti chiave

Per altre informazioni sul progetto OpenTelemetry, vedere le specifiche OpenTelemetry.

Dimensioni personalizzate Limite di dimensione

Di default, i valori delle dimensioni personalizzate sono troncati a 64KB. Questo protegge contro carichi utili inaspettatamente grandi.

Risoluzione dei problemi

Abilitare la registrazione di debug

È possibile abilitare la registrazione di debug modificando il livello di registrazione del provider.

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

Registrazione

L'abilitazione della registrazione di Azure può anche aiutare a scoprire informazioni utili sugli errori. Per visualizzare un log di richieste e risposte HTTP, impostare la variabile di ambiente AZURE_LOG_LEVEL su info. In alternativa, la registrazione può essere abilitata in fase di esecuzione chiamando setLogLevel nel @azure/logger:

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

setLogLevel("info");

Per istruzioni più dettagliate su come abilitare i log, è possibile esaminare la documentazione del pacchetto @azure/logger.

Passaggi successivi

Questo esportatore è fatto per essere utilizzato con OpenTelemetry JS.

Registro dei plugin

Per vedere se è già stato creato un plug-in per una libreria che stai utilizzando, consulta il registro OpenTelemetry.

Se non riesci a inserire la tua libreria nel registro, sentiti libero di suggerire una nuova richiesta di plug-in all'indirizzo opentelemetry-js-contrib.

Contribuire

Per contribuire a questa libreria, leggere la guida per i contributi per altre informazioni su come compilare e testare il codice.