Azure Monitor OpenTelemetry Exporter client library untuk JavaScript - versi 1.0.0-beta.44

Versi npm

Memulai Langkah Pertama

Paket pengekspor ini mengasumsikan aplikasi Anda sudah diinstrumentasikan dengan OpenTelemetry SDK. Setelah Anda siap untuk mengekspor data OpenTelemetry, Anda dapat menambahkan eksportir ini ke aplikasi Anda.

Pasang paketnya

npm install @azure/monitor-opentelemetry-exporter

Lingkungan yang didukung saat ini

Lihat kebijakan dukungan kami untuk detail selengkapnya.

Peringatan: SDK ini hanya berfungsi untuk lingkungan Node.js. Gunakan Application Insights JavaScript SDK untuk lingkungan browser.

Prasyarat

Pelacakan Terdistribusi

Tambahkan eksportir ke Penyedia Pelacak OpenTelemetry yang ada (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();

Metode pengukuran

Tambahkan eksportir ke Penyedia Pengukur OpenTelemetry Anda yang ada (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);

Catatan

Tambahkan Pengekspor Log ke Penyedia Pencatat OpenTelemetry Anda yang ada (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);

Pengambilan sampel

Anda dapat mengaktifkan pengambilan sampel untuk membatasi jumlah rekaman telemetri yang Anda terima. Untuk mengaktifkan pengambilan sampel yang benar di Application Insights, gunakan seperti yang ApplicationInsightsSampler ditunjukkan di bawah ini.

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

Contoh

Untuk sampel lengkap dari beberapa skenario juara, lihat samples/ folder.

Konsep utama

Untuk informasi lebih lanjut tentang proyek OpenTelemetry, silakan tinjau Spesifikasi OpenTelemetry.

Batas Ukuran Dimensi Kustom

Secara default, nilai dimensi kustom dipotong menjadi 64KB. Ini melindungi dari muatan besar yang tidak terduga.

Penyelesaian Masalah

Mengaktifkan pengelogan debug

Anda dapat mengaktifkan pengelogan debug dengan mengubah tingkat pengelogan penyedia Anda.

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

Penebangan kayu

Mengaktifkan pengelogan Azure juga dapat membantu mengungkap informasi berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL ke info. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel di @azure/logger:

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

setLogLevel("info");

Untuk instruksi lebih rinci tentang cara mengaktifkan log, Anda dapat melihat dokumen paket @azure/logger.

Langkah selanjutnya

Eksportir ini dibuat untuk digunakan dengan OpenTelemetry JS.

Registri Plugin

Untuk melihat apakah plugin telah dibuat untuk perpustakaan yang Anda gunakan, silakan lihat OpenTelemetry Registry.

Jika Anda tidak dapat membuka perpustakaan Anda di registri, jangan ragu untuk menyarankan permintaan plugin baru di opentelemetry-js-contrib.

Berpartisipasi

Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.