Logic Appsを使ったLog Analyticsログ検索の自動化とメール送信手順
Azure Logic Apps(ロジックアプリ)を使って、Log Analyticsワークスペースに保管したログをクエリ検索し、メールで送信する方法の紹介です。
Logic Appsのリソースを作成と権限割り当て
Logic Appsのリソース作成
Logic Appsののリソースを作成します。
リソース名はlogic-log-01としています。
Logic Appsのリソース作成手順についてはこちらに記載しています。
今回は従量課金(消費)(マルチテナント)のプランで作成しています。
トリガーやアクションの概要についてもこちらで紹介しています。
システム割り当てマネージドIDを設定
Logic Appsでシステム割り当てマネージドIDの設定を行います。
Logic AppsのワークフローからLog Analyticsでログ検索する為の権限を付与します。
有効化とロールの割り当てを追加します。
※ユーザー割り当てマネージドID利用しても同じ事ができます。同様にリソースへのアクセス権限を割り当てます。
Logic Appsでクエリ実行結果をメール送信するワークフローを作成
クエリをスケジュール実行し結果をメール送信します。
ワークフロー作成にあたってはこちらの記事を参考に進めます。
Logic Apps および Power Automate の Azure Monitor Logs コネクタ(MS社公式)
ワークフローの作成にはロジックアプリデザイナーを使っています。
今回は2つの方で確認します。
-
- クエリを実行して結果を一覧表示
- JSONで出力したクエリ実行結果をHTML化します
- クエリを実行して結果を視覚化する
- クエリ実行結果をHTML Tableとして出力します
- クエリを実行して結果を一覧表示
ワークフローの実行スケジュール設定
スケジュール設定には"Schedule"コネクタの"Recurrence"トリガーを利用します。
朝9時30分(日本時間)に実行するように設定ています。
Azure Monitor ログコネクタのクエリを実行して結果を一覧表示するアクションを設定
“Azure Monitor ログ"のコネクタには以下の2つのアクションがあります。
-
- クエリを実行して結果を一覧表示する
- クエリ実行結果をJSON形式で出力します
- クエリを実行して結果を視覚化する
- クエリ実行結果を指定したグラフの種類で出力します
- クエリを実行して結果を一覧表示する
”クエリを実行して結果を一覧表示する”アクションを利用します。
仮想マシンのHeartbeatログの最終取得時間をKQLクエリ実行サンプルとしています。
Log Analyticsワークスペースには事前に準備したlog-test-01を利用しています。
-
- ”クエリを実行して結果を一覧表示する”アクションでの設定内容
- サブスクリプション:Log Analyticsワークスペースのサブスクリプションを選択
- リソースグループ:Log Analyticsワークスペースのリソースグループ
- リソースの種類:Log Analytics Workspace
- クエリ:実行するクエリ
- 時間範囲の種類:時間範囲の設定方法
- Time Range(もしくはFrom To):ログ検索の対象時間範囲
- ”クエリを実行して結果を一覧表示する”アクションでの設定内容
※今回はV2を利用しています。
Heartbeatログについてはこちらで紹介しています。
Heartbeatログを利用すると仮想マシンのLog Analyticsワークスペースの接続状況を確認、監視する事ができます。
Logic Appsのワークフローでの日付に関するアクションについてはこちらにまとめています。
”クエリを実行して結果を一覧表示する V2”アクションの出力はJSON形式
”クエリを実行して結果を一覧表示する V2”アクションはJSON形式で出力されます。
出力結果は、”クエリを実行して結果を一覧表示する V2”アクションまでのワークフローを実行して確認します。
クエリを実行して結果を一覧表示する V2”アクションの出力結果 | |
ワークフローを実行して実行結果を確認します。 ”クエリを実行して結果を一覧表示する V2”のアクション実行結果を確認します。 出力結果がJSON形式になっています。 |
|
|
“Parse Json"アクションを使ってJSON形式の出力結果から値を取得
“Data operations"コネクタの"Parse Json"アクションを利用して、JSON形式の出力結果から値を取得できます。
JSON形式で出力されたKQLクエリ実行結果から値を取得します。
“Parse Json"アクションの設定 | |
検索欄に”Data Operations”を入力します。 “Parse Json"のアクションを選択します。 |
|
“サンプルのペイロードを使用してスキーマを生成する"を選択します。 ”クエリを実行して結果を一覧表示する V2”アクションの実行結果をサンプルのJSONペイロードとして貼り付けます。 完了を選択します。
|
|
Contentは入力値になります。 |
|
“Parse Json"アクションの例です。 |
“Create HTML table"アクションを使ってHTMLテーブルを作成
“Data operations"コネクタの"Create HTML table"アクションを利用して、値からHTMLテーブルを作成できます。
“Create HTML table"アクションの設定 | |
検索欄に”Data Operations”を入力します。 “Create HTML table"のアクションを選択します。 |
|
FromがHTMLテーブル作成の入力値になります。 “Parse JSON"アクションの"Body"を選択します。 |
|
詳細パラメーターでColumnsを選択できます。 Columnsを利用して作成するHTMLをカスタマイズできます。 |
|
SendGridを使ってメール送信
今回はSendGridを使ってメール送信します。
Logic AppsにはSendGridのコネクタが用意されています。
SendGridのコネクタにメール送信のアクションが含まれています。
-
- メール送信設定
- 送信元メールアドレス:SendGridで送信元として認証されているメールアドレス
- 送信先メールアドレス:送信先のメールアドレス
- 件名:メールの件名
- 本文:HTMLテーブルの作成の出力結果を設定
- メール送信設定
Logic AppsのワークフローでSendGridを使ってメール送信する手順やSendGrid API Keyの発行手順についてはこちらで紹介しています。
こちらの手順を参考に設定を進めています。
SendGridを使ってメール送信 | |
検索欄に”メールの送信(V4)”と入力します。 “SendGrid"コネクタの”メールの送信(V4)”アクションを選択します。 メールの送信設定です。 ※SendGridのコネクタ利用時も接続の作成が必要になります。 |
|
完成したワークフロー
作成したワークフローを保存します。
完成したワークフロー | |
完成したワークフローです。 ※アイテムやトリガーの必須項目に未設定項目がある場合、保存できずにエラーとなります。 |
ワークフローを実行してメール受信結果を確認
ワークフローを実行してメール送信結果を確認します。
トリガーを実行して確認します。
ワークフローの実行履歴 | |
ワークフローが正常終了すると、グリーンのチェックマークが表示されます。 | |
受信したメールを確認します。 KQLクエリの実行結果が、メール本文で確認できました。 |
—広告—
”クエリを実行して結果を視覚化する V2”アクションを使ってクエリ実行結果をメール送信
ワークフローを作成
”クエリを実行して結果を視覚化する”のアクションを使っても検索結果をHTMLテーブルとして出力できます。
“Parse JSON"や"Create HTML table"のアクションは必要ありません。
※今回は"クエリを実行して結果を視覚化する V2″を利用しています。
”クエリを実行して結果を視覚化する V2”を利用 | ||
Azure Monitor ログのコネクタで"クエリを実行して結果を視覚化する V2″を選択します。 |
||
Log Analyticsワークスペースのリソースや時間範囲、クエリを設定します。
グラフの種類は"Html Table"を選択します。
|
||
メールの送信設定をします。 |
||
ワークフローを実行してメール受信結果を確認
ワークフローを実行してメール受信結果を確認します。
メール受信結果を確認 | |
メール受信結果を確認します。 |
—広告—
最後に
Logic Appsを使ってLog Analyticsのクエリ実行結果をメール送信する事ができました。
クエリの実行は2種類の方法があり両方利用できる事が分かりました。
今回は実施していませんがクエリ実行結果を加工する事も可能です。
-
- Azure Monitor ログ(コネクタ)
- クエリを実行して結果を一覧表示する
- クエリ実行結果はJSON形式
- HTMLテーブル作成時にクエリ実行結果を加工できる
- クエリを実行して結果を視覚化する
- グラフの種類で指定した内容で出力
- クエリ実行結果をそのまま視覚化するので設定が簡単
- クエリを実行して結果を一覧表示する
- Azure Monitor ログ(コネクタ)
引き続き色々試してみたいと思います。
Logic Appsのワークフローでストレージアカウントへファイル保管する方法についてはこちらで紹介しています。
Logic AppsのワークフローからKey Vaultのシークレット値を参照する手順についてはこちらで紹介しています。
Logic AppsのワークフローでSlackへ連携する方法についてはこちらで紹介しています。
Azure Monitorのアラート通知を例に手順を紹介しています。