🐈
Log Analyticsでロードバランサーのアクセス状況を可視化する
はじめに
Log Analyticsは、Google Cloudのログを収集・分析するためのツールです。
先日、エラーの調査の一環としてロードバランサーのアクセスログの分析に利用する機会があったので、調べた内容を備忘録としてまとめました!
アクセス状況の調査
分析対象フィールド
今回はクライアント毎のアクセス状況の調査が目的なため主に以下のログフィールドを利用しました。
LogEntry
一般的なログフィールド
-
severity: ログの重大度 -
timestamp: イベントが発生した時刻
httpRequest
HTTPリクエストに関する情報
-
status: HTTPステータスコード -
requestUrl: リクエストURL -
remoteIp: クライアントのIPアドレス
調査内容
- クライアント毎のリクエスト数の調査
- クライアント毎のリクエスト頻度の調査
- クライアント毎のHTTPステータスコード分布の調査
クライアント毎のリクエスト数の調査
まずは、クライアント毎にリクエスト数を集計して大量にリクエストが送信されていないか確認しました。
サンプルクエリ
SELECT
timestamp,
severity,
http_request.status,
http_request.remote_ip,
http_request.request_url
FROM
`ログバケット`
WHERE
JSON_VALUE(resource.labels.url_map_name)="URLマップ名"
コンソールのログ分析画面からクエリを実行し、列をremote_ipの上限10にしてグラフを確認するとアクセス数上位のクライアントを視覚化することができました。

クライアント毎のリクエスト頻度の調査
次に、アクセス数上位のクライアントに対しリクエストの頻度を調査してみます。
サンプルクエリ
SELECT
timestamp,
severity,
http_request.status,
http_request.remote_ip,
http_request.request_url
FROM
`ログバケット`
WHERE
JSON_VALUE(resource.labels.url_map_name)="URLマップ名"
AND http_request.remote_ip="IPアドレス"
列をtimestampにしてグラフを確認するとアクセス頻度を視覚化することができました。
調査対象からは5分間隔でアクセスされていることが確認できます。

クライアント毎のHTTPステータスコード分布の調査
最後にクライアント毎のリクエストに対するHTTPステータスコードの分布を調査してみます。
先ほどと同じクエリを使用します。
サンプルクエリ
SELECT
timestamp,
severity,
http_request.status,
http_request.remote_ip,
http_request.request_url
FROM
`ログバケット`
WHERE
JSON_VALUE(resource.labels.url_map_name)="URLマップ名"
AND http_request.remote_ip="IPアドレス"
列をstatusにしてグラフを確認するとステータスコードの分布を視覚化することができました。
画像では少し見えづらいですが、200 OKの他に401エラーが数件発生していることが確認できます。

調査結果
一連の調査により、以下を確認することができました。
- アクセス数上位のクライアント
- アクセス頻度が高いクライアント
- クライアント別のステータスコード分布
まとめ
今回はLog Analyticsを使用して、ロードバランサーのアクセスログを分析してみました。
簡単にログの内容を可視化できるため、問題の全体像を把握しながらエラー調査を進める際に非常に便利なツールだと実感しました!
Discussion