Logic Apps使ってLog Analyticsのログ検索結果をストレージアカウントに保管
Log Analyticsでログ検索(KQLクエリ)を定期的に実行して結果を保管出来ないかなぁと言う事で試してみました。
Azure Logic Apps(ロジックアプリ)を使うと定期的にLog Analytisでクエリ実行させることが出来ます。
こちらの記事ではクエリ実行結果をメール送信していますが、ストレージアカウントにファイルとして保管する事も出来ます。
今回はLogic Apps(ロジックアプリ)のAzure BLOB Storageコネクタを使いクエリ実行結果をストレージアカウントに保管してみました。
-
- 実施内容
- ワークフローはスケジュール実行する
- VM Insights(分析情報)を利用する
- Azure VM(仮想マシン)のCPU使用率(24時間での最大値)をクエリで取得する
- クエリ実行結果のCSVファイルとして保管する
- 保管先はストレージアカウントのBLOBコンテナーとする
- ファイル名には日付を付与する
- 実施内容
Azureリソースを作成
Azure Logic Apps(ロジックアプリ)とストレージアカウントのリソースを作成します。
検索対象にはVM Insights(分析情報)を利用します。
VM Insights(分析情報)設定
今回はAzure VM(仮想マシン)で設定したVM Insights(分析情報)のリソース情報を利用します。
24時間で最大のCPU使用率をAzure VM(仮想マシン)単位でクエリでリスト化します。
VM Insightsの設定やLog Analyticsでのクエリ実行についてはこちらを参照願います。
Logic Apps(ロジックアプリ)作成
ワークフローを実行する為にLogic Apps(ロジックアプリ)を作成します。
確認画面で内容を確認し問題が無ければ作成します。
マネージドID設定
今回はストレージアカウント(BLOBコンテナー)コネクタ認証にはシステム割り当てマネージドIDを利用します。
※接続認証にはAccess Key(アクセスキー)、Azure AD Integrated(Azure AD認証)も利用可能です。
ストレージアカウント作成
ファイル保管先となるストレージアカウントを作成します。
検証目的の設定としています。環境にあわせて設定します。
ストレージアカウント作成 | |
ストレージアカウントのメニューで追加を選択します。 | ![]() |
検証目的ですので、パフォーマンスはStandard、冗長性はローカル冗長ストレージ(LRS)を選択しています。 | ![]() |
ネットワークアクセスは、”選択した仮想ネットワークとアドレスからのパブリックアクセスを有効にする”を選択します。 | ![]() |
検証目的なので論理的な削除はすべて無効にしています。(通常利用時は有効にします。) | ![]() |
これでストレージアカウントの作成は完了です。
ストレージアカウントでネットワーク設定
ストレージアカウントでLogic Apps(ロジックアプリ)からのアクセス許可設定します。
認証にはシステムマネージドIDを利用します。リソースインスタンスを設定します。
確認時にストレージ ブラウザーを利用しますので自身のIPアドレスからのアクセスを許可します。
ネットワーク設定 | |
ファイアウォールでクライアントIPアドレス許可にチェックを入れてます。 リソースインスタンスで今回利用するLogic Apps(ロジックアプリ)のインスタンスを指定します。 |
![]() |
BLOBコンテナー作成
ファイル保管先となるBLOBコンテナーを作成します。
BLOBコンテナー作成 | |
ストレージ ブラウザーでコンテナーを追加します。 今回は”logstorage”と言う名前で作成でしています。 |
![]() |
コンテナーが追加されている事が確認出来ます。 | ![]() |
これでワークフロー作成前の事前設定は終わりになります。
クエリ実行をスケジュール化、結果をBLOBコンテナーに保管
Log Analyticsでのクエリ実行をスケジュール化します。
クエリ実行結果をストレージアカウントのBLOBコンテナーに保管します。
ワークフローのスケジュール実行設定からJSONの解析まで
スケジュール実行設定からクエリ実行、値抽出までのワークフローを作成します。
-
- トリガー
- 繰り返し
- 日本時間朝9時にスケジュール実行
- 繰り返し
- アクション
- クエリを実行して結果を一覧表示する
- VM Insightsのログから最大CPU使用率をAzure VM(仮想マシン)単位でリスト化
- JSONの解析
- クエリ実行結果から値を抽出
- サンプルペイロードは”クエリを実行して結果を一覧表示する”アクションの出力結果を利用
- クエリを実行して結果を一覧表示する
- トリガー
詳細の説明についてはこちらも併せて参照願います。
Log Analyticsのクエリ(KQL)についてはこちらに纏めています。
CSVテーブルの作成
CSVテーブルの作成を利用してJSONの解析結果をCSV形式に変換します。
CSVテーブルの作成 | |
検索欄に”CSVテーブルの作成”と入力します。”CSVテーブルの作成”を選択します。 | ![]() |
開始が入力値になります。 JSONの解析の本文を選択します。 |
![]() |
開始と列の設定を確認します。 列は自動としています。 |
![]() |
日付を変数として設定
ファイル名に指定する日付を設定します。
設定日付は当日日付(UTC)としています。
日付のフォーマットはYY(年)-MM(月)-DD(日)としています。
Logic Apps(ロジックアプリ)での日付の扱いについてはこちらに纏めています。
変数の初期化 | |
変数の初期化のアクションを使います。 | ![]() |
変数名は”file-name-date”としえます。 値(式)は”formatDateTime(utcNow(),’yy-MM-dd’)”としています。 |
![]() |
設定が出来ている事を確認します。 | ![]() |
Azure BLOB Storageコネクタを利用する
ストレージアカウントのBLOBコンテナーを操作する場合には、Azure BLOB Storageコネクタ利用します。
ファイル保管する場合は”BLOBを作成する”のアクションを利用します。
これで”BLOBを作成する”アクション設定が終わりです。
ワークフローの保存
設定が終わったらワークフロー保存します。
ワークフローの保存 | |
1つのトリガーと5つのアクションが定義されています。確認後保存します。 ※必須項目に未設定項目があると保存時にエラーになります。 |
![]() |
BLOBコンテナーをへのファイル保管結果を確認
ワークフローを実行
ワークフローを実行します。
クエリ実行結果がBLOBコンテナーに保管されるか確認します。
”トリガーの実行”を使うとワークフローを実行できます。
トリガーの実行 | |
”トリガーの実行”の”実行”を選択します。 | ![]() |
実行完了するとグリーンのチェックマークが表示されます。 | ![]() |
ストレージアカウントでファイルを確認します。 |
![]() |
作成されたファイルをダウンロードして確認します。 クエリ実行結果がCSV形式で書き込みされている事が確認出来ます。 |
![]() |
スケジュール実行結果を確認
翌日にスケジュール実行結果を確認します。
スケジュール実行結果確認 | |
Logic Apps(ロジックアプリ)で確認します。 状態が成功、実行時間が朝9時になっています。 |
![]() |
ストレージアカウントでファイルを確認します。 BLOBコンテナー内にファイルが出来ている事が確認出来ます。 |
![]() |
最後に
Azure Logic Apps(ロジックアプリ)を使ってLogAnalyticsのクエリ実行結果をストレージアカウント(BLOBコンテナー)にファイル保管出来る事が確認出来ました。
月次で確認したいクエリをスケジュール実行してBLOBコンテナーに保管と言ったことが自動化出来てとても便利かと思いました。
今後も引き続き色々試してみたいと思います。