Classic Load Balancer (CLB) のレイヤー 7 リスナーがエラーを返す場合、アクセスログを使用すると、どのバックエンドサーバーが問題を引き起こしているかを特定できます。CLB は Simple Log Service (SLS) と統合されており、これらのログの保存、クエリ、可視化が可能です。
アクセスログは HTTP および HTTPS リスナーでのみサポートされています。レイヤー 4 リスナーではサポートされていません。
前提条件
開始する前に、以下のものが準備できていることを確認してください。
CLB インスタンス。詳細については、「CLB インスタンスの作成と管理」をご参照ください。
バックエンドサーバーが追加され、アプリケーションがデプロイされている vServer グループ。詳細については、「vServer グループの作成と管理」をご参照ください。
CLB インスタンス上の HTTP または HTTPS リスナー。詳細については、「HTTP リスナーの追加」および「HTTPS リスナーの追加」をご参照ください。
Simple Log Service が有効になっていること。詳細については、「Simple Log Service の有効化」をご参照ください。
ステップ 1: アクセスログの設定
CLB コンソールにログインします。
- CLBコンソールにログインします。
ナビゲーションペインで、 の順に選択します。
上部メニューで、CLB インスタンスがデプロイされているリージョンを選択します。
アクセスログを初めて使用する場合は、必要な権限を付与します。権限付与 をクリックし、[RAM クイック権限付与] ページで再度 権限を付与 をクリックします。
説明権限付与は 1 回のみ必要です。RAM ユーザーを使用する場合、アカウント所有者は RAM ユーザーに個別に権限を付与する必要があります。詳細については、「CLB のアクセスログ機能を使用するための RAM ユーザーへの権限付与」をご参照ください。
アクセスログ (レイヤー 7) ページで、CLB インスタンスを見つけ、操作 列の ロギングの設定 をクリックします。
ロギングの設定 パネルで、プロジェクト および Logstore パラメーターを設定し、OK をクリックします。
パラメーター
説明
[プロジェクト]
SLS プロジェクトは、リソースの分離と管理に使用します。ドロップダウンリストから既存のプロジェクトを選択するか、名前を入力して新規作成します。プロジェクト名は一意である必要があり、そのリージョンは CLB インスタンスのリージョンと一致している必要があります。
[Logstore]
SLS Logstore を使用して、ログの収集、保存、クエリを行います。ドロップダウンリストから既存の Logstore を選択するか、名前を入力して新規作成します。
ステップ 2: アクセスログデータの表示
CLB コンソールにログインします。
ナビゲーションペインで、 の順に選択します。
上部メニューで、CLB インスタンスがデプロイされているリージョンを選択します。
CLB インスタンスを見つけ、操作 列の ログの表示 をクリックして SLS コンソールを開きます。
クライアントが CLB にアクセスするたびにログエントリが生成されます。Simple Log Service でログデータを表示できます。
SQL 文を入力してログデータをクエリします。たとえば、次の SQL 文を実行すると、アクティブなクライアントの上位 20 件を照会できます。リクエスト元を分析し、ビジネス上の意思決定を行うことができます。
* | select http_user_agent, count(*) as pv group by http_user_agent order by pv desc limit 20
ステップ 3: 異常なバックエンドサーバーの特定
SLS ダッシュボードを使用して、バックエンドサーバーの応答時間の概要を視覚的に確認します。
プロジェクトページで、ナビゲーションペインの
アイコンにカーソルを合わせ、ダッシュボードリスト をクリックします。アクセスログダッシュボード名をクリックします。たとえば、 または slb_layer7_access_center_en です。
[top upstream_response_time] セクションで、[avg upstream_response_time(s)] 列を降順にソートします。
バックエンドサーバーの平均応答時間が 1 秒を超える場合、そのサーバーにログインして根本原因を調査します。
マルチパス転送の失敗のトラブルシューティング
マルチパス転送シナリオでは、一部のバックエンドサーバーに到達できない場合、SLS ログクエリを使用してステータスコード別に失敗したリクエストをフィルタリングし、障害の原因となった特定のバックエンドサーバーを特定できます。
アクセスログは、レイヤー 7 リスナー (HTTP および HTTPS) でのみサポートされています。レイヤー 4 リスナー (TCP および UDP) ではこの機能はサポートされていません。
主要なログフィールド
フィールド | 説明 |
| CLB がリクエストを転送したバックエンドサーバーの IP アドレスとポート。マルチパス転送アーキテクチャでは、このフィールドを使用して各リクエストの実際のルーティングパスを追跡します。 |
| クライアントに返された HTTP ステータスコード。転送失敗シナリオでの一般的な値: |
| バックエンドサーバーから実際に返された HTTP ステータスコード。 |
| バックエンドサーバーが応答するまでにかかった時間 (秒単位)。これを使用して、タイムアウトによる失敗と接続拒否による失敗を区別します。 |
手順
CLB コンソールにログインします。ナビゲーションペインで、 の順に選択します。上部メニューで、CLB インスタンスがデプロイされているリージョンを選択します。CLB インスタンスを見つけ、操作 列の ログの表示 をクリックして SLS ログクエリページを開きます。
次のクエリを入力して、失敗した転送リクエストをフィルタリングします。
status:502 or status:504クエリ結果で、
upstream_addrフィールドを確認して、失敗したリクエストを受信したバックエンドサーバーの IP アドレスを特定します。これらは、マルチパス転送構成における到達不可能なパスです。バックエンドサーバーごとの障害の集計ビューを取得するには、次のクエリを実行します。
status:502 or status:504 | select upstream_addr, upstream_status, upstream_response_time, count(*) as error_count group by upstream_addr, upstream_status, upstream_response_time order by error_count descupstream_status列を確認して、各バックエンドサーバーからの実際の応答コードを確認します。これにより、障害原因を絞り込むことができます。タイムアウトによる失敗と接続拒否による失敗を区別するには、クエリ結果の
upstream_response_timeフィールドを確認します。upstream_response_timeがリスナーのアップストリームタイムアウトしきい値に近い場合、バックエンドサーバーがタイムアウトしました。upstream_response_timeがほぼゼロの場合、バックエンドサーバーが直ちに接続を拒否しました。
アクセスログを使用したトラフィックスパイクの調査
Classic Load Balancer (CLB) インスタンスで突然のトラフィックスパイクが発生した場合、CLB アクセスログを使用してトラフィックソースと傾向を分析し、トラフィックの増加が想定内のものかどうかを判断します。
SQL クエリを実行する前に、対象の Simple Log Service (SLS) Logstore でインデックス機能を有効にしてください。インデックスがない場合、クエリ文を実行すると、SLS コンソールから「Index not enabled for Logstore」というエラーが返されます。
手順
CLB コンソールにログインします。
ナビゲーションペインで、 の順に選択します。
上部メニューで、CLB インスタンスがデプロイされているリージョンを選択します。
対象の CLB インスタンスを見つけ、操作 列の ログの表示 をクリックして SLS ダッシュボードを開きます。
SLS ダッシュボードで、時間範囲セレクターを使用して観測期間を調整します。現在のトラフィック量を過去のベースラインと比較して、スパイクが異常なものかどうかを判断します。
[統計グラフ] タブをクリックして、ページビュー (PV) および [トラフィック推移] グラフを表示します。階段状の急激な変化や短時間に集中したスパイクなどのパターンを探します。
特定のトラフィックソースを特定するには、クエリ入力ボックスにクエリ文を入力します。次の SQL 文は、リクエスト数でランク付けされた上位 20 件の送信元 IP アドレスとリクエスト URI を返します。
* | SELECT client_ip, request_uri, count(*) AS cnt GROUP BY client_ip, request_uri ORDER BY cnt DESC LIMIT 20
一般的なトラフィックスパイクの原因と推奨アクション
原因 | 特徴 | 推奨アクション |
CC 攻撃または DDoS | 少数の送信元 IP アドレスから特定の URI に対して極めて高いリクエストレート | WAF アクセスログを確認して攻撃元を特定し、レート制限ルールを設定します |
ビジネスプロモーションまたは製品ローンチ | トラフィックスパイクがスケジュールされたプロモーションイベントと一致し、地理的分布がターゲットオーディエンスと一致 | ビジネスチームに確認し、必要に応じてバックエンドサーバーをスケールアウトします |
Web クローラーまたはスクレイパー | 類似した User-Agent 文字列を持つ複数の送信元 IP アドレスからの大量リクエスト。コンテンツの多いパスに集中 | アクセスログの |
アップストリームリダイレクトまたは設定ミス | 特定のパスでの突然のスパイク。多くのリクエストが共通の |
|