Alibaba Cloud の Server Load Balancer を使用することにより、複数の Elastic Compute Service (ECS) インスタンスにトラフィックを分散させることができます。Server Load Balancer には、レイヤー 4 Server Load Balancer (TCP)、および、レイヤー 7 Server Load Balancer (HTTP/HTTPS) があります。 Server Load Balancer を使用すると、1 つの ECS インスタンスに例外があった際、サービスへの影響が抑えられ、システム可用性は向上します。 Auto Scaling を併用し、 ECS のトラフィック量に応じてバックエンドサーバーを自動拡張/縮小させることもできます。

Server Load Balancer へのアクセス要求はすべて、アクセスログに記録されます。 アクセスログには、リクエスト時間、クライアントの IP アドレス、遅延、リクエストパス、およびサーバーレスポンスといった、Server Load Balancer に送信されるリクエストの詳細がすべて記録されます。 Server Load Balancer はインターネットアクセスポイントであるため、大量のアクセス要求が処理されます。 そのアクセスログより、クライアントユーザーの行動パターンや地理的分布を分析することができます。また、問題のトラブルシューティングに役立てることもできます。

Server Load Balancer のアクセスログの収集には Log Service をご利用ください。 継続してレイヤー 7 (HTTP/HTTPS) のアクセスログをモニタリング、調査、診断、通知受信していくことにより、Server Load Balancer インスタンス全体を把握することができます。

Log Service は、レイヤー 7 Server Load Balancer にのみ対応していますが、 全リージョンで利用できます。 詳細は、「アクセスログの設定」をご参照ください。

利点

  • シンプル: 開発者および管理者は、ログの処理に時間と手間をかける必要がなくなり、サービス開発および技術研究に専念できるようになります。
  • 大容量処理: アクセスログのデータ量は、Server Load Balancer インスタンスのリクエスト PV に比例します。 一般的にデータ量が多いため、 アクセスログの処理に、コストパフォーマンスを考慮することは必須です。 Log Service は 1 秒で 1 億のログを分析することができるため、オープンソースのソリューションと比較してコスト面において確実に利点があります。
  • リアルタイム性: DevOps、モニタリング、警告には、ログデータにリアルタイム性が求められます。 しかし、従来のデータ保存および分析ツールにはそのリアルタイム性がありません。 たとえば、Hive データの ETL は非常に時間がかかりますが、その大半はデータの統合処理です。 強力なコンピューティング機能を搭載した Log Service は、アクセスログを数秒で処理および分析します。
  • 柔軟性: Server Load Balancer インスタンスごとにアクセスログの取得を有効/無効にすることができます。Server Load Balancer インスタンスごとにアクセスログの取得を有効/無効にすることができます。 また、保存期間 (1 ~ 365 日) も設定できます。なお、Logstore のサイズはサービスの成長に合わせて自動的に拡張されます。

Log Service にレイヤー 7 Server Load Balancer のアクセスログを収集するための設定

前提条件

  1. Server Load Balancer および Log Service が有効になっていること。 また、作成した インスタンスの作成、Log Service プロジェクト、および Logstore は同一リージョンであること。
    レイヤー 7 Server Load Balancer のアクセスログのみを収集することができます。 すべてのリージョンでご利用いただけます。
  2. RAM ユーザーが SLB アクセスログへのアクセス権を有していること。 詳細は、「RAM ユーザーにアクセスログの設定権限を付与」をご参照ください。

手順

  1. Log Service コンソールにログインします。
  2. プロジェクトおよび Logstore を作成後、ページの指示に従ってデータインポートウィザードを起動します。 (または、Logstore リストページのデータインポートウィザードアイコンをクリックします。)
  3. データソースを選択します。

    Cloud ServicesServer Load Balancer次へを順にクリックします。

  4. RAM の権限付与

    ページの指示に従って権限付与権限付与ポリシーの確認を順にクリックし、Server Load Balancer に Log Service へのアクセス権を付与します。

  5. 送信ルールを設定します。 送信設定をクリックし、Server Load Balancer コンソールに移動します。
    1. 左側のナビゲーションメニューより、ログ > アクセスログを順にクリックします。
    2. Server Load Balancer インスタンスの右側の設定をクリックします。
      Log Service プロジェクトおよび SLB インスタンスが同じリージョンであること。
      図 1. ログの設定


    3. Log Service のプロジェクトおよび Logstore を選択し、 確認をクリックします。
    4. 設定し終わったら、ダイアログボックスを閉じます。 データインポートウィザードに戻り、次へをクリックします。
      図 2. データソースの設定


  6. 照会/分析/可視化

    Log Service には Server Load Balancer の照会フィールドがあらかじめ定義されています。 各フィールドの詳細は、下記「フィールドの説明」をご参照ください。 次へをクリックします。

    Logstore 名で始まる、{LOGSTORE}-slb_layer7_access_center ダッシュボード および {LOGSTORE}-slb_layer7_operation_center ダッシュボードが自動生成されます。 設定が完了すると、ダッシュボードページに表示されます。
  7. 確認をクリックしてデータインポートウィザードを終了します。

その他の操作

  • リアルタイムにログを照会

    ログ内のキーワードを使用して、迅速かつ正確なクエリまたはあいまいクエリを実行することができます。 問題の特定や、統計クエリに使用します。

  • 分析レポートのテンプレート

    Server Load Balancer には、アクセス数の多いクライアント、リクエストステータスコードの分布、アクセス数の多い URI、リクエストのトラフィック量の変化、およびサーバーの応答時間の統計といった、包括的な統計グラフが事前に定義されています。

  • 分析グラフの作成

    任意のログ項目に対してアドホッククエリを実行し、その実行結果をグラフとして保存し、サービスの運用管理に役立てることができます。

  • ログモニタリングアラームの設定

    Server Load Balancer のアクセスログに対してカスタム分析を実行し、その実行結果をクイック照会として保存することができます。 また、クイック照会をアラーム通知として設定すると、 リアルタイムログの処理結果が、設定されているしきい値を超えた場合、システムよりアラーム通知が送信されます。

フィールド説明

フィールド 説明
body_bytes_sent クライアントに送信された HTTP 本文のサイズ (単位: byte)
client_ip リクエストを送信したクライアントの IP アドレス
host リクエストパラメータの host 値 (リクエストパラメータに host 値がない場合は、host ヘッダーの host 値。 host ヘッダーにも host 値がない場合は、リクエストのバックエンドサーバーの IP アドレスが host 値)
http_host リクエストの host ヘッダーのコンテンツ
http_referer プロキシの受信したリクエストの HTTP リファラーヘッダーのコンテンツ
http_user_agent プロキシの受信したリクエストの HTTP user-agent ヘッダーのコンテンツ
http_x_forwarded_for プロキシの受信したリクエストの x-forwarded-for のコンテンツ
http_x_real_ip 送信元 IP アドレス
read_request_time プロキシのリクエスト読み込み時間 (単位: ミリ秒)
request_length startline、HTTP ヘッダー、および HTTP 本文を含めたリクエストメッセージの長さ
request_method リクエストメソッド
Request_time プロキシが最初のリクエストを受信してからレスポンスを返すまでの時間 (単位: 秒)
request_uri プロキシの受信したリクエストの URI
scheme リクエストスキーマ(http または https)
server_protocol プロキシの受信した HTTP プロトコルのバージョン (例: HTTP/1.0 または HTTP/1.1)
slb_vport Server Load Balancer のリスニングポート
slbid Server Load Balancer インスタンスの ID
ssl_cipher 暗号スイート (例: ECDHE-RSA-AES128-GCM-SHA256/)
ssl_protocol SSL/TSL 接続のプロトコル (例: TLS v1.2)
status メッセージに対するプロキシのレスポンスステータス
tcpinfo_rtt クライアントの tcp RTT (単位: マイクロ秒)
time ログが書き込まれた時間
Upstream_addr バックエンドサーバーの IP アドレスおよびポート
upstream_response_time Server Load Balancer のバックエンドサーバーへの接続確立から、データを送信し、接続が切断されるまでの時間 (単位: 秒)
upstream_statu プロキシの受信したバックエンドサーバーのレスポンスステータスコード
vip_addr VIP アドレス
write_response_time プロキシのレスポンス書き込み時間 (ミリ秒)