Flex Gateway新着情報
Governance新着情報
Monitoring API Managerイベント追跡を使用すると、特定のフローによって処理されているメッセージに関するリアルタイムの情報を表示できます。処理前、処理中、処理後のメッセージペイロードを表示できるのに加えて、フロー内のメッセージプロセッサーやメッセージメタデータに関する情報も表示できます。
イベント追跡を使用することで、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
ビジネスイベントに関連するイベントのみが追跡されます。
Tracking
BE
レベルに加えて、エンドポイント、例外戦略、トランザクション関連の通知を追跡します。
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 Runtime Engine にデプロイされているすべてのアプリケーションとそれらのフローの追跡方法を指定します。追跡レベルは mule-agent.yml
ファイルの services/mule.agent.tracking.service
セクションで設定します。
次の例では、グローバル追跡レベルを TRACKING
に設定しています。追跡レベルの説明は、「イベント追跡レベル」を参照してください。
mule-agent.yml
内で次のように設定します。
services:
mule.agent.tracking.service:
globalTrackingLevel: TRACKING
Mule アプリケーションの追跡レベルを設定することで、そのアプリケーションにおいてグローバル追跡設定を上書きできます。
Mule アプリケーションの追跡プロパティは、trackingLevel
、replayLevel
、trackedFlows
です。
trackingLevel
NONE
、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
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 を使用して実行中のアプリケーションの追跡設定を変更できます。
次の例では、追跡サービスに関する情報を取得しています。取得される情報には、設定可能な項目とその現在の値が含まれています。
要求:
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 ) は自動的には削除されません。定期的に手動でログを削除する必要があります。
|