Azureアクテビティログ監視をAzure MonitorとLog Analyticsでやってみた

Azureプラットフォーム上でAzure VMを作成、起動、削除した等の作業が記録されるログとしてアクテビティログがあります。

    • Azure アクテビティログ

https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/activity-log

アクテビティログで収集される内容はマイクロソフト様のサイトに記載を参照して頂きたいのですが、アクテビティログについても診断設定を使ってLog Analyticsでのデータ収集が可能です。

Log Analyticsデータ収集が可能という事は、Azure Monitorでの監視も可能なんじゃないか?という事で試してみました。

今回は、サンプルとして15分間の間に1人のユーザーがAzure VMを2台作成した場合にアラートを上げるような設定を試してみました。

      • アクテビティログの診断設定
      • Log Analyticsワークスペースでアクテビティログの確認
      • Azure Monitorでの監視設定

Log Analyticsのワークスペース作成はこちらの記事に纏めております。

Log Analyticsワークスペースを複数まとめてデプロイ

1.アクテビティログをLog Analyticsへ転送する為に診断設定をする

アクテビティログを事前に準備したLog Analyticsワークスペースへ転送する設定を行います。Log Analyticsへの転送は診断設定で行います。

1)アクテビティログのメニューで診断設定を選択します。

2)診断設定の画面が表示されますので、診断設定を追加するを選択します。

3)診断設定画面が表示されます。Azure VM作成を収集するのであれば、以下の項目にチェックをします。(今回はお試しなのですべてにチェックをつけています。)

      • カテゴリの詳細:Administrative(Log)にチェック
      • 宛先の詳細:Log Analyiticsへの送信にチェック
      • Log Analytics ワークスペース:事前に準備したLog Analyticsワークスペースを指定

10分ほどすると、Log Analyticsでアクテビティログの確認ができるようになります。

2.Log Analyticsでアクテビティログを確認してみる

Log Analyticsのワークスペースでログの確認をしてみます。

1)Azure PortalのメニューでLog Analyticsを選択します。

2)Log Analyticsでログを選択すると下記画面が表示されますので、クエリ欄に下記の通り入力し、実行をクリックします。これですべてのアクテビティログが表示されます。

AzureActivity

アクテビティログが結果として表示される事が確認できました。

実際に、Azure VMを作成した際のログを確認すると、以下のログが出力される事が分かりました。

      • ActivitySubstatusValue :Created
      • OperationNameValue:MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE
      • Caller:作成者のアカウント

こちらの情報をもとにAzure Monitorでの監視設定を行ってみます。

3.Azure MonitorでLog Analyticsを使ったアクテビティログの監視設定をしてみる

まず、Log Analyticsの画面で実際のクエリを作成してみます。特定のアカウントで15分以内にAzure VMが2回以上作成された場合にアラートを発生させる設定としてみました。

    • Logの検索条件
      • ActivitySubstatusValue :Created
      • OperationNameValue:MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE
    • 検出条件 
      • Caller:同じアカウントの場合
      • 検索時間:15分
      • 回数:2回以上

上記条件を実際にクエリとして記載するとこんな感じになりました。

AzureActivity

| where ActivitySubstatusValue == “Created”
| where TimeGenerated > ago(15m)
| summarize countif(OperationNameValue == “MICROSOFT.COMPUTE/VIRTUALMACHINES/WRITE”) by Caller
| where countif_ > 1

この条件でAzure Monitorの設定を行います。今回はLog Analyticsの画面から設定を行ってみます。

1)Log Analyticsのクエリ画面に新しいアラートルールという設定がありますので、こちらをクリックします。

2)Azure Monitorのアラートルールの作成画面に遷移します。スコープはLog Analyticsワークスペース名が設定されていますので、条件を選択し設定を行います。

3)シグナル ロジックの構成画面が表示されますので、アラートロジックと評価基準の設定を行います。今回は15分単位での設定としています。

    • アラートロジック
      • 基準;結果の数
      • 演算子:次の値より大きい
      • しきい値:0
    • 評価基準
      • 期間:15
      • 頻度:15

注意点ですがしきい値は0より大きいになります。該当のクエリの結果が1行でも表示されていた場合にアラートとして検出するようにしています。

4)アクショングループの設定をクリックし、アクショングループを適時選択します。

アラート通知をSMSで行うような設定も行っております。興味がある方はぜひ一緒に見て下さい。

Azure Monitorのアラート通知をSMSで行ってみた

5)アラートルールの詳細でアラートルール名(必要に応じてその他項目)を設定し、完了したらアラートルールの作成をクリックします。

これでアラートルールの作成は終了です。

4.Azure VM作成をしてアクテビティログアラートを発生させてみた

実際にAzure VMを作成しアラート発生させてみました。

こんな感じでアラートを発生させる事が出来ました。

      • 件名:Alert Notification “VM-Create” raised for “Log Analyticsワークスペース名”
      • Name:VM-Create
      • Severity:3
      • Resource:Log Analyticsワークスペース名
      • Search interval start time:時刻
      • Search interval duration 15 min
      • Caller :作成者アカウント名
      • countif_ 2

今回はサンプルとして作成してみましたが、適切な情報が出力されるように改善を加えていきたい所です。