Azure Monitor OpenTelemetry Exporter bibliothèque client pour JavaScript - version 1.0.0-beta.46

Version npm

Mise en route

Ce package d’exportation suppose que votre application est déjà instrumentée avec le SDK OpenTelemetry. Une fois que vous êtes prêt à exporter les données OpenTelemetry, vous pouvez ajouter cet exportateur à votre application.

Installer le package

npm install @azure/monitor-opentelemetry-exporter

Environnements actuellement pris en charge

Pour plus d’informations, consultez notre de stratégie de support .

Avertissement: Ce SDK ne fonctionne que pour les environnements Node.js. Utilisez le SDK JavaScript Application Insights pour les environnements de navigateur.

Conditions préalables

Suivi distribué

Ajouter l’exportateur à votre fournisseur de traceur OpenTelemetry existant (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étriques

Ajouter l’exportateur à votre fournisseur de compteur OpenTelemetry existant (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);

Journaux

Ajouter l’exportateur de journaux à votre fournisseur d’enregistreur OpenTelemetry existant (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);

Résultats de la disponibilité

Après avoir enregistré le fournisseur de logger, émettez un enregistrement de journal OpenTelemetry avec les attributs de disponibilité ci-dessous. L’exportateur convertit l’enregistrement en télémétrie de disponibilité d’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",
  },
});

Les attributs suivants sont requis :

Attribute Description
microsoft.availability.id Identifiant pour ce test.
microsoft.availability.name Nom du test de disponibilité.
microsoft.availability.duration Durée du test, par 00:00:00.250exemple.
microsoft.availability.success Si le test avait réussi.

microsoft.availability.runLocation et microsoft.availability.message sont facultatifs. Si l’attribut message est omis, le corps du journal est utilisé comme message de disponibilité. L’horodatage du résultat de disponibilité provient de l’enregistrement du journal OpenTelemetry.

Les enregistrements de disponibilité utilisent le même contexte de corrélation que les autres journaux OpenTelemetry. Lorsqu’un enregistrement est émis avec un span actif (ou un contexte OpenTelemetry explicite), l’ID de trace span et l’ID span remplissent l’ID d’opération Application Insights et l’ID parent. Ces valeurs sont autoritaires et ne peuvent pas être écrasées par des attributs logarithüaristiques. L’ID de disponibilité pour l’exécution du test reste distinct de l’ID d’opération.

Si un attribut requis manque ou vide, l’exportateur envoie l’enregistrement comme télémétrie de message classique à la place. Les attributs d’exception et d’événement personnalisés ont la priorité sur les attributs de disponibilité.

échantillonnage

Vous pouvez activer l’échantillonnage pour limiter la quantité d’enregistrements de télémétrie que vous recevez. Afin d’activer un échantillonnage correct dans Application Insights, utilisez l’option ApplicationInsightsSampler comme indiqué ci-dessous.

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

Exemples

Pour obtenir des exemples complets de quelques scénarios de champion, consultez le samples/ dossier.

Concepts clés

Pour plus d’informations sur le projet OpenTelemetry, consultez les spécifications OpenTelemetry.

Dimensions personnalisées Limite de taille

Par défaut, les valeurs de dimension personnalisées sont tronquées à 64 Ko. Cela protège contre des charges utiles inattendument importantes.

Résolution des problèmes

Activer la journalisation du débogage

Vous pouvez activer la journalisation de débogage en modifiant le niveau de journalisation de votre fournisseur.

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

Exploitation forestière

L’activation de la journalisation Azure peut également permettre de découvrir des informations utiles sur les échecs. Pour afficher un journal des requêtes et réponses HTTP, définissez la variable d’environnement AZURE_LOG_LEVEL sur info. Vous pouvez également activer la journalisation au moment de l’exécution en appelant setLogLevel dans la @azure/logger:

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

setLogLevel("info");

Pour obtenir des instructions plus détaillées sur l’activation des journaux, vous pouvez consulter la documentationdu package @azure/enregistreur d’événements.

Étapes suivantes

Cet exportateur est conçu pour être utilisé avec OpenTelemetry JS.

Registre des plugins

Pour voir si un plugin a déjà été créé pour une bibliothèque que vous utilisez, veuillez consulter le registre OpenTelemetry.

Si vous ne pouvez pas inscrire votre bibliothèque dans le registre, n’hésitez pas à suggérer une nouvelle demande de plugin à l’adresse opentelemetry-js-contrib.

Contribuer

Si vous souhaitez contribuer à cette bibliothèque, lisez le guide de contribution pour en savoir plus sur la génération et le test du code.