Logic AppsのAzure Monitor LogsコネクタでLogAnalyticsのクエリ実行結果をSlackやメール通知

2021-02-11

Logic Appを使ってLog Analyticsのクエリ結果をメールで送信できるという記事がありました。

Logic Apps および Power Automate の Azure Monitor Logs コネクタ(MS社公式)

AzureバックアップセンターがPreviewで提供されていますが、Azureバックアップの実行結果をメールやSlackへ通知出来ないかな~と考えていたので、Logic Appの勉強を兼ねて試してみました。

今回はLogic AppsのAzure Monitor Logsコネクタを使い、Azure バックアップの実行結果をLog Analyticsクエリでリスト化したものをメール送信(Send Grid)やSlackへ送信出来ないかをやっています。

Azure Bcakupの実行結果はRecovery Serviceコンテナーの診断設定でAddonAzureBackupJobsをLog Analyticsワークスペースへ転送する事で確認出来ます。

スポンサーリンク

Azure Logic Appsを作成する

まず最初にAzure Logic Appを作成します。

作成手順

ロジックアプリのメニューで新規作成を選択します

ロジックアップの作成画面で設定を行います。

  • リソースグループ名
  • ロジックアプリ名
  • リージョン
  • ログ分析の有効化
  • Log Analyticsワークスペース

Log Analyticsワークスペースはクエリを実行するワークスペース名を指定します。

確認画面が表示されますので内容を確認します。問題が無ければ作成をクリックします。なお確認画面に設定したLog Analyticsワークスペース名が表示されません(2021年2月11日時点)。ですがARMテンプレートを確認すると設定されている事が確認出来ます。

ロジックアプリデザイナーを使ってロジックアプリを作成する 

ロジックアップデザイナーを使って作成していきます。主な作成手順はこんな感じになります。

      • トリガーの作成
        • 実行スケジュールの作成
      • Azure Monitorログアクションの作成
        • Log Analyticsでのクエリ設定
      • 電子メールアクションの作成
        • SendGridを利用したメール送信設定を作成
作成手順

ロジックアプリデザイナーのメニューを選択すると一般的なトリガーで開始するという項目が表示されます。

今回はスケジュール実行になりますので繰り返しを選択します。

ロジックアプリを実行する繰り返しの間隔、頻度を選択します。

今回は1日を設定します。

実行時間の設定を行います。

Add new parameterを選択し、タイムゾーン、設定時刻(時間)、設定時刻(分)を追加します。

今回は朝8時(JST) に実行されるように設定してます。

これでトリガーの設定は完了です。新しいステップをクリックします。

Log Analyticsの結果を利用する為には、Azure Monitorログを利用します。

検索欄にAzure Monitor ログと入力するとAzure Monitorログのアクションが表示されます。

クエリを実行して結果を視覚化するを選択します。

Azure Monitorログへの接続作成にはAzureへのサインインが必要になります。

サインインをクリックするとAzureへのログイン画面が表示されますのでログインします。

Azureへのログインが完了すると設定画面が表示されます。

  • サブスクリプション
    • 自身のサブスクリプションを選択
  • リソースグループ
    • Log Analyticsワークスペースがあるリソースグループ
  • リソースの種類
    • Log Analytics Workspace
  • 時間範囲
    • Set in query
  • グラフの種類
    • Html Table

クエリに以下の通り入力します。

AddonAzureBackupJobs
| where JobOperation=="Backup"
| where TimeGenerated > ago(1d)
| project
TimeGenerated,
ProtectedContainerUniqueId,
JobFailureCode

これでAzure Monitorログアクションの作成は完了です。新しいステップをクリックします。

今回はSend Grid経由でメール送信してみます。

検索欄にSendgridと入力するとSendgridのアクションが表示されます。

メールの送信(V4) を選択します。

Snedgridの認証設定を入力し作成をクリックします。

※Send GridのAPI KeyはSend Gridの管理画面(API Keys)で確認出来ます。

メール送信の設定を行います。

  • 送信元
    • 送信元アドレス(Send Grid認証済み)
  • 宛先
    • 任意のアドレスを指定
  • 件名
    • 任意のSubjectを指定

メールの本文部分を選択します。

メールの本文でメールの内容部分をクリックするとコンテンツの選択画面が表示されます。

クエリを実行して結果を視覚化するを選択するとリストが表示されますので本文を選択します。

※本文という項目が2つ表示されています。メール受信時に文字列が表示された場合は本文の選択を変えてみましょう。

設定が終わったら保存をクリックします。

これでLogic Appの設定は完了です。

ロジックアプリを実行してみる

Logic Appを実行してみます。

実行手順
Logic Appデザイナーの画面で実行を選択します。
実行が完了すると正常終了したかどうか、処理にかかった時間が表示されます。

受信メールを確認すると実行完了時間やバックアップアイテム名、Jobの実行結果が表示されてました。

Slackでの通知も試してみる

メール送信だけではなくSlackでの通知も可能でしたので併せて試してみました。変更点は2か所です。

      • 【変更点1】アクションをクエリを実行して結果を一覧表示するを選択する
      • 【変更点2】通知のアクションでSlackを選択する

【変更点1】

検索欄にAzure Monitor ログと入力するとAzure Monitorログのアクションが表示されます。

クエリを実行して結果を一覧表示するを選択します。

【変更点2】

検索欄にSlackと入力するとSlackのアクションが表示されます。

投稿メッセージを選択します。

Slackのログイン画面が表示されます。メッセージを送るSlackワークスペースへログインします。

Logic-AppsがSlackへアクセスする為の許可メッセージが表示されます。許可するを選択します。

投稿するチャネルを選択します。

次にメッセージテキストの欄をクリックします。

送信を行うコンテンツが表示されますので、送信する項目を選択します。

  • TimeGenerated
  • ProtectedContainerUniqueId
  • JobFailureCode

※クエリの内容によって表示される項目は異なります。

設定が完了するとこんな感じで表示されます。クエリデザイナーで保存をクリックします。これで設定は完了です。

同様に実行してみるとSlackに通知される事が分かります。

同様にLogic Appsを利用してAzure MonitorのメトリックアラートをSlackに通知してみました。