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

npm バージョン

作業の開始

このエクスポーターパッケージは、アプリケーションが既にOpenTelemetry SDKで インストルメント化 されていることを前提としています。 OpenTelemetryデータをエクスポートする準備ができたら、このエクスポーターをアプリケーションに追加できます。

パッケージをインストールする

npm install @azure/monitor-opentelemetry-exporter

現在サポートされている環境

詳細については、サポート ポリシーの を参照してください。

警告: この SDK は、Node.js 環境でのみ機能します。 ブラウザー環境には、 Application Insights JavaScript SDK を使用します。

[前提条件]

分散トレース

エクスポーターを既存の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();

メトリック

エクスポーターを既存の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);

ログ

Log Exporter を既存の 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);

可用性の結果

ロガープロバイダーを登録した後、以下の可用性属性を含むOpenTelemetryログレコードを発行します。 エクスポーターはレコードを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",
  },
});

次の属性は必須です。

Attribute Description
microsoft.availability.id このテストランの識別子。
microsoft.availability.name 可用性テストの名前。
microsoft.availability.duration 例えば試験期間は 00:00:00.250です。
microsoft.availability.success テストが成功したかどうか。

microsoft.availability.runLocation および microsoft.availability.message は省略可能です。 メッセージ属性が省略されている場合、ログ本体が可用性メッセージとして使用されます。 利用可能性の結果タイムスタンプはOpenTelemetryのログレコードから得られます。

可用性レコードは他のOpenTelemetryログと同じ相関コンテキストを使用します。 アクティブなスパン(または明示的なOpenTelemetryコンテキスト)でレコードが発行されると、スパントレースIDとスパンIDがApplication Insightsの操作IDと親IDを埋め込みます。 これらの値は権威的であり、ログ属性によって上書きすることはできません。 可用性テストランIDはオペレーションIDとは別に残っています。

必要な属性が欠落または空の場合、エクスポーターは通常のメッセージテレメトリとしてレコードを送信します。 例外およびカスタムイベント属性が可用性属性よりも優先されます。

サンプリング

サンプリングを有効にして、受信するテレメトリ レコードの量を制限できます。 Application Insights で正しいサンプリングを有効にするには、次に示すように ApplicationInsightsSampler を使用します。

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

例示

いくつかのチャンピオン シナリオの完全なサンプルについては、 samples/ フォルダーを参照してください。

重要な概念

OpenTelemetry プロジェクトの詳細については、 OpenTelemetry の仕様を確認してください。

カスタム寸法のサイズ制限

デフォルトでは、カスタム寸法値は64KBに短縮されます。 これにより、予想外に大きなペイロードから守られます。

トラブルシューティング

デバッグログを有効化する

デバッグログを有効にするには、プロバイダーのログレベルを変更します。

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

ロギング(記録)

Azure ログ記録を有効にすると、エラーに関する有用な情報を明らかにするのにも役立つ場合があります。 HTTP 要求と応答のログを表示するには、AZURE_LOG_LEVEL 環境変数を infoに設定します。 または、setLogLevelで @azure/logger を呼び出すことによって、実行時にログを有効にすることもできます。

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

setLogLevel("info");

ログを有効にする方法の詳細な手順については、 @azure/logger パッケージのドキュメントを参照してください。

次のステップ

このエクスポーターは、 OpenTelemetry JSと一緒に使用するように作られています。

プラグインレジストリ

使用しているライブラリのプラグインがすでに作成されているかどうかを確認するには、 OpenTelemetry Registryを確認してください。

レジストリにライブラリが見つからない場合は、 opentelemetry-js-contribで新しいプラグインリクエストを自由に提案してください。

投稿

このライブラリに投稿する場合は、コードをビルドしてテストする方法の詳細については、投稿ガイド を参照してください。