Logic Appの相関

これは2019/05/14現在の備忘録であり、今後機能変更や廃止される可能性があります。

相関ID

相関ID (correlation ID) はすべての呼び出しに付いています。Azure Portalで見ると、実行履歴の識別子が相関IDです。

一方のロジックアプリから他方のロジックアプリを呼び出す場合、ロジックアプリ呼び出しのコネクタを使うと、親ロジックアプリの相関IDでトラッキングできます。子ロジックアプリにはx-ms-client-tracking-idとして親ロジックアプリの相関IDが渡されます。以下は親ロジックアプリから子ロジックアプリを呼び出した際に出力結果として取得できるJSONです。

{
  "statusCode": 200,
  "headers": {
    "x-ms-workflow-run-id": "08586454326920836835265445460CU03",
    "x-ms-correlation-id": "426de7b3-f342-4d1c-b22b-2b5e70a9fa7f",
    "x-ms-client-tracking-id": "08586454326921754734898813794CU09",
    "x-ms-trigger-history-name": "08586454326920836835265445460CU03",
    "x-ms-execution-location": "japaneast",
    "x-ms-workflow-id": "f9ab65abfb5f451d96202204e9d57821",
    "x-ms-workflow-version": "08586454328613030885",
    "x-ms-workflow-name": "logicapp-child",
    "x-ms-workflow-system-id": "/locations/japaneast/scaleunits/prod-26/workflows/f9ab65abfb5f451d96202204e9d57821",
    "x-ms-tracking-id": "598bee1f-6153-46e1-b70f-c48bbb452dcd"
  }
}

子ロジックアプリの入力を確認すると、以下の内容がHeaderとして渡っていて、呼び出し元のx-ms-client-tracking-idの値が呼び出し先でも確認できます(x-ms-workflow-run-idとしても確認できます)。

{
  "headers": {
    "Accept-Language": "ja",
    "User-Agent": "azure-logic-apps/1.0,(workflow 6e1eef65db9b49fe9efd155c6b13330f; version 08586454327017350370)",
    "x-ms-execution-location": "japaneast",
    "x-ms-workflow-id": "6e1eef65db9b49fe9efd155c6b13330f",
    "x-ms-workflow-version": "08586454327017350370",
    "x-ms-workflow-name": "logicapp-test",
    "x-ms-workflow-system-id": "/locations/japaneast/scaleunits/prod-25/workflows/6e1eef65db9b49fe9efd155c6b13330f",
    "x-ms-workflow-run-id": "08586454326921754734898813794CU09",
    "x-ms-workflow-run-tracking-id": "c1fa76ed-bc77-4924-8fad-ce5f3b092b53",
    "x-ms-workflow-operation-name": "logicapp-child",
    "x-ms-workflow-subscription-id": "8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx3",
    "x-ms-workflow-resourcegroup-name": "LogicApps",
    "x-ms-tracking-id": "8b07200c-3b54-4e44-b22b-e8b34ae9331b",
    "x-ms-correlation-id": "8b07200c-3b54-4e44-b22b-e8b34ae9331b",
    "x-ms-client-request-id": "8b07200c-3b54-4e44-b22b-e8b34ae9331b",
    "x-ms-client-tracking-id": "08586454326921754734898813794CU09",
    "x-ms-action-tracking-id": "c1430f0e-c14c-49c5-85ea-80d6ed2004f1",
    "x-ms-activity-vector": "IN.08"
  }
}

呼び出し時にx-ms-tracking-client-idをHTTP Headerに指定すると、その値を使ってインスタンスを一意に識別できることがわかります。例えばx-ms-client-tracking-idにlogicapp-20190425を指定した場合、以下のように関連付けID(英語ではCorrelation ID)で確認できます。

カスタム値を相関IDとして利用する

Logic Appのインスタンスを確認する際、通常はシステム固有のIDでトラッキングしますが、システムでユニークな値を使いEnd-to-Endに確認するような仕組みを既に有している場合、その仕組みで生成されるIDを使ってインスタンス実行状況の確認をしたいというニーズがあります。また、業務上ユニークになり得る値を使って実行状況を確認したいというニーズもあります。そうしたニーズに対応するための仕組みがLogic Appsにはあります。

相関IDにカスタムヘッダー値を使う

現時点ではCode Viewを使ってのみ設定可能です(Designerでもカスタムの追跡IDで確認できますが、設定そのものはCode Viewを使うしか手がありません)。

Designerでは入力できるけれど…

Code Viewでtriggers.manual.correlationオブジェクトを作成し、その中でclientTrackingIdを設定します。以下の例では、x-my-custom-correlation-idをカスタムヘッダーとして設定し、その値を使っています。

"triggers": {
  "manual": {
    "correlation": {
    "clientTrackingId": "@{coalesce(triggerOutputs().headers?['x-my-custom-correlation-id'], guid())}"
  },
  "inputs": {
    "method": "POST",
    "relativePath": "/v1/test",
    "schema": {}
  },
  "kind": "Http",
  "type": "Request"
}

相関IDにメッセージ本体の値を使う

triggerbody関数を使います。triggerbodyのスキーマは以下の通りです。

{
  "properties": {
    "message": {
      "type": "string"
    },
    "txid": {
      "type": "string"
    }
  },
  "type": "object"
}

以下のようなメッセージを例にします。

{
    "txid": "123456abcdef",
    "message": "Hello World!"
}

以下の例では、txidをcorrelation内のclientTrackingIdに設定し、x-ms-client-tracking-idとして利用できるようにしています。

"triggers": {
  "manual": {
    "correlation": {
      "clientTrackingId": "@{triggerBody()?['txid']}"
    },
    "inputs": {
      "method": "POST",
      "relativePath": "/v1/test",
      "schema": {
        "properties": {
          "message": {
            "type": "string"
          },
          "txid": {
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "kind": "Http",
    "type": "Request"
  }
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中