このトピックでは、Application Load Balancer (ALB) とインターフェイスするSimple Log Serviceを使用して、ユーザーの動作と分散を分析し、エラーをトラブルシューティングする方法について説明します。
背景情報
ALBは、多数の要求を受信および転送するための入口として機能する。 ALBを使用すると、強力なビッグデータコンピューティング機能を提供するSimple Log Serviceにアクセスログを配信できます。 ユーザーアクティビティの分析、ユーザーの地理的分布の表示、アクセスログに基づく問題のトラブルシューティングを行うことができます。 ALBアクセスログには次の利点があります。
使いやすさ: ALBアクセスログは、ログの管理に必要な時間と労力を削減し、開発者とO&Mエンジニアがサービス開発とテクノロジーの調査に集中できるようにします。
大量: ALBアクセスログには大量のデータが保存されます。 したがって、アクセスログの管理に使用されるサービスは、大容量で費用対効果の高いサービスである必要があります。 Simple Log Serviceは、1秒以内に100万のログエントリを処理できます。 自己管理サービスやオープンソースサービスと比較して、Simple Log Serviceはより高速で費用対効果が高いです。
タイムリー性: DevOps、データモニタリング、アラートなどのシナリオでは、タイムリー性が不可欠です。 Simple Log Serviceは、ビッグデータタスクに優れたコンピューティング機能を提供し、数秒以内に大量のログデータを処理できます。
柔軟性: ビジネス要件に基づいて、ALBインスタンスのアクセスログ機能を有効または無効にできます。 Logstoreのストレージ容量は、ワークロードに基づいてスケーラブルです。
課金
ALBのアクセスログがSimple Log Serviceに配信されると、データストレージ、読み取りトラフィック、リクエスト、データ変換、およびデータ転送に対して課金されます。 詳細については、「簡易ログサービス課金」をご参照ください。
前提条件
Simple Log Serviceが有効化されています。 詳細については、次をご参照ください: Simple Log Serviceの有効化
アクセスログの作成
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
左側のナビゲーションウィンドウで、ALB> インスタンスを選択します。 インスタンス ページで、管理するインスタンスのIDをクリックします。
インスタンスの詳細 タブで、アクセスログ タブをクリックします。 アクセスログ タブで、アクセスログの作成 をクリックします。
アクセスログの作成ダイアログボックスで、プロジェクトとログストアパラメーターを設定し、OKをクリックします。
パラメーター
説明
プロジェクト
リソースの分離と管理に使用するSimple Log Serviceプロジェクトを選択します。 有効な値:
[プロジェクトの選択]: ドロップダウンリストから既存のプロジェクトを選択します。
プロジェクトの作成: フィールドにプロジェクト名を入力します。
ログストア
Simple log Serviceでログデータの収集、保存、クエリに使用するLogstoreを選択します。 有効な値:
Logstoreの選択: ドロップダウンリストから既存のLogstoreを選択します。
Logstoreの作成: フィールドにLogstore名を入力します。 プロジェクトの作成を選択した場合は、Logstoreの作成も選択する必要があります。
サービス連携ロールの作成に関する注意事項
この操作を実行すると、サービスにリンクされたロールが自動的に作成されます。
表示されるメッセージで、情報を読み、OKをクリックします。
Logstoreを作成すると、インデックスとダッシュボードが作成され、デフォルトでLogstoreに対して有効になります。
既存のLogstoreを選択すると、ダッシュボードは自動的に有効になります。 Logstoreの既存のインデックスは上書きされません。 Simple Log Serviceコンソールでインデックスを作成できます。
アクセスログの表示
アクセスログタブで、保存先パスの右側にあるリンクをクリックしてSimple Log Serviceコンソールに移動してログデータを表示します。
アクセスログタブで、モニタリングセンター,アクセスセンター、または詳細モニタリングタブをクリックし、メトリックをクエリするフィルター条件を指定します。
モジュール
説明
監視センター
ALBインスタンスのリアルタイムモニタリングデータを表示します。 メトリックには、PV、リクエスト成功率、平均レイテンシ、ステータスコード4xxのリクエスト、ステータス分布、トラフィック、P50レイテンシ、P90レイテンシ、P99レイテンシ、P9999レイテンシ、リクエストが最も多いホスト、レイテンシが最も高いホスト、失敗率が最も高いホスト、リクエストが最も多いURL、レイテンシが最も高いURL、リクエストが最も多いバックエンド、そして最も高い失敗率のバックエンド。
アクセスセンター
ALBインスタンスに関するアクセス情報を表示します。 メトリックには、PV (Day-on-day) 、PV (Week-on-week) 、UV (Day-on-day) 、UV (Week-on-week) 、PV Distribution、UV Distribution、PV Today、7日間のPV、最もリクエストの多い上位10州、モバイルユーザーの割合、最もリクエストの多い上位10ホスト、最もリクエストの多い上位10ユーザーエージェント、およびほとんどの要求を持つIPアドレス。
詳細モニタリング
1秒間隔で集計されるメトリックを表示します。 メトリックを使用して、過渡ジッタに関連する例外を識別できます。 メトリックは、QPS、アクセス待ち時間、アップストリーム待ち時間、成功率、要求トラフィック、応答ボディトラフィック、ステータスコード2xx、ステータスコード3xx、エラーコード、アップストリームステータスコード2xx、アップストリームステータスコード3xx、およびアップストリームエラーコードを含む。
モニタリングセンター 、アクセスセンター 、または 詳細モニタリング タブの右上隅で、その他のグラフ をクリックして [CloudLens for ALB] ページに移動し、さらにALBレポートを表示します。 詳細については、「レポートの表示」をご参照ください。
モニタリングセンター 、アクセスセンター 、または 詳細モニタリング タブの右上隅で、アラートルールの設定 をクリックして [CloudLens for ALB] ページに移動し、ALBのアラートインシデントを表示します。
モニタリングセンター 、アクセスセンター 、または 詳細モニタリング タブの右上隅にある次の機能を使用することもできます。
: Dedicated SQLを有効にします。 詳細については、「Dedicated SQLの有効化」をご参照ください。
アクセスログがSimple Log Serviceに配信された後、アクセスログを照会、分析、ダウンロード、配信、および処理できます。 アクセスログのアラートルールを作成することもできます。 詳細については、「Alibaba Cloudサービスのログに対する一般的な操作」をご参照ください。
カスタムヘッダーを記録する
slb_headersは、カスタムリクエストヘッダーの名前と値を記録できます。 データを使用してリクエストを分析できます。
アクセスログに記録できるカスタムヘッダーの最大サイズは1 KBで、4 KBに増やすことができます。 増額をリクエストするには、アカウントマネージャーに連絡してください。 詳細については、「ALBインスタンスによって転送できるリクエストの最大サイズは何ですか? 許容最大サイズを増やすことはできますか? 」をご参照ください。
アクセスログタブで、基本情報セクションでカスタムヘッダーの記録をクリックします。
カスタム HTTP ヘッダーのログへの記録ダイアログボックスで、ドロップダウンリストからALBインスタンスに追加されたリスナーを選択します。
リスナーを作成するには、ドロップダウンリストで [リスナーの作成] をクリックします。 詳細については、「HTTPリスナーの追加」、「HTTPSリスナーの追加」、および「QUICリスナーの追加」をご参照ください。
表示されるメッセージで、情報を読み、OKをクリックします。
設定が完了すると、slb_headersフィールドがアクセスログに追加され、次のヘッダーを除くリクエスト内のすべてのヘッダーの名前と値が記録されます。
# The slb_headers field does not record information about the following headers: 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 | ALBインスタンスのID。 |
__topic__ | ログトピック。 デフォルトのトピックはalb_layer7_access_logです。 |
body_bytes_sent | HTTPレスポンスボディのサイズ。 単位はバイトです。 |
client_ip | このフィールドには、クライアントIPの取得機能が有効になっている場合のクライアントのIPアドレスが含まれます。 それ以外の場合は、ALBインスタンスからの前のホップのIPアドレスが含まれます。 |
host | ドメイン名または IP アドレスです。 デフォルトでは、値はリクエストパラメータから取得されます。 要求パラメータから値が取得されない場合、値はホストヘッダフィールドから取得される。 リクエストパラメーターまたはホストヘッダーフィールドから値が取得されない場合、リクエストを処理するバックエンドサーバーのIPアドレスが値として使用されます。 |
http_host | HTTPリクエストの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リクエストの開始行、ヘッダー、および本文の合計サイズ。 |
request_method | リクエスト方式。 |
request_time | ALBインスタンスがリクエストを受信してから、ALBインスタンスがレスポンスを返すまでの時間。 単位は秒です。 |
request_uri | リクエストのURI。 |
scheme | リクエストプロトコル。 有効な値: HTTPおよびHTTPS。 |
server_protocol | ALBインスタンスによって受信されるHTTPプロトコルのバージョン。 例: HTTP/1.0およびHTTP/1.1。 |
slb_vport | ALBインスタンスのリスナーポート。 |
ssl_cipher | SSL接続を確立するために使用される暗号スイート。 例: ECDHE-RSA-AES128-GCM-SHA256。 |
ssl_protocol | SSL接続を確立するために使用されるプロトコル。 例: TLS 1.2 |
status | ALBインスタンスによって返される応答のステータス。 |
tcpinfo_rtt | TCP接続を確立するのにかかる時間。 単位:ミリ秒。 |
time | ログエントリが作成された時間。 時間は |
upstream_addr | バックエンドサーバーの IP アドレスおよびポート |
upstream_response_time | ALBがバックエンドサーバーへの接続を確立してから接続が閉じられるまでの時間。 単位は秒です。 |
upstream_status | バックエンドサーバーからALBインスタンスに送信されたHTTPステータスコード。 |
vip_addr | 仮想IPアドレス。 |
write_response_time | 書き込み要求に応答するのにかかる時間。 単位:ミリ秒。 |
client_port | リクエストを送信するクライアントのポート番号。 |
slb_headers | カスタムヘッダー。 このフィールドは、カスタムヘッダーの記録機能を有効にした後にのみ使用できます。 |