---
schema_version: "1"
id: e8e2835be0617d9097c796b3190391f06fe61ba830f53a1ea0e20942215bb408
title: Mule Runtime での OpenTelemetry のサポート
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.9/otel-support.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.9/otel-support
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 337d81d120348a50d08f617d04e8da1f667e440458b03141b0edf0f3bb12867e
description: MuleSoft Documentation Site
release: "4.9"
latest: false
---
# Mule Runtime での OpenTelemetry のサポート

OpenTelemetry は、仕様、API、SDK で構成されるオブザーバビリティ標準です。テレメトリーデータ (メトリクス、ログ、トレースなど) を計測、生成、収集、エクスポートしてソフトウェアの動作を分析するのに役立ちます。

OpenTelemetry を使用すると、Mule Runtime Engine で Mule アプリケーションの動作に関するオブザーバビリティを提供できます。また、分散トレースを使用すると、Mule でこの標準を活用する Mule アプリケーションと非 Mule コンポーネント間のインタラクションに関するオブザーバビリティを提供できます。

Mule では、OpenTelemetry 分散トレースの生成およびエクスポートがサポートされています。ただし、メトリクスとログはまだ OpenTelemetry でサポートされていません。

## [](#始める前に)始める前に

OpenTelemetry Mule 機能を使用するには、以下に精通している必要があります。

- 分散トレースの概念 (トレースやスパンなど)。
    
    分散トレースや OpenTelemetry を初めて使用する場合、 [「OpenTelemetry とは」](https://opentelemetry.io/docs/concepts/what-is-opentelemetry/)​および [「分散トレースを理解する」](https://opentelemetry.io/docs/concepts/observability-primer/#understanding-distributed-tracing)​から始めることをお勧めします。
- [テレメトリーデータをサードパーティ監視システムにエクスポートする方法](https://docs.mulesoft.com/jp/monitoring/telemetry-exporter)​。

オブザーバビリティ標準で開始するには、以下が必要です。

- Mule Runtime 4.6.0 以降 (フロートレースの場合)。
- HTTP 用 Anypoint Connector (HTTP Connector) 1.8 (分散トレースの場合)。
- 設定済みの Telemetry Exporter。

## [](#mule-アプリケーションのトレース)Mule アプリケーションのトレース

Mule は OpenTelemetry を利用して、以下を提供します。

- アプリケーション実行オブザーバビリティ
    
    オブザーバビリティには、アプリケーションの各コンポーネントの動作が含まれます。Mule アプリケーションに関連するメインスパンはフロースパンです。メッセージ処理に関連する各 Mule コンポーネント実行は、対応するフローの子スパンとして表されます。
- 分散トレース
    
    トレースにより、Mule アプリケーションのインタラクションを追跡できます。複数のシステムおよびサービスが関連する場合、分散トレースで分散環境に流れるアプリケーション要求を追跡し、アプリケーションの実行の包括的なビューを提供します。

たとえば、HTTP Listener で [W3C トレースコンテキスト](https://www.w3.org/TR/trace-context/)​ヘッダーを受信する場合、Mule のフロースパンでクライアントのリモート親スパン (HTTP コールの発生元のスパン) を取得します。HTTP Requester コンポーネントを使用している場合、Mule は自動的に現在のスパンをサーバーエンドポイントに伝播します。

コンテキストの受信および伝播でサポートされているスパンコンテキスト形式は、 [W3C トレースコンテキスト](https://www.w3.org/TR/trace-context/)​形式です。

### [](#mule-スパンデータ)Mule スパンデータ

トレースは、分散システムの完全な操作を表す一連のスパンです。スパンは、ネストされることがあり、作業または操作の単位を表します。各スパンには、以下が含まれます。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">カテゴリ</th>
<th class="tableblock halign-left valign-top">説明</th>
<th class="tableblock halign-left valign-top">値の例</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Name (名前)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>スパンの名前</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>mule:set-variable</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Parent Span ID (親スパン ID)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>現在のスパンの親のスパン ID</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>86838830d494d679</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Start and End Timestamps (開始および終了タイムスタンプ)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>スパンの最も早いおよび最も遅いタイムスタンプ</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>2021-10-22 16:04:01.209458162 +0000 UTC</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Span Context (スパンコンテキスト)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>スパンを一意に識別するデータ: トレース ID、スパン ID、トレースフラグ、トレース状態</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Attributes (属性)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メタデータが含まれるキー-値ペア。このメタデータを使用してアノテーションをスパンに付加し、追跡対象の操作に関する情報を伝えます。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>{
“location”: “flow/processors/2”,
“correlation.id”:  “1234abcd”
}</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Span Events (スパンイベント)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>スパンの期間中の意味のある一意の時点を示すために使用される、スパンの構造化されたログメッセージまたはアノテーション。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>{
      "name": "",
      "message": "OK",
      "timestamp": "2021-10-22 16:04:01.209512872 +0000 UTC"
    }</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Span Links (スパンリンク)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>あるスパンを 1 つ以上の他のスパンに関連付けるリンク (因果関係を示す)。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Span Status (スパン状況)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>スパンに関連付けられた状況。アプリケーションコードで例外などの不明なエラーが発生したときのスパン状況を設定できます。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>ERROR</code>​、​<code>OK</code>​、​<code>UNSET</code></p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Span Kind (スパンの種類)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>トレースの編成方法に関する情報。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>CLIENT</code>​、​<code>INTERNAL</code>​、​<code>PRODUCER</code></p>
</div></div></td>
</tr>
</tbody>
</table>

### [](#フロートレース機能の例)フロートレース機能の例

フロー実行をトレースする場合、メッセージの処理に関連する各 Mule コンポーネント実行はスパンとして表されます。コンポーネントスパンは、実行の関連する側面を表します。Set Payload などのシンプルなコンポーネントでは 1 つのスパンですが、Batch Job などではより複雑な構造になります。

バッチインスタンス

Mule Runtime は Batch Job などの複雑なコンポーネントを追跡します。

![Listener および Set Payload コンポーネントが含まれるより複雑な構造のバッチフロー](/mulesoft/current/ja-jp/mule-runtime/4.9/_images/otel-batch-instance.png)

生成されるスパン

トレースは、Batch Job の最初のステップでどのように各バッチレコードが処理されるのかを表示します。各レコードスパンには、Logger コンポーネントで実行される作業の単位を表す子スパンが含まれます。 次に、For Each コンポーネントおよびその内部のプロセッサー (Transform Message や Logger など) と共に Batch Aggregator スパンを表示します。 その後、他の 2 つのバッチステップとそれぞれのコンポーネントを表示します。 最後に、フローの Batch Job の後に表示される Logger コンポーネントと共に Batch On Complete スパンを表示します。

### [](#分散トレース機能の例)分散トレース機能の例

次の例では、ある Mule アプリケーションが別の Mule アプリケーションに要求を送信しています。

![HTTP アプリケーションの Listener、Logger、Request コンポーネントが含まれるフロー](/mulesoft/current/ja-jp/mule-runtime/4.9/_images/otel-mule-app1.png)

![非同期アプリケーションのプロセスフローが表示されているフロー](/mulesoft/current/ja-jp/mule-runtime/4.9/_images/otel-mule-app2.png)

Mule および HTTP Connector で OpenTelemetry が計測されるため、分散トレースでは、同じトレースの一部として両方のフローが取得されます。

### [](#トレースのエラー)トレースのエラー

スパンで表される実行作業単位でエラーが発生すると、スパンの状況が ​`[Error (エラー)]`​ に設定されます。MuleSoft は、1 つ以上の​`例外`​イベントをスパンに追加する OpenTelemetry によって定義されるセマンティック規則に準拠します。

- `exception.type`​: Mule エラー種別
- `exception.message`​: Mule エラーメッセージ
- `exception.stacktrace`​: Mule フロースタックの文字列表現

次の例では、エラーが発生したときに、Raise error コンポーネントに対応するスパンで Lightstep プラットフォームのエラー状況が表示されます。

![エラー処理が含まれるテレメトリーフローのフロー](/mulesoft/current/ja-jp/mule-runtime/4.9/_images/otel-errors-in-tracing.png)

この状況は、親スパン (フロースパンなど) に伝播します。スパンの詳細ビューにエラー状況と例外イベントが表示されます。

### [](#http-規則)HTTP 規則

HTTP Listener および HTTP Request 操作により、スパンに属性が追加され、HTTP インタラクションをトレースするためのより多くのコンテキストが提供されます。

HTTP Listener が含まれるフローでは以下のようになります。

- Span name (スパン名): HTTP メソッドとパスの組み合わせ。例: `POST /api`​。
- Span kind (スパンの種類): `SERVER`​。

フロースパンに関連付けられた HTTP Listener の追加属性:

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>net.host.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP Listener のホストアドレス</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>net.host.port</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP Listener のポート</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.user_agent</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">受信した要求のユーザーエージェント</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.route</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP Listener のパス</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.method</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP メソッド</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.flavor</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP バージョン</p></td>
</tr>
</tbody>
</table>

HTTP Request が含まれるフローでは以下のようになります。

- Span name (スパン名): HTTP メソッド。例: `GET`​。
- Span kind (スパンの種類): `CLIENT`​。

フロースパンに関連付けられた HTTP Request の追加属性:

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.url</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">対象 URL</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>net.host.port</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP Request のポート</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>net.peer.name</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">対象 IP アドレス</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.route</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP Request のパス</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>http.flavor</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HTTP バージョン</p></td>
</tr>
</tbody>
</table>

## [](#関連情報)関連情報

- [サードパーティ監視システムへのテレメトリーデータのエクスポート](https://docs.mulesoft.com/jp/monitoring/telemetry-exporter)