イベント追跡を使用すると、特定のフローによって処理されているメッセージに関するリアルタイムの情報を表示できます。処理前、処理中、処理後のメッセージペイロードを表示できるのに加えて、フロー内のメッセージプロセッサーやメッセージメタデータに関する情報も表示できます。
イベント追跡を使用することで、Mule サーバー上でのビジネストランザクションやイベントを表示することができ、特定のメッセージのフローと処理を追跡して分析できます。たとえば、このデータを使用して、ビジネストランザクション内の障害の根本原因分析を実行したり、メッセージ処理のボトルネックを特定したりできます。
通知種別
Mule Runtime Engine は、フローコンポーネントの実行に関する情報を通知します。 「Mule イベント」を参照してください。
Mule が提供する通知の種別については、「通知インターフェース」を参照してください。
転送イベント情報
各通知について、Runtime Manager エージェントは、次の情報をイベント追跡サービスに転送します。
-
timestampイベントのタイムスタンプ
-
notificationTypeイベント種別 (メッセージプロセッサーイベント、インバウンドエンドポイントイベントなど)
-
actionイベントアクション (開始、終了、完了、ロールバックなど)
-
resourceIdentifierフローの名前
-
muleMessage(設定されている場合) シリアル化された Mule メッセージまたはエラーメッセージ。
Runtime Manager エージェントは、次の情報は送信しません。
-
Mule Message ID (Mule メッセージ ID)
-
Exception (例外)
例外が発生した場合のメッセージとスタック追跡
-
Path (パス)
コンポーネントの Mule パス
-
Annotations (アノテーション)
コンポーネントのアノテーション (ある場合)
-
Application (アプリケーション)
イベント追跡通知
Runtime Manager エージェントは、Mule アプリケーションのイベント追跡通知を保存して、イベント追跡サービスにストリーミングします。ネットワークトポロジーと Mule アプリケーションのデザインによっては、イベント追跡通知を Runtime Manager エージェントからオンラインイベント追跡サービスにネットワーク経由でコピーすると、パフォーマンスに大きな影響が出る場合があります。
追跡レベルの粒度を変更することで、パフォーマンスへの影響を抑えることができます。グローバルイベント追跡レベルを指定してから、指定した Mule アプリケーションでレベルを変更できます。さらに Mule アプリケーション内の特定のフローでもイベント追跡レベルを変更できます。
イベント追跡レベルのほかにも、メッセージ再生機能ですべてのメッセージを保存して後で再生できます。これは、メッセージ処理の重複につながる可能性もありますが、再生機能が提供するメカニズムによって、運用チームは失敗したトランザクションを復元して再生できます。追跡レベルと同じように、再生レベルはグローバルに設定しておいて、特定の Mule アプリケーションでレベルを上書きしたり、Mule アプリケーション内の特定のフローで上書きしたりできます。
イベント追跡レベル
使用できるイベント追跡レベルは次のとおりです。
-
Noneデバッグを行わないように指定します。
-
BEビジネスイベントに関連するイベントのみが追跡されます。
-
TrackingBE レベルに加えて、エンドポイント、例外戦略、トランザクション関連の通知を追跡します。 -
Debug +Tracking レベルに加えて、追加コンポーネントとメッセージプロセッサー通知を指定します。イベント追跡を Debug に設定するとパフォーマンスが低下することがあるため、この追跡レベルはデバッグ時にのみ使用してください。
次の表は、各デバッグレベルでアクティブな通知の種別を示しています。
Mule 種別は、通知種別を定義する (org.mule.context.notification パッケージにある) org.mule.api.context.notification.ServerNotification サブクラスです。
| 通知 | Mule 種別 | None (なし) | BE (ビジネスイベント) | Tracking (追跡) | Debug (デバッグ) |
|---|---|---|---|---|---|
Pipeline Message (パイプラインメッセージ) |
PipelineMessageNotifications |
√ |
√ |
√ |
|
Async Message (非同期メッセージ) |
AsyncMessageNotifications |
√ |
√ |
√ |
|
例外 |
ExceptionStrategyNotifications |
√ |
√ |
√ |
|
Event (イベント) |
EventNotifications |
√ |
√ |
√ |
|
Exception Strategy (例外戦略) |
ExceptionStrategyNotifications |
√ |
√ |
||
Transaction (トランザクション) |
TransactionNotifications |
√ |
√ |
||
Endpoint Message (エンドポイントメッセージ) |
EndpointMessageNotifications |
√ |
√ |
||
Message Processor (メッセージプロセッサー) |
MessageProcessorNotification |
√ |
|||
Component Message (コンポーネントメッセージ) |
ComponentMessageNotifications |
√ |
イベント追跡の設定
すべてのアプリケーション (グローバル)、単一のアプリケーション、またはフローに対して追跡レベルを設定できます。
-
Global (グローバル)
Mule Runtime Engine にデプロイされているすべてのアプリケーションとそれらのフローの追跡方法を指定します。
-
App (アプリケーション)
特定のアプリケーションのグローバル追跡レベルを上書きします。
-
Flow (フロー)
特定のフローのグローバルまたはアプリケーション追跡レベルを上書きします。
mule-agent.yml でのイベント追跡の設定
イベント追跡は mule-agent.yml で設定できます。
すべての Mule アプリケーションに対するイベント追跡のグローバル設定
Mule Runtime Engine にデプロイされているすべてのアプリケーションとそれらのフローの追跡方法を指定します。追跡レベルは mule-agent.yml ファイルの services/mule.agent.tracking.service セクションで設定します。
次の例では、グローバル追跡レベルを TRACKING に設定しています。追跡レベルの説明は、「イベント追跡レベル」を参照してください。
mule-agent.yml 内で次のように設定します。
services:
mule.agent.tracking.service:
globalTrackingLevel: TRACKING
Mule アプリケーションに対する追跡の設定
Mule アプリケーションの追跡レベルを設定することで、そのアプリケーションにおいてグローバル追跡設定を上書きできます。
Mule アプリケーションの追跡プロパティは、trackingLevel、replayLevel、trackedFlows です。
-
trackingLevelNONE、BE、TRACKING、または DEBUG のいずれかの追跡レベルを指定します。この追跡レベルは、Mule アプリケーションのすべてのフローに影響します。「イベント追跡レベル」を参照してください。 -
replayLevel'Mule アプリケーションのすべてのフローで、各メッセージを後で再生できるように保存する方法を指定します。
NONE、SOURCED、または ALL を指定できます。
| 再生レベルオプション | 説明 |
|---|---|
|
メッセージの再生に関するデータを保存せず、これらのフローに対して再生機能を無効にします。 |
|
Mule アプリケーション内の、メッセージソースで始まる各フローのメッセージのみを後で再生するために保存します。 |
|
Mule アプリケーションのすべてのフローのメッセージを再生用に保存します。 |
次の例では、mule-flights アプリケーションとそのフローの追跡レベルを TRACKING に設定し、メッセージ再生機能を無効にしています。mule-flights アプリケーションは、一部の通知をイベント追跡サービスに送信しますが、受信した各メッセージはコピーしません。mule-flights アプリケーションのフローは、いずれもイベント追跡サービスから再生することはできません。
次の例でも globalTrackingLevel を BE に設定しており、デフォルト値の NONE を上書きしています。この設定により、他の Mule アプリケーションも BE レベルで追跡されます。
mule-agent.yml 内で次のように設定します。
services:
mule.agent.tracking.service:
globalTrackingLevel: BE
trackedApplications:
- appName: mule-flights
trackingLevel: TRACKING
replayLevel: NONE
Mule アプリケーションのフローに対する追跡の設定
trackedFlows 要素を追加することにより、指定した Mule アプリケーション内でフローのグローバルおよびアプリケーション設定を上書きできます。この要素は、フローで追跡する対象と、メッセージ再生の動作を指定します。
フロー追跡オプションを下表に示します。
| フロー追跡オプション | 説明 |
|---|---|
|
Mule アプリケーション XML 設定ファイルで指定されているフローの名前。 |
|
|
|
|
|
メッセージペイロードも後で再生するために保存するか、メッセージメタデータのみを保存するかを指定します ( |
次の例では、mule-flights アプリケーションのフローに追跡を追加しています。グローバルおよび Mule アプリケーション追跡には、デフォルト値 (NONE) を使用しています。
mule-agent.yml 内で次のように設定します。
services:
mule.agent.tracking.service:
trackedApplications:
- appName: mule-flights
trackedFlows:
- flowName: purchaseFlight
trackingLevel: DEBUG
replayLevel: ALL
複雑な追跡例
次の例では、グローバル、Mule アプリケーション、およびフローの追跡レベルを設定しています。
グローバル:
-
globalTrackingLevel を NONE (globalTrackingLevel を指定しなかった場合のデフォルト) に設定します。
アプリケーション mule-flights:
-
trackingLevel: アプリケーションに対して
TRACKING レベルを設定します。 -
replayLevel: アプリケーションに対して
NONE を設定します。メッセージは保存されず、再生は無効です。-
フロー
purchaseFlight-
trackingLevel: この 1 つのフローに対して
DEBUG (デバッグ) レベル (TRACKING (追跡) レベルを上書き)。 -
replayLevel: この 1 つのフローに対して
ALL を設定します。フローにメッセージソースがない場合でも、すべてのメッセージを再生用に保存します。
-
-
アプリケーション mule-ticketing:
-
trackingLevel: アプリケーションに対して
BE を設定します。 -
replayLevel: アプリケーションに対して
SOURCE を設定します。メッセージは保存されず、再生は無効です。-
フロー
confirmReservation-
trackingLevel: この 1 つのフローに対して
DEBUG (デバッグ) レベル (TRACKING (追跡) レベルを上書き)。 -
replayLevel: この 1 つのフローに対して
ALL。フローにメッセージソースがない場合でも、すべてのメッセージを再生用に保存します。
-
-
Mule インスタンス内のその他のすべてのアプリケーションとそのフロー:
-
trackingLevel:
NONE (デフォルト)
mule-agent.yml 内で次のように設定します。
services:
mule.agent.tracking.service:
globalTrackingLevel: NONE
trackedApplications:
- appName: mule-flights
trackingLevel: TRACKING
replayLevel: NONE
trackedFlows:
- flowName: purchaseFlight
trackingLevel: DEBUG
replayLevel: ALL
- flowName: help
trackingLevel: NONE
replayLevel: NONE
- appName: mule-ticketing
trackingLevel: BE
replayLevel: SOURCE
trackedFlows:
- flowName: confirmReservation
trackingLevel: DEBUG
replayLevel: ALL
エージェント API を使用した実行中の追跡の設定
エージェント API を使用すると、実行中にエージェント追跡設定を変更できます。たとえば、API を使用して実行中のアプリケーションの追跡設定を変更できます。
現在の設定の取得
次の例では、追跡サービスに関する情報を取得しています。取得される情報には、設定可能な項目とその現在の値が含まれています。
要求:
GET <Runtime Manager Agent URL>/mule/agent/mule.agent.tracking.service
応答:
"configurableFields": [
{
"name": "globalTrackingLevel",
"valueType": "com.mulesoft.agent.services.tracking.TrackingLevel",
"value": "NONE",
"configurableType": "DYNAMIC",
"description": ""
},
{
"name": "trackedApplications",
"valueType": "[Lcom.mulesoft.agent.services.tracking.TrackedApplication;",
"value": [],
"configurableType": "DYNAMIC",
"description": ""
}
],
"injectedHandlers": [
{
"name": "com.mulesoft.agent.handlers.internal.InternalTrackingNotificationHandler",
"path": "/mule/agent/tracking.notification.internal.message.handler/configuration",
"type": "class com.mulesoft.agent.domain.tracking.AgentTrackingNotification"
}
],
"serviceHandlerTypes": [
"class com.mulesoft.agent.domain.tracking.AgentTrackingNotification"
]
}
現在の設定の変更
実行中に現在の設定を変更するには、変更した設定の JSON 表現を使用して要求を送信します。この表現は、現在の設定を上書きします。JSON 表現に含まれていない項目では、現在の値が保持されます。
次の例では、globalTrackingLevel 項目と trackedApplications 項目の上書きを要求します。他のすべての項目は変更されません。
要求:
PATCH <Runtime Manager Agent URL>/mule/agent/mule.agent.tracking.service HTTP/1.1
{
"globalTrackingLevel": "BE",
"trackedApplications": [
{
"appName": "mule-flights",
"trackingLevel": "DEBUG",
"trackedFlows": [
{
"flowName": "purchaseFlight",
"trackingLevel": "TRACKING"
}
]
}
]
}
応答:
{
"configurableFields": [
{
"name": "globalTrackingLevel",
"valueType": "com.mulesoft.agent.services.tracking.TrackingLevel",
"value": "BE",
"configurableType": "DYNAMIC",
"description": ""
},
{
"name": "trackedApplications",
"valueType": "[Lcom.mulesoft.agent.services.tracking.TrackedApplication;",
"value": [
{
"appName": "mule-flights",
"trackingLevel": "DEBUG",
"trackedFlows": [
{
"flowName": "purchaseFlight",
"trackingLevel": "TRACKING"
}
]
}
],
"configurableType": "DYNAMIC",
"description": ""
}
],
"injectedHandlers": [
{
"name": "com.mulesoft.agent.handlers.internal.InternalTrackingNotificationHandler",
"path": "/mule/agent/tracking.notification.internal.message.handler/configuration",
"type": "class com.mulesoft.agent.domain.tracking.AgentTrackingNotification"
}
],
"serviceHandlerTypes": [
"class com.mulesoft.agent.domain.tracking.AgentTrackingNotification"
]
}
イベント追跡ログファイル ($MULE_HOME/logs/events-%d{yyyy-dd-MM}-%i.log) は自動的には削除されません。定期的に手動でログを削除する必要があります。
|