Application Load Balancer (ALB) と Simple Log Service (SLS) のアクセスログ機能を利用して、ユーザーの動作分析、地理的分布の把握、問題のトラブルシューティングを行うことができます。
背景情報
ALB は、大量のリクエストを処理するアクセスエントリポイントとして機能し、アクセスログを Simple Log Service に配信できます。これらのアクセスログと Simple Log Service の強力なビッグデータコンピューティング機能を組み合わせることで、ユーザーの動作分析、ユーザーの地理的分布の把握、問題のトラブルシューティングが可能です。ALB のアクセスログ機能には、以下の利点があります。
シンプルさ:開発者や運用保守 (O&M) エンジニアを、手間と時間のかかるログ処理から解放します。これにより、ビジネス開発や技術探求に集中できます。
大規模対応:ALB のアクセスログは非常に大規模になる可能性があります。これらのログを処理するには、パフォーマンスとコストを考慮する必要があります。Simple Log Service は、1秒あたり1億件のログを分析でき、自社構築のオープンソースソリューションと比較して、コストとパフォーマンスの面で大きな利点を提供します。
リアルタイム処理:DevOps、モニタリング、アラートなどのシナリオでは、リアルタイムのログデータが必要です。Simple Log Service の強力なビッグデータコンピューティング機能により、リアルタイムログを数秒で分析・処理できます。
伸縮性:各 ALB インスタンスのアクセスログ機能を有効または無効にできます。Logstore の容量は、ビジネスの成長に合わせて動的に拡張できます。
課金
ALB は Simple Log Service にログを配信します。Simple Log Service は、ストレージ容量、読み取りトラフィック、リクエスト数、データ変換、データ転送に対して課金します。詳細については、「Simple Log Service の課金」をご参照ください。
前提条件
アクセスログ機能を使用する前に、Simple Log Service を有効化しておく必要があります。詳細については、「Simple Log Service を有効化する」をご参照ください。
アクセスログの作成
ALB コンソールにログインします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
インスタンス ページで、対象インスタンスの ID をクリックします。
インスタンス詳細ページで、アクセスログ タブをクリックし、さらに アクセスログ タブで アクセスログの作成 をクリックします。
アクセスログの作成 ダイアログボックスで、[プロジェクト] と [Logstore] を設定し、[OK] をクリックします。
設定
説明
プロジェクト
Simple Log Service におけるリソース管理単位で、リソースの隔離と制御に使用されます。
[既存のプロジェクトを選択]:ドロップダウンリストからプロジェクトを選択します。
[新規プロジェクトを作成]:テキストボックスに新しいプロジェクトの名前を入力します。
[Logstore]
Simple Log Service におけるログデータの収集、ストレージ、クエリの単位です。
[既存の Logstore を選択]:ドロップダウンリストから Logstore を選択します。
[新規 Logstore を作成]:テキストボックスに新しい Logstore の名前を入力します。新規プロジェクトを作成する場合は、新規 Logstore も作成する必要があります。
[サービスリンクロールの作成に関する通知]
この操作を実行すると、システムは自動的にサービスリンクロールを作成し、対応する機能を完了します。
表示されたダイアログボックスで情報を確認し、[OK] をクリックします。
新規 Logstore を作成した場合、設定完了後、Simple Log Service はデフォルトで Logstore のインデックスを作成し、ダッシュボードを有効にします。
既存の Logstore を選択した場合、設定完了後、Simple Log Service は自動的にダッシュボードを有効にします。Logstore に既にインデックスがある場合、設定は上書きされません。新しいインデックスを追加するには、Simple Log Service コンソールに移動して設定します。
アクセスログの表示
アクセスログ タブで、保存先パス の右側にあるリンクをクリックして Simple Log Service を開き、生ログやその他の情報を表示します。
アクセスログ タブで、モニタリングセンター、アクセスセンター、または 詳細モニタリング タブをクリックし、フィルター条件を入力して関連メトリックをクエリします。
モジュール
メトリックの説明
モニタリングセンター
ALB インスタンスのリアルタイムモニタリングデータを表示します。メトリックには、ページビュー (PV)、リクエスト成功率、平均レイテンシー、4xx リクエスト数、ステータス分布、トラフィック、P50 レイテンシー、P90 レイテンシー、P99 レイテンシー、P9999 レイテンシー、リクエストホスト Top、レイテンシーホスト Top、失敗率ホスト Top、リクエスト URL Top、レイテンシー URL Top、失敗率 URL Top、リクエストバックエンド Top、レイテンシーバックエンド Top、失敗率バックエンド Top が含まれます。
アクセスセンター
ALB インスタンスのアクセスステータスデータを表示します。メトリックには、PV (昨日比)、PV (先週比)、UV (昨日比)、UV (先週比)、PV 分布、UV 分布、本日の PV、7日間の PV、アクセス Top 10 (省別)、モバイルクライアント比率、アクセスホスト Top 10、アクセス User-Agent Top 10、アクセス IP Top が含まれます。
高精度監視
秒レベルの粒度でモニタリング情報を表示し、一時的なジッターや異常の特定を支援します。メトリックには、QPS、アクセスレイテンシー、アップストリームレイテンシー、成功率、リクエストトラフィック、レスポンスボディトラフィック、2xx ステータスコード、3xx ステータスコード、エラーステータスコード、アップストリーム 2xx ステータスコード、アップストリーム 3xx ステータスコード、アップストリームエラーステータスコードが含まれます。
モニタリングセンター、アクセスセンター、または 詳細モニタリング タブの右上隅で、その他のグラフ をクリックして [CloudLens for ALB] ページに移動し、より多くの ALB データレポートを表示できます。詳細については、「データレポートの表示」をご参照ください。
モニタリングセンター、アクセスセンター、または 詳細モニタリング タブの右上隅で、アラートルールの設定 をクリックして [CloudLens for ALB] ページを開き、ALB インスタンスのアラートトランザクションを表示できます。
モニタリングセンター、アクセスセンター、または 詳細モニタリング タブの右上隅で、さらに多くの機能が利用可能です。
:SQL 拡張を有効にします。詳細については、「高性能・高精度なクエリと分析 (専用 SQL)」をご参照ください。Simple Log Service がアクセスログを収集した後、クエリと分析、ログのダウンロード、データ転送、データ処理、アラート作成などの操作を実行できます。詳細については、「Alibaba Cloud サービスのログに対する一般的な操作」をご参照ください。
カスタムヘッダーの記録
共通のヘッダーに加えて、`slb_headers` フィールドはリクエスト内の他のヘッダーの名前と値を記録するために使用されます。これにより、より完全なリクエストロギングとログ分析の向上が可能になります。
アクセスログのカスタムヘッダーのデフォルト長は 1 KB です。これは最大 4 KB まで増やすことができます。増加をリクエストするには、アカウントマネージャーにご連絡ください。詳細については、「ALB によって転送されるリクエストの長さ制限はどのくらいですか。制限を変更できますか。」をご参照ください。
アクセスログ タブの 基本情報 エリアで、カスタムヘッダーの記録 をクリックします。
カスタム HTTP ヘッダーのログへの記録 ダイアログボックスで、ドロップダウンリストから ALB インスタンスのリスナーを選択します。
リスナーを作成するには、ドロップダウンリストから [リスナーの作成] をクリックします。詳細については、「HTTP リスナーと HTTPS リスナー」、「HTTPS リスナーの追加」、および「QUIC リスナーの追加」をご参照ください。
表示されたダイアログボックスで情報を確認し、[OK] をクリックします。
設定が完了すると、ログの `slb_headers` フィールドには、以下を除くリクエスト内のすべてのヘッダーの `header_name` と `header_value` が記録されます。
# 次のヘッダーフィールドはカスタムヘッダーに記録されません。 host referer user-agent x-forwarded-for x-readtime x-real-ip uber-trace-id X-B3-TraceId X-B3-SpanId X-B3-ParentSpanId X-B3-Sampled
ログの削除
アクセスログ タブの 基本情報 エリアで、[ロギングの無効化] をクリックします。
ダイアログボックスで情報を確認し、[OK] をクリックします。
ログフィールドの説明
フィールド | 説明 |
app_lb_id | Server Load Balancer インスタンスの ID。 |
__topic__ | ログトピック。値は `alb_layer7_access_log` に固定されます。 |
body_bytes_sent | クライアントに送信された HTTP ボディのバイト数。 |
client_ip | リクエスト元のクライアントの IP アドレス。クライアントの実際の送信元 IP を見つける機能が無効な場合、このフィールドはロードバランサーの前のホップの IP アドレスになります。有効な場合、このフィールドはクライアントの実際の送信元 IP アドレスになります。 |
host | ドメイン名または IP アドレス。値はまずリクエストパラメーターから取得されます。取得できない場合は、`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 | ロードバランサーがリクエストを読み取るのにかかった時間 (ミリ秒)。 |
request_length | 開始行、HTTP ヘッダー、HTTP ボディを含むリクエストメッセージの長さ (バイト)。 |
request_method | リクエストメッセージのメソッド。 |
request_time | ロードバランサーが最初のリクエストメッセージを受信してからレスポンスを返すまでの時間間隔 (秒)。 |
request_uri | ロードバランサーが受信したリクエストメッセージの URI。 |
scheme | リクエストのスキーマ:HTTP または HTTPS。 |
server_protocol | ロードバランサーが受信した HTTP プロトコルのバージョン (例:HTTP/1.0、HTTP/1.1)。 |
slb_vport | ロードバランサーのリスナーポート。 |
slb_xtrace | ロードバランサーの Tracing Analysis のコールチェーンのトレース ID。 |
xtrace_type | ロードバランサーの Tracing Analysis の Xtrace データのタイプ。現在、Zipkin のみがサポートされています。 |
ssl_cipher | SSL 接続の確立に使用される暗号スイート (例:ECDHE-RSA-AES128-GCM-SHA256)。 |
ssl_protocol | SSL 接続の確立に使用されるプロトコル (例:TLSv1.2)。 |
status | ロードバランサーからのレスポンスメッセージのステータス。 |
tcpinfo_rtt | クライアントの TCP 接続時間 (マイクロ秒)。 |
time | ログが記録された時間。時間フォーマットは |
upstream_addr | バックエンドサーバーの IP アドレスとポート。 |
upstream_response_time | ロードバランサーがバックエンドサーバーへの接続を確立してから、データの受信を完了して接続を閉じるまでの時間 (秒)。 |
upstream_status | ロードバランサーがバックエンドサーバーから受信したレスポンスステータスコード。 |
vip_addr | 仮想 IP アドレス。 |
write_response_time | ロードバランサーによって書き込まれた応答時間 (ミリ秒)。 |
client_port | リクエスト元のクライアントポート。 |
slb_headers | カスタムヘッダー。この機能を使用するには有効化する必要があります。リクエストのカスタムヘッダーを格納します。 |
よくある質問
アクセスログを作成する前のアクセスログデータを表示できますか。
いいえ、できません。
表示できるのは、アクセスロギングを有効にした後に収集されたログデータのみです。Simple Log Service は、機能が有効になる前の ALB からのアクセスデータを収集しません。したがって、機能を有効にする前に生成されたログデータを表示することはできません。