Azure Monitor OpenTelemetry Exporter client library for JavaScript - version 1.0.0-beta.46

NPM-versie

Aan de slag

Dit exportpakket gaat ervan uit dat uw toepassing al is geïnstrumenteerd met de OpenTelemetry SDK. Zodra u klaar bent om OpenTelemetry-gegevens te exporteren, kunt u deze exporteur toevoegen aan uw toepassing.

Installeer het pakket

npm install @azure/monitor-opentelemetry-exporter

Momenteel ondersteunde omgevingen

Zie ons ondersteuningsbeleid voor meer informatie.

Waarschuwing: Deze SDK werkt alleen voor Node.js omgevingen. Gebruik de Application Insights JavaScript SDK voor browseromgevingen.

Vereiste voorwaarden

Gedistribueerde tracering

Voeg de exporteur toe aan uw bestaande OpenTelemetry Tracer-provider (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();

Statistieken

De exporteur toevoegen aan uw bestaande OpenTelemetry Meter Provider (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);

Logboeken

Voeg de Log Exporter toe aan uw bestaande OpenTelemetry Logger Provider (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);

Resultaten van beschikbaarheid

Na registratie van de loggerprovider genereer je een OpenTelemetrie-logrecord met de beschikbaarheidsattributen hieronder. De exporteur zet het record om naar Application Insights-beschikbaarheidstelemetrie.

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",
  },
});

De volgende kenmerken zijn vereist:

Attribute Beschrijving
microsoft.availability.id Identificatie voor deze testrun.
microsoft.availability.name Naam van de beschikbaarheidstest.
microsoft.availability.duration Testduur, bijvoorbeeld 00:00:00.250.
microsoft.availability.success Of de test is geslaagd.

microsoft.availability.runLocation en microsoft.availability.message zijn optioneel. Als het berichtattribuut wordt weggelaten, wordt het logboek als beschikbaarheidsbericht gebruikt. De tijdstempel van het beschikbaarheidsresultaat komt uit het OpenTelemetrie-logrecord.

Beschikbaarheidsrecords gebruiken dezelfde correlatiecontext als andere OpenTelemetrie-logboeken. Wanneer een record wordt verzonden met een actieve span (of een expliciete OpenTelemetrie-context), vullen de span trace ID en span ID de Application Insights operatie-ID en de ouder-ID in. Deze waarden zijn gezaghebbend en kunnen niet worden overschreven door log-attributen. De beschikbaarheid-testrun ID blijft gescheiden van de operatie-ID.

Als een vereist attribuut ontbreekt of leeg is, stuurt de exporteur het record als reguliere berichttelemetrie. Uitzonderings- en aangepaste gebeurtenisattributen krijgen voorrang boven beschikbaarheidsattributen.

Steekproeven

U kunt steekproeven inschakelen om het aantal telemetrierecords dat u ontvangt te beperken. Als u de juiste steekproef in Application Insights wilt inschakelen, gebruikt u de ApplicationInsightsSampler volgende stap.

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

Voorbeelden

Zie de samples/ map voor volledige voorbeelden van een paar kampioensscenario's.

Belangrijke concepten

Raadpleeg de specificaties van OpenTelemetry voor meer informatie over het OpenTelemetry-project.

Maatmaatgroottelimiet

Standaard worden aangepaste afmetingen afgekapt tot 64KB. Dit beschermt tegen onverwacht grote ladingen.

Probleemoplossingsproces

Logboekregistratie voor foutopsporing inschakelen

U kunt foutopsporingsregistratie inschakelen door het logboekregistratieniveau van uw provider te wijzigen.

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

Loggen

Het inschakelen van Azure-logboekregistratie kan ook helpen bij het achterhalen van nuttige informatie over fouten. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de omgevingsvariabele AZURE_LOG_LEVEL in op info. U kunt logboekregistratie ook tijdens runtime inschakelen door setLogLevel aan te roepen in de @azure/logger:

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

setLogLevel("info");

Voor gedetailleerdere instructies over het inschakelen van logboeken, kunt u de documentatie over het @azure/logger-pakket bekijken.

Volgende stappen

Deze exporter is gemaakt om te worden gebruikt met de OpenTelemetry JS.

Plugin Register

Om te zien of er al een plug-in is gemaakt voor een bibliotheek die u gebruikt, raadpleegt u het OpenTelemetry-register.

Als u uw bibliotheek niet in het register kunt opnemen, kunt u een nieuw plug-inverzoek voorstellen op opentelemetry-js-contrib.

Bijdragen

Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de gids voor bijdragen voor meer informatie over het bouwen en testen van de code.