Azure Application GatewayのアクセスログをLog Analyticsで確認する
Azure Application Gateway(アプリケーションゲートウェイ)はWebトラフィックを負荷分散を行うAzureサービスです。
アプリケーションゲートウェイのアクセスログは出力して見る事が出来ます。
アクセスログをAzure Monitorログ(Log Analytics)に転送することにより確認することが出来ます。
Azure Monitorログ(Log Analytics)への転送設定はアプリケーションゲートウェイの診断設定で実施します。
今回はアプリケーションゲートウェイのログ概要纏め、診断設定、Azure Monitorログ(Log Analytics)でのログ検索までをやってみました。
アプリケーションゲートウェイに割り当てたAzure Web アプリケーション ファイアウォール(WAF)ログについても確認してみました。
アプリケーションゲートウェイの作成手順はこちらに纏めています。併せて見て頂けると大変有難いです。
※2022年7月にv2を含むように加筆修正を更新しました。
Application Gateway(アプリケーションゲートウェイ)で取得出来るログ
アプリケーションゲートウェイではアクセスログはもちろんですが、それ以外のログも取得する事が出来ます。
Azure Application Gateway データの監視のリファレンス
Activity Log(アクテビティログ)
診断設定した規定でアクテビティログが収集されます。
Activity Log | |
Activitylog | 対象のアプリケーションゲートウェイのリソース操作等に関するアクテビティログがすべて収集されます。 |
Log Analyticsワークスペース画面サンプル(Cerateを条件に検索) |
Azure Diagnostics(アプリケーションゲートウェイのアクセス関連ログ)
アプリケーションゲートウェイのアクセスに関するログが収集されます。
v1ではメトリックに関する情報も収取されます。
Azure Diagnostics | |
ApplicationGatewayAccessLog | アプリケーションゲートウェイへのアクセスログ。 アクセス時間や呼び出し元の IP、要求されたURL、ステータスコード、バックエンド転送先等トラフィック処理に関する内容が記録されます。 |
ApplicationGatewayPerformanceLog | v1のみで利用されます。v2ではAllMetricsに含まれます。 リソースのパフォーマンス状況だけではなく、バックエンドの正常性等の情報も含まれます。 |
ApplicationGatewayFirewallLog | WAFに関するログ。 トラフィックの中でWAFルールにマッチしたやブロックされた内容のログが出力されます。 |
Log Analyticsワークスペース画面サンプル(ApplicationGatewayAccessLogのサンプル) |
AllMetrics(メトリック)
アプリケーションゲートウェイのパフォーマンスに関する情報が取得されます。
WEBサイトの応答速度が遅い場合などに確認するとバックエンドから応答速度やトラフィックサイズ等の切り分けする事が出来ます。
Azure Application Gateway データの監視のリファレンス(Application Gateway V2 のメトリック)
All Metrics | |
AllMetrics | パフォーマンス情報(処理された要求の総数、スループット (バイト単位)、応答速度等)が確認出来ます。 パフォーマンス情報にはバックエンド、フロントエンドそれぞれの通信に関する内容が含まれます。 バックエンド正常性等の情報メトリックに含まれます。 |
Log Analyticsワークスペース画面サンプル(抜粋) |
Application Gateway(アプリケーションゲートウェイ)のアクセスログ出力項目
アクセスログの抜粋です。
詳細内容は公式サイトに記述がありますが、詳細な情報が取得出来る事が分かります。
Application Gateway のバックエンドの正常性および診断ログ(Application Gateway Standard および WAF SKU (v1) の場合)
Application Gateway と WAF v2 SKU の場合
※クエリ実行結果はproject句を利用して表示項目を抜粋てしています。
今回利用したアプリケーションゲートウェイはこちらで構築したものを利用しています。
Application Gateway(アプリケーションゲートウェイ)の診断設定を使ってログ取得
アプリケーションゲートウェイの診断設定を使ってAzure Monitorログ(Log Analyticsワークスペース)へログ転送設定します。
※Log Analyticsワークスペースはアプリケーションゲートウェイと同じ地域のもの使用します。
※ログ転送先にはストレージアカウント、イベントハブなども利用可能です。
Application Gateway(アプリケーションゲートウェイ)のアクセスログをクエリ(KQLで確認)
アクセスログを確認してみます。
アクセスログを検索
Log Analyticsワークスペースでクエリ(KQL)を使って検索します。
クエリ実行結果はCSVとして出力できる
クエリ実行結果はCSV形式で出力出来ます。
診断設定 | |
クエリ実行結果のログはエクスポート使ってCSV等へのエクスポートが出来ます。 | ![]() |
アクセスログを時間指定して検索する
時間指定を入れない場合の検索時間は24時間になります。
明示的に指定したい場合はago(時間)を使います。
AzureDiagnostics | where TimeGenerated > ago(24h) | where Category == “ApplicationGatewayAccessLog" |
この時間帯と言う場合はbetweenを使って時間指定します。
日本時間(UTC+9時間)で指定するようにlocaltimestampという項目を追加した場合のサンプルです。
併せてorder by localTimestampで日本時間順に並び替えています。
AzureDiagnostics | where Category contains “ApplicationGatewayAccessLog" | extend localTimestamp = TimeGenerated + 9h | where localTimestamp between(datetime(“2022-07-15 15:00:00") .. datetime(“2022-07-15 16:00:00")) | order by localTimestamp |
アクセス元IP単位で集計
アクセス元IPで集計する事も可能です。
AzureDiagnostics | where Category == “ApplicationGatewayAccessLog" | summarize total_hits = count() by clientIP_s |
アクセスパス(URI)で集計
アクセスログからどのURIにどの程度アクセスがあったのかといった事も集計出来ます。
AzureDiagnostics | where Category == “ApplicationGatewayAccessLog" | summarize count() by requestUri_s |
IPアドレスからロケーション情報を取得し国別アクセス集計と言った事も可能です。
手順についてはこちらに纏めています。
ーーーー
Azure Web アプリケーション ファイアウォール(WAF)ログを確認する
WAFログについても確認してみます。
WAFの設定手順についてはこちらで纏めています。
併せて見て頂けると大変有難いです。
WAFログはカテゴリがApplicationGatewayFirewallLogとなる
アクセスログと同様にAzureDiagnosticsに含まれます。
カテゴリがApplicationGatewayFirewallLogの場合がWAFログとなります。
AzureDiagnostics | where Category == “ApplicationGatewayFirewallLog" |
WAFログの出力項目
ApplicationGatewayFirewallLogとして出力されるWAFログの抜粋です。
各出力項目の詳細は公式サイトを確認願います。
Azure Web アプリケーション ファイアウォールのリソース ログ(ファイアウォール ログ)
項目名 | 実際に取得される値 | 説明 |
TimeGenerated | 2022/7/15 5:17:00.000 | ログの時間 |
Category | ApplicationGatewayFirewallLog | ログ種別 |
Resource | APGW-TEST | アプリケーションゲートウェイ名(リソース名) |
host_s | www.tama-negi.com XXX.XXX.XXX.XXX(フロントエンドのIP) |
アクセスされたホスト名もしくはIPアドレス |
clientIP_s | XXX.XXX.XXX.XXX(アクセス元のIPアドレス) | アクセス元のIPアドレス |
action_s | Blocked,Detected,Matched,Allowed | WAFルールの処理内容 アクセス拒否された場合はBlockedと表示されます |
ruleSetType_s | OWASP_CRS,Custom | ルール セットの種類 カスタムルールの場合はCustomと表示されます |
ruleSetVersion_s | 3.1.0 | 使用されるルール セットのバージョン。 |
ruleId_s | 920350,testapgwwafblock01 | イベントの発生起因となっているWAFのルール ID カスタムルールの場合はルール名が表示されます |
Message | Host header is a numeric IP address | ルールの概要メッセージ |
details_message_s | Warning. Pattern match \"^[\\d.:]+$\" at REQUEST_HEADERS:Host …. | ルールの詳細内容 |
policyScope_s | Listener | ポリシーのスコープ |
policyScopeName_s | APGW-TEST-Listener | 適用されているスコープ名 |
![]() |
※クエリ実行結果はproject句を利用して表示項目を抜粋てしています。
WAFでどれだけ検知されているのか確認する
検知モードで検知されたアクセスが、どのIPからアクセスがどれだけあったのかと言ったような事も確認できます。
クエリのサンプルは公式サイトで確認出来ます。
Log Analytics を使用して Application Gateway Web アプリケーション ファイアウォール (WAF) のログを調べる
AzureDiagnostics |
最後に
今回はアプリケーションゲートウェイ関連のログについて纏めてみました。
アクセスログを見る事でサイトのパフォーマンスやアクセス分析をすることも出来ます。
またWAFログでは挙動も確認出来る為不正アクセスのアドレス抽出などと言う事も出来ます。
定期的にクエリを実行させる事でレポートを定期的に送付することなども出来そうです。
今後も色々試してみたいと思います。
Azure Front Doorでのログ確認はこちら。
バックエンド側でのApacheアクセスログについてはこちら。