Azure Application GatewayのアクセスログをLog Analyticsで確認する
Azure Application GatewayのAccess LogをLog Analyticsで確認してみました。
Azure Application GatewayのアクセスログをLog Analyticsに転送することにより確認することが出来ます。
Log Analyticsへの転送設定はApplication Gatewayの診断設定で実施します。
今回はAzure Application Gatewayの診断設定からLog Analyticsでのログ検索まで一連の流れを試してみました。
Application Gateway作成手順はこちら。
Application GatewayのAccess Logで確認できる内容
取得されるログの情報を抜粋してみます。このように一般的なLogで取得されるような値は取得可能です。(V1とV2で若干異なるかもですが。)
項目名 | 実際に取得される値 | |
TimeGenerated | 2019-07-14T10:36:57Z | ログの時間 |
ResourceId | APGWのリソースID | APGWのリソースID |
ResourceGroup | リソースグループ名 | APGWのリソースグループ名 |
clientIP_s | 66.XX.XX.XX | アクセス元のIPアドレス |
httpMethod_s | GET | HTTPアクセスメソッド |
requestUri_s | / | アクセスURL |
userAgent_s | Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/75.0.3770.100+Safari/537.36 | アクセス元のUser Agent |
httpStatus_d | 200 | HTTP応答ステータスコード |
httpVersion_s | HTTP/1.1 | HTTPバージョン |
host_s | www.xxxx-xxxx.com | アクセスHost名 |
Application Gateway からLog AnalyticsへのLog転送設定方法
Application Gateway のAccess Log取得設定は診断設定で実施します。
アプリケーションゲートウェイのメニューで診断設定を選択します。診断設定を追加するクリックします。
診断設定の画面が表示されます。
転送するログを選択します。ApplicationGatewayAccessLogがアクセスログに該当します。なお、ApplicationGatewayFirewallLogはWAF利用時のログになります。
ApplicationGatewayAccessLog |
アプリケーションゲートウェイにアクセスされたログ アクセス時間や呼び出し元の IP、要求された URL、ステータスコード等が対象になります |
ApplicationGatewayPerformanceLog |
Application Gateway のインスタンスの実行状況を示すログ 処理された要求の総数、スループット (バイト単位)、失敗した要求の数、正常および異常なバックエンド インスタンスの数などを表示 |
ApplicationGatewayFirewallLog |
Web アプリケーション ファイアウォールのログ WAFでブロックされたのか等の項目を表示 |
診断設定名を入力、転送先のLogAnalyticsワークスペースを選択し保存します。
保存すれば設定は完了です。診断設定から実際のログ収集開始までは5分~10分程度かかります。
Application GatewayのAccess LogをLog Analyticsで確認してみた
アクセスログを確認してみましょう。
Application Gatewayのアクセスログを検索する
アプリケーションゲートウェイのメニューでログという項目をクリックします。
診断設定で指定したLog Analyticsワークスペースが表示されます。クエリ入力欄に入力する事でログ検索ができます。
実際にAccess Logを検索するにはクエリを記述し実施します。Application Gatewayのログの場合はCategoryに診断設定でチェックした項目名(ApplicationGatewayAccessLog)を指定します。
AzureDiagnostics | where Category == “ApplicationGatewayAccessLog" |
アクセスログを時間指定して検索する
時間指定を入れない場合の検索時間は24時間になりますが、明示的に指定した場合はこんな感じになります。1dでも24時間と同じになります。
AzureDiagnostics | where TimeGenerated > ago(24h) | where Category == “ApplicationGatewayAccessLog" |
またこの時間というような場合はこんな感じで取得出来ます。日本時間(UTC+9時間)で指定するようにlocaltimestampという項目を追加しています。
AzureDiagnostics | where Category contains “ApplicationGatewayAccessLog" | extend localTimestamp = TimeGenerated + 9h | where localTimestamp between(datetime(“2021-02-15 9:00:00") .. datetime(“2021-02-15 10:00:00")) |
Application GatewayのAccess Logをアクセス元IP単位で集計する。
アクセス元IPで集計するような事も可能です。
AzureDiagnostics | where Category == “ApplicationGatewayAccessLog" | summarize total_hits = count() by clientIP_s |
Application GatewayのAccess LogをアクセスURLで集計してみる
アクセスログからどのURLにどの程度アクセスがあったのかといったような事もできます。
AzureDiagnostics | where Category == “ApplicationGatewayAccessLog" | summarize count() by requestUri_s |
Application GatewayのFirewall LogをLog Analyticsで確認してみた
ファイアーウォールログを確認してみましょう。
ApplicationGatewayFirewallLogを確認する
ApplicationGatewayFirewallLogの確認もアクセスログと同様の方法で出来ます。
AzureDiagnostics | where Category == “ApplicationGatewayFirewallLog" |
ApplicationGatewayFirewallLogを使ってWAFでどれだけ検知されているのか確認する
検知モードで検知されたアクセスが、どのIPからアクセスがどれだけあったのかと言ったような事も確認できます。
AzureDiagnostics |
今回は基本的な設定のみですが、色々加工ができそうです。今後色々試してみたい所です。
Azure Front Doorでのログ確認はこちら。
バックエンド側でのアクセスログについてはこちら。