Classic Load Balancer (CLB) のアクセスログ機能は、レイヤー 7 負荷分散用の機能です。Simple Log Service (SLS) と統合することで、ビジネス開発、テスト、ユーザー行動分析のためのログ分析とトラブルシューティングの効率を向上させます。
概要
CLB アクセスログ
CLB のアクセスログ機能は、CLB インスタンスに送信されたすべてのリクエストに関する詳細情報 (リクエスト時間、クライアント IP アドレス、レイテンシー、リクエストパス、サーバーレスポンスなど) を記録します。公開エントリポイントとして、CLB は大量のリクエストを処理します。アクセスログを使用すると、ユーザーの行動を分析し、トラフィックの分散を把握し、トラブルシューティングができます。
アクセスログ機能を有効にすると、SLS の Logstore にアクセスログを保存、収集、分析できます。アクセスログの設定はいつでも無効にできます。
CLB のアクセスログ機能は無料ですが、SLS は有料です。詳細については、「Simple Log Service の課金の概要」をご参照ください。
-
レイヤー 4 リスナー (TCP/UDP) は、アクセスログ機能をサポートしていません。アクセスログは、レイヤー 7 (HTTP/HTTPS) のリクエスト情報のみを記録します。
-
HTTP ヘッダー値に
||が含まれていないことを確認してください。含まれている場合、解析中にログフィールドがずれる可能性があります。
制限事項
アクセスログ機能は、CLB のレイヤー 7 負荷分散 (HTTP および HTTPS リスナー) でのみ利用できます。
アクセスログは主にレイヤー 7 のリクエスト情報を記録するため、この機能はレイヤー 4 リスナー (TCP/UDP) ではサポートされていません。
前提条件
-
CLB インスタンスを作成していること。
-
vServer グループを作成し、バックエンドサーバーを vServer グループに追加し、バックエンドサーバーにアプリケーションをデプロイしていること。
-
CLB インスタンスに HTTP リスナー または HTTPS リスナー を設定していること。
-
SLS を有効化していること。
アクセスログの設定
- CLBコンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
上部メニューで、CLB インスタンスがデプロイされている [リージョン] を選択します。
-
この機能を初めて使用する場合は、権限付与 をクリックします。クラウドリソースへのアクセスを許可 ページで、同意 をクリックします。
説明この承認は初回のみ必要です。
RAM ユーザーの場合、プライマリ Alibaba Cloud アカウントがまず必要な権限を付与する必要があります。詳細については、「CLB のアクセスログ機能を使用するための RAM ユーザーの承認」をご参照ください。
-
アクセスログ (レイヤー 7) ページで、対象の CLB インスタンスを見つけ、操作 列の ロギングの設定 をクリックします。
-
ロギングの設定 パネルで、プロジェクト と Logstore を設定し、OK をクリックします。
-
[プロジェクト]:プロジェクトは、リソースの分離と制御のために使用される SLS のリソース管理ユニットです。アプリケーションごとに異なるプロジェクトを使用することを推奨します。
-
[Logstore]:Logstore は、SLS でログデータを収集、保存、クエリするためのユニットです。同じアプリケーション内の異なるタイプのログには、別々の Logstore を作成することを推奨します。
-
[既存の Logstore の選択]:これにより、選択した Logstore 用にプリセットされた分析ダッシュボードがデフォルトで有効になります。Logstore にインデックスがすでに設定されている場合、既存のインデックス設定は上書きされます。
-
説明プロジェクトが CLB インスタンスと同じリージョンにあり、その名前がグローバルに一意であることを確認してください。
CLB のアクセスログを設定した後、SLS で以下のフィールドを使用してログ情報をクエリおよび取得できます。
パラメーター
説明
body_bytes_sent
クライアントに送信された HTTP 本文のサイズ (バイト単位) です。
client_ip
クライアントの IP アドレスです。
client_port
リクエストを送信したクライアントのポートです。
host
ホストは、次のソースから、この順序で最初に見つかったものが使用されます:リクエストパラメーター、Host ヘッダー、リクエストを処理するバックエンドサーバーの IP アドレス。
http_host
リクエストの Host ヘッダーの内容です。
http_referer
HTTP リクエストの Referer ヘッダーです。
http_user_agent
HTTP リクエストの User-Agent ヘッダーです。
http_x_forwarded_for
HTTP リクエストの X-Forwarded-For ヘッダーです。
http_x_real_ip
HTTP リクエストの X-Real-IP ヘッダーです。
read_request_time
CLB がリクエストを読み取るのにかかる時間 (ミリ秒) です。
request_length
開始行、HTTP ヘッダー、HTTP 本文を含むリクエストの長さです。
request_method
リクエストメソッドです。
request_time
CLB がリクエストの最初のバイトを受信してから、レスポンスの最後のバイトを送信するまでの時間 (秒) です。
request_uri
CLB が受信したリクエストの URI です。
scheme
リクエストスキームです。有効な値は http および https です。
server_protocol
CLB が受信したリクエストの HTTP バージョン (HTTP/1.0 や HTTP/1.1 など) です。
slb_vport
CLB のリスナーポートです。
slbid
CLB インスタンスの ID です。
ssl_cipher
SSL 接続の確立に使用される暗号スイート (ECDHE-RSA-AES128-GCM-SHA256 など) です。
ssl_protocol
SSL 接続の確立に使用されるプロトコル (TLSv1.2 など) です。
status
CLB からのレスポンスのステータスコードです。
tcpinfo_rtt
クライアントの TCP 接続のラウンドトリップ時間 (RTT) (マイクロ秒) です。
time
ログエントリが記録された時刻です。
upstream_addr
バックエンドサーバーの IP アドレスとポートです。
upstream_response_time
バックエンドサーバーへの接続確立後、レスポンスを受信して接続が閉じるまでの時間 (秒) です。
upstream_status
バックエンドサーバーから CLB が受信するレスポンスのステータスコードです。
vip_addr
仮想 IP アドレス (VIP) です。
write_response_time
CLB がレスポンスを書き込むのにかかる時間 (ミリ秒) です。
-
アクセスログのクエリ
アクセスログ機能を設定した後、SLS コンソールでログをクエリできます。
- CLBコンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
上部メニューで、CLB インスタンスがデプロイされている [リージョン] を選択します。
-
アクセスログ (レイヤー 7) ページで、対象のインスタンスを見つけ、操作 列の ログの表示 をクリックします。SLS コンソールにリダイレクトされます。
-
SLS が設定されると、CLB インスタンスにアクセスしたすべてのクライアントのログエントリを表示できます。
-
SQL 文を入力して、特定のアクセスログをクエリします。
たとえば、次の SQL 文を実行して上位 20 のクライアントを見つけます。この結果は、トラフィックソースの分析やビジネス上の意思決定に役立ちます。
* | select http_user_agent, count(*) as pv group by http_user_agent order by pv desc limit 20たとえば、次の SQL 文を実行して、ソース IP アドレスとレスポンスステータスコードでログをフィルタリングし、特定の IP アドレス範囲からのアクセスリクエストをクエリします。
* | select * where client_ip like '172.17.%' and status=200
異常なリクエストの特定
CLB アクセスログには、CLB インスタンスを通過するすべての外部リクエストが記録されます。ログに不明なソースからのリクエストが見つかった場合は、次の主要なフィールドを使用して、それらが異常な外部リクエストであるかどうかを判断し、適切な保護措置を講じることができます。
主要なフィールド
次のログフィールドを組み合わせて、リクエストが異常なクライアントからのものかどうかを判断します。
-
client_ip:リクエストを送信したクライアントの IP アドレスです。IP アドレスがお客様のビジネスシステムまたは Alibaba Cloud の内部 IP アドレス範囲に属していない場合、それは外部クライアントからのリクエストです。IP 検索ツールを使用して、ソースをさらに確認できます。 -
request_uri:リクエストの URI パスです。お客様のビジネスに関係のないパス (プローブやスキャンパス、他のクラウドサービスの API パスなど) が表示される場合、通常は異常な外部リクエストです。 -
request_method:リクエストの HTTP メソッドです。お客様のビジネスが GET リクエストのみを使用しているのに、ログに多数の PUT または DELETE リクエストが表示される場合は、異常な動作がないか確認してください。 -
http_user_agent:リクエストの User-Agent 識別子です。自動化されたツールやクローラーは、curlやpython-requestsのような、通常のブラウザーリクエストとは異なる特定の User-Agent ヘッダーをよく使用します。
たとえば、SLS で次の SQL 文を使用して、予期しない IP アドレスからの異常なリクエストをクエリできます。
* | select client_ip, request_method, request_uri, count(*) as cnt group by client_ip, request_method, request_uri order by cnt desc limit 50
異常なソース IP の制限
異常なリクエストのソース IP アドレスを確認した後、CLB のアクセス制御機能を使用してブラックリストを設定し、これらの IP アドレスからの後続のリクエストをブロックできます。次の手順を実行します。
-
CLB コンソールの左側のナビゲーションペインで、[アクセス制御] を選択します。
-
アクセス制御ポリシーグループを作成し、特定された異常なソース IP アドレスを追加します。
-
ポリシーグループをブラックリストとしてリスナーにバインドします。これにより、CLB はブラックリストに登録された IP アドレスからのすべてのリクエストを拒否し、バックエンドサーバーに転送しなくなります。
アクセスログの分析
SLS のダッシュボードを使用してアクセスログを分析できます。ダッシュボードは、豊富なデータ可視化とインサイトを提供します。
-
SLS ページで、左側のナビゲーションペインの
アイコンをクリックし、[ダッシュボード] をクリックします。 -
CLB インスタンスのアクセスログに対応するダッシュボードの名前 (例:slb_layer7_access_center_en) をクリックして、分析レポートを表示します。
アクセスログの無効化
アクセスログ機能を無効にして、CLB アクセスログの収集を停止できます。
CLB インスタンスのアクセスログを無効化しても、関連付けられたプロジェクトや Logstore は削除されません。インスタンスの過去のログはすぐには削除されず、SLS で引き続き管理できます。
- CLBコンソールにログインします。
-
左側のナビゲーションペインで、 を選択します。
-
上部メニューで、CLB インスタンスがデプロイされている [リージョン] を選択します。
-
アクセスログ (レイヤー 7) ページで、対象のインスタンスを見つけ、操作 列の ログの無効化 をクリックします。
-
表示されたダイアログボックスで OK をクリックして、インスタンスのアクセスログを無効化します。
関連ドキュメント
-
SLS の詳細については、「Simple Log Service とは」をご参照ください。
-
レイヤー 7 負荷分散を使用しているときにバックエンドサーバーの異常が疑われる場合は、「CLB アクセスログを使用して異常なバックエンドサーバーを迅速に特定する」をご参照ください。