3
6

More than 1 year has passed since last update.

Power Automate クラウド フローの実行履歴を Log Analytics ワークスペースにインポートする (実装編)

Last updated at Posted at 2022-07-17

はじめに

前回の投稿では、準備編として以下のことを行いました。

  • Azure AD にアプリケーションを登録して、Postman などを用いて Power Automate Flow API へのアクセスを確認する
  • カスタム コネクタを作成する

今回は、実装編としてロジックアプリから Power Automate クラウド フローの実行履歴を収集して、Azure Log Analytics ワークフローにインポートするところについて説明していきます。

image.png

ロジックアプリを作成する

Power Automate クラウド フローの状態をなるべく早く検知したいので、短い間隔で定期的に実行させます。

image.png

Power Automate クラウド フローの情報を取得

[アクションの追加] で、作成したカスタム コネクタを選択して、[アクション] から「Get Flow」をクリックしてアクションを追加します。

image.png

「Get Flow」アクションの各パラメーターを以下のように入力します。

image.png

パラメーター 設定値
Environment name Power Platform の環境名
API version 2016-11-01 (既定値)
Filter たとえば、有効なクラウド フローのみを取得したい場合は
state eq Started
※無効は Stoped
Order by たとえば、フロー名の昇順でソートしたい場合は
name

取得したクラウド フローの情報の中には (ここでは) 不要なものがあるので、クラウド フローの実行履歴を収集するために必要な情報だけピックアップして、変数 (配列) に入れておくと良いでしょう。

image.png

該当したクラウド フローの情報が 50 レコードを超える場合、nextLink プロパティに続きのレコードを取得するための URL が記載されています。なので、下図のように「条件」アクションを使って nextLink プロパティの存在有無を確認 (empty 関数を使う) します。

image.png

その後のページネーション処理は 「Do Until」アクションで、 nextLink プロパティが存在し無くなるまで「Get Flow」アクションを実行し続けます。

image.png

2 回目以降の「Get Flow」アクションの実行では、前回の「Get Flow」アクションで取得した nextLink プロパティの URL の QueryString に $filter $orderby $skiptoken が含まれているので、これらの値を抽出し、「Get Flow」アクションの各パラメーターに指定します。

image.png

パラメーター 設定値
Environment name Power Platform の環境名
API version 2016-11-01 (既定値)
Filter 抽出した $filter の値
Order by 抽出した $orderby の値
Skip token 抽出した $skiptoken の値

Power Automate クラウド フローの実行履歴を収集

ループでフローごとに処理していきます。

[アクションの追加] で、作成したカスタム コネクタを選択して、[アクション] から「Get Flow Run」をクリックしてアクションを追加します。

image.png

「Get Flow Run」アクションの各パラメーターを以下のように入力します。

image.png

パラメーター 設定値
Environment name Power Platform の環境名
Flow name 「Get Flow」アクションで取得した Flow 名
API version 2016-11-01 (既定値)
Filter たとえば From ≦ クラウド フローの開始日時 < To で抽出する場合
startTime gt 2022-07-01T00:00:00Z and startTime lt 2022-07-01T00:05:00Z
※日時のタイムゾーンは「UTC」
Order By たとえばクラウド フローの開始日時の昇順でソートする場合
startTime

取得したクラウド フローの情報および実行履歴の中から、ログとして保存したい情報をピックアップして、変数 (配列) に入れておきます。

image.png

こちらも同じように、該当したクラウド フローの実行履歴が 50 レコードを超える場合、nextLink プロパティに続きのレコードを取得するための URL が記載されています。なので、下図のように「条件」アクションを使って nextLink プロパティの存在有無を確認 (empty 関数を使う) します。

image.png

こちらも同じように、その後のページネーション処理は 「Do Until」アクションで、nextLink プロパティが存在し無くなるまで「Get Flow Run」アクションを実行し続けます。

image.png

2 回目以降の「Get Flow Run」アクションでは、前回の「Get Flow Run」アクションで取得した nextLink プロパティの URL の QueryString に $filter $orderby $skiptoken が含まれているので、これらの値を抽出し、「Get Flow Run」アクションの各パラメーターに指定します。

image.png

パラメーター 設定値
Environment name Power Platform の環境名
Flow name 「Get Flow」アクションで取得した Flow 名
API version 2016-11-01 (既定値)
Filter 抽出した $filter の値
Order By 抽出した $orderby の値
Skip Token 抽出した $skiptoken の値

Log Analytics ワークフローにインポート

Azure Log Analytics ワークフローにログをインポートする場合は、「Azure Log Analytics Data Collector」コネクタの「Send Data (送信データ)」アクションを使います。

「Send Data (送信データ)」アクションの各パラメーターを以下のように入力します。

image.png

パラメーター 設定値
JSON 要求本文 「Get Flow Run」アクションの実行後にログとしてピックアップした情報を格納した変数
カスタム ログの名前 ユーザー定義ログ (カスタムテーブル) の名前
→ (例) FlowRunHistory
時間生成フィールド 今回は指定しない (空欄)

「時間生成フィールド」は、TimeGenerated フィールド (ログが記録されたときのタイムスタンプ) に挿入される値 (日時) で、「JSON 要求本文」の設定値内からフィールドを指定することができます。指定しない場合は、ログデータを取り込んだ時の日時が格納されます。なお、「JSON 要求本文」内のものを指定する場合、その指定したものはフィールドの値として格納されないので、TimeGenerated フィールドに挿入される値を指定したい場合は、別途フィールドを設けたほうが良いでしょう。

Azure Log Analytics ワークスペースで検索してみる

送信されたログデータが格納されているか確認するため、以下のクエリを実行します。
project は、単に列 (プロパティ) を並べ替えるだけに使っています。
※テーブル名は、「Send Data (送信データ)」アクションの「カスタム ログの名前」パラメーターで指定した値 FlowRunHistory の末尾に _CL が付きます。
※各プロパティ名にはデータ型に応じて、末尾にサフィックスが付きます。

FlowRunHistory_CL 
| order by TimeGenerated desc nulls last 
| project TimeGenerated, DisplayName_s, RunName_s, StartTime_t, EndTime_t, Status_s, EnvironmentName_g, FlowName_g

このように、Power Automate クラウド フローの実行履歴が格納されていることが確認できました。

image.png

まとめ

前回の投稿を含め、Power Automate クラウド フローの実行履歴を Azure Log Analytics ワークスペースに格納することができました。これで Azure Monitor のアラート機能を使って、エラーが発生した際にすぐに何らかのアクションを実施することができます。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6