Partager via


Bibliothèque de client OpenTelemetry Exporter Azure Monitor pour JavaScript - version 1.0.0-beta.27

version npm

Commencer

Ce package d’exportation suppose que votre application est déjà instrumentée avec le Kit de développement logiciel (SDK) OpenTelemetry. Une fois que vous êtes prêt à exporter des 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 Kit de développement logiciel (SDK) fonctionne uniquement pour les environnements Node.js. Utilisez le kit de développement logiciel (SDK) JavaScript Application Insights pour les environnements de navigateur.

Conditions préalables

  • Un abonnement Azure
  • Un espace de travail Application Insights

Suivi distribué

Ajouter l’exportateur à votre fournisseur OpenTelemetry Tracer existant (NodeTracerProvider / BasicTracerProvider)

const { AzureMonitorTraceExporter } = require("@azure/monitor-opentelemetry-exporter");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { Resource } = require("@opentelemetry/resources"); 
const { SemanticResourceAttributes } = require("@opentelemetry/semantic-conventions"); 

const tracerProvider = new NodeTracerProvider({
  resource: new Resource({
    [SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
  }),
});
// Register Tracer Provider as global
tracerProvider.register();

// Create an exporter instance
const exporter = new AzureMonitorTraceExporter({
  connectionString:
    process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>"
});

// Add the exporter to the Provider
tracerProvider.addSpanProcessor(
  new BatchSpanProcessor(exporter, {
    bufferTimeout: 15000,
    bufferSize: 1000
  })
);

Métrique

Ajouter l’exportateur à votre fournisseur de compteur OpenTelemetry existant (MeterProvider)

const { metrics } = require("@opentelemetry/api");
const { MeterProvider, PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics");
const { AzureMonitorMetricExporter } = require("@azure/monitor-opentelemetry-exporter");

// Add the exporter into the MetricReader and register it with the MeterProvider
const exporter = new AzureMonitorMetricExporter({
  connectionString:
    process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const metricReaderOptions = {
  exporter: exporter,
};
const metricReader = new PeriodicExportingMetricReader(metricReaderOptions);
const meterProvider = new MeterProvider();
meterProvider.addMetricReader(metricReader);

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

Journaux

Ajouter l’exportateur de journaux à votre fournisseur OpenTelemetry Logger existant (LoggerProvider)

const { logs } = require("@opentelemetry/api-logs");
const { LoggerProvider, BatchLogRecordProcessor } = require("@opentelemetry/sdk-logs");
const { AzureMonitorLogExporter } = require("@azure/monitor-opentelemetry-exporter");

// Add the Log exporter into the logRecordProcessor and register it with the LoggerProvider
const exporter = new AzureMonitorLogExporter({
  connectionString:
    process.env["APPLICATIONINSIGHTS_CONNECTION_STRING"] || "<your connection string>",
});
const logRecordProcessor = new BatchLogRecordProcessor(exporter);
const loggerProvider = new LoggerProvider();
loggerProvider.addLogRecordProcessor(logRecordProcessor);

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

Échantillonnage

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

const { ApplicationInsightsSampler } = require("@azure/monitor-opentelemetry-exporter");
const { BatchSpanProcessor } = require("@opentelemetry/sdk-trace-base");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
const { Resource } = require("@opentelemetry/resources"); 
const { SemanticResourceAttributes } = require("@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: new Resource({
    [SemanticResourceAttributes.SERVICE_NAME]: "basic-service",
  }),
});
provider.register();

Exemples

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

Concepts clés

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

Dépannage

Activer la journalisation du débogage

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

const { DiagConsoleLogger, DiagLogLevel, diag } = require("@opentelemetry/api");
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");

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

Étapes suivantes

Cet exportateur est utilisé avec la OpenTelemetry JS.

Registre de plug-ins

Pour voir si un plug-in a déjà été créé pour une bibliothèque que vous utilisez, consultez la Registre OpenTelemetry.

Si vous ne pouvez pas votre bibliothèque dans le Registre, n’hésitez pas à suggérer une nouvelle demande de plug-in à opentelemetry-js-contrib.

Contribuant

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.

Impressions