Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerOpenTelemetry は、仕様、API、SDK で構成されるオブザーバビリティ標準です。テレメトリーデータ (メトリクス、ログ、トレースなど) を計測、生成、収集、エクスポートしてソフトウェアの動作を分析するのに役立ちます。
OpenTelemetry を使用すると、Mule Runtime Engine で Mule アプリケーションの動作に関するオブザーバビリティを提供できます。また、分散トレースを使用すると、Mule でこの標準を活用する Mule アプリケーションと非 Mule コンポーネント間のインタラクションに関するオブザーバビリティを提供できます。
Mule では、OpenTelemetry 分散トレースの生成およびエクスポートがサポートされています。ただし、メトリクスとログはまだ OpenTelemetry でサポートされていません。
OpenTelemetry Mule 機能を使用するには、以下に精通している必要があります。
分散トレースの概念 (トレースやスパンなど)。
分散トレースや OpenTelemetry を初めて使用する場合、 「OpenTelemetry とは」および 「分散トレースを理解する」から始めることをお勧めします。
オブザーバビリティ標準で開始するには、以下が必要です。
Mule Runtime 4.6.0 以降 (フロートレースの場合)。
HTTP 用 Anypoint Connector (HTTP Connector) 1.8 (分散トレースの場合)。
設定済みの Telemetry Exporter。
Mule は OpenTelemetry を利用して、以下を提供します。
アプリケーション実行オブザーバビリティ
オブザーバビリティには、アプリケーションの各コンポーネントの動作が含まれます。Mule アプリケーションに関連するメインスパンはフロースパンです。メッセージ処理に関連する各 Mule コンポーネント実行は、対応するフローの子スパンとして表されます。
分散トレース
トレースにより、Mule アプリケーションのインタラクションを追跡できます。複数のシステムおよびサービスが関連する場合、分散トレースで分散環境に流れるアプリケーション要求を追跡し、アプリケーションの実行の包括的なビューを提供します。
たとえば、HTTP Listener で W3C トレースコンテキストヘッダーを受信する場合、Mule のフロースパンでクライアントのリモート親スパン (HTTP コールの発生元のスパン) を取得します。HTTP Requester コンポーネントを使用している場合、Mule は自動的に現在のスパンをサーバーエンドポイントに伝播します。
コンテキストの受信および伝播でサポートされているスパンコンテキスト形式は、 W3C トレースコンテキスト形式です。
トレースは、分散システムの完全な操作を表す一連のスパンです。スパンは、ネストされることがあり、作業または操作の単位を表します。各スパンには、以下が含まれます。
カテゴリ | 説明 | 値の例 |
---|---|---|
Name (名前) |
スパンの名前 |
|
Parent Span ID (親スパン ID) |
現在のスパンの親のスパン ID |
|
Start and End Timestamps (開始および終了タイムスタンプ) |
スパンの最も早いおよび最も遅いタイムスタンプ |
|
Span Context (スパンコンテキスト) |
スパンを一意に識別するデータ: トレース ID、スパン ID、トレースフラグ、トレース状態 |
|
Attributes (属性) |
メタデータが含まれるキー-値ペア。このメタデータを使用してアノテーションをスパンに付加し、追跡対象の操作に関する情報を伝えます。 |
{ “location”: “flow/processors/2”, “correlation.id”: “1234abcd” } |
Span Events (スパンイベント) |
スパンの期間中の意味のある一意の時点を示すために使用される、スパンの構造化されたログメッセージまたはアノテーション。 |
{ "name": "", "message": "OK", "timestamp": "2021-10-22 16:04:01.209512872 +0000 UTC" } |
Span Links (スパンリンク) |
あるスパンを 1 つ以上の他のスパンに関連付けるリンク (因果関係を示す)。 |
|
Span Status (スパン状況) |
スパンに関連付けられた状況。アプリケーションコードで例外などの不明なエラーが発生したときのスパン状況を設定できます。 |
|
Span Kind (スパンの種類) |
トレースの編成方法に関する情報。 |
|
フロー実行をトレースする場合、メッセージの処理に関連する各 Mule コンポーネント実行はスパンとして表されます。コンポーネントスパンは、実行の関連する側面を表します。Set Payload などのシンプルなコンポーネントでは 1 つのスパンですが、Batch Job などではより複雑な構造になります。
Mule Runtime は Batch Job などの複雑なコンポーネントを追跡します。
トレースは、Batch Job の最初のステップでどのように各バッチレコードが処理されるのかを表示します。各レコードスパンには、Logger コンポーネントで実行される作業の単位を表す子スパンが含まれます。 次に、For Each コンポーネントおよびその内部のプロセッサー (Transform Message や Logger など) と共に Batch Aggregator スパンを表示します。 その後、他の 2 つのバッチステップとそれぞれのコンポーネントを表示します。 最後に、フローの Batch Job の後に表示される Logger コンポーネントと共に Batch On Complete スパンを表示します。
次の例では、ある Mule アプリケーションが別の Mule アプリケーションに要求を送信しています。
Mule および HTTP Connector で OpenTelemetry が計測されるため、分散トレースでは、同じトレースの一部として両方のフローが取得されます。
スパンで表される実行作業単位でエラーが発生すると、スパンの状況が [Error (エラー)]
に設定されます。MuleSoft は、1 つ以上の例外
イベントをスパンに追加する OpenTelemetry によって定義されるセマンティック規則に準拠します。
exception.type
: Mule エラー種別
exception.message
: Mule エラーメッセージ
exception.stacktrace
: Mule フロースタックの文字列表現
次の例では、エラーが発生したときに、Raise error コンポーネントに対応するスパンで Lightstep プラットフォームのエラー状況が表示されます。
この状況は、親スパン (フロースパンなど) に伝播します。スパンの詳細ビューにエラー状況と例外イベントが表示されます。
HTTP Listener および HTTP Request 操作により、スパンに属性が追加され、HTTP インタラクションをトレースするためのより多くのコンテキストが提供されます。
HTTP Listener が含まれるフローでは以下のようになります。
Span name (スパン名): HTTP メソッドとパスの組み合わせ。例: POST /api
。
Span kind (スパンの種類): SERVER
。
フロースパンに関連付けられた HTTP Listener の追加属性:
属性 | 説明 |
---|---|
|
HTTP Listener のホストアドレス |
|
HTTP Listener のポート |
|
受信した要求のユーザーエージェント |
|
HTTP Listener のパス |
|
HTTP メソッド |
|
HTTP バージョン |
HTTP Request が含まれるフローでは以下のようになります。
Span name (スパン名): HTTP メソッド。例: GET
。
Span kind (スパンの種類): CLIENT
。
フロースパンに関連付けられた HTTP Request の追加属性:
属性 | 説明 |
---|---|
|
対象 URL |
|
HTTP Request のポート |
|
対象 IP アドレス |
|
HTTP Request のパス |
|
HTTP バージョン |