Elastic Load Balancing
Application Load Balancer

Application Load Balancer の CloudWatch メトリクス

Elastic Load Balancing は、ロードバランサーとターゲットに関するデータポイントを Amazon CloudWatch に発行します。CloudWatch を使用すると、それらのデータポイントについての統計を、順序付けられた時系列データのセット (メトリクスと呼ばれる) として取得できます。メトリクスは監視対象の変数、データポイントは時間の経過と共に変わる変数の値と考えることができます。たとえば、指定した期間中のロードバランサーの正常なターゲットの合計数を監視することができます。各データポイントには、タイムスタンプと、オプションの測定単位が関連付けられています。

メトリクスを使用して、システムが正常に実行されていることを確認できます。たとえば、メトリクスが許容範囲外になる場合、CloudWatch アラームを作成して、指定されたメトリクスを監視し、アクション (E メールアドレスに通知を送信するなど) を開始することができます。

Elastic Load Balancing は、リクエストがロードバランサーを経由する場合のみ、メトリクスを CloudWatch に報告します。ロードバランサーを経由するリクエストがある場合、Elastic Load Balancing は 60 秒間隔でメトリクスを測定し、送信します。ロードバランサーを経由するリクエストがないか、メトリクスのデータがない場合、メトリクスは報告されません。

詳細については、『Amazon CloudWatch ユーザーガイド』を参照してください。

Application Load Balancer のメトリクス

AWS/ApplicationELB 名前空間には、以下のロードバランサーのメトリクスが含まれます。

メトリクス 説明
ActiveConnectionCount

クライアントからロードバランサーへ、およびロードバランサーからターゲットへの、アクティブな同時 TCP 接続の総数。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

ClientTLSNegotiationErrorCount

クライアントにより開始され、ロードバランサーとのセッションを確立しなかった、TLS 接続の数。暗号化またはプロトコルの不一致が原因である場合があります。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

ConsumedLCUs

ロードバランサーが使用するロードバランサーキャパシティーユニット (LCU) の数です。1 時間当たりで使用する LCU 数の料金をお支払いいただきます。詳細については、「Elastic Load Balancing 料金表」を参照してください。

レポート条件: 常に報告される

統計: All

ディメンション

  • LoadBalancer

HTTP_Fixed_Response_Count

成功した固定レスポンスアクションの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

HTTP_Redirect_Count

成功したリダイレクトアクションの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

HTTP_Redirect_Url_Limit_Exceeded_Count

レスポンスの Location ヘッダーの URL が 8K を超えているために、リダイレクトアクションを完了できなかった数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

HTTPCode_ELB_3XX_Count

ロードバランサーから送信された HTTP 3XX リダイレクトコードの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

HTTPCode_ELB_4XX_Count

ロードバランサーから送信される HTTP 4XX クライアントエラーコードの数。リクエストの形式が不正な場合、または不完全な場合は、クライアントエラーが生成されます。ロードバランサーが HTTP 460 エラーコードを返す場合を除き、これらのリクエストはターゲットで受信されませんでした。この数には、ターゲットによって生成される応答コードは含まれません。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。MinimumMaximum、および Average はすべては 1 を返すことに注意してください。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

HTTPCode_ELB_5XX_Count

ロードバランサーから送信される HTTP 5XX サーバーエラーコードの数。この数には、ターゲットによって生成される応答コードは含まれません。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。MinimumMaximum、および Average はすべては 1 を返すことに注意してください。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

HTTPCode_ELB_500_Count

ロードバランサーから送信される HTTP 500 エラーコードの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

HTTPCode_ELB_502_Count

ロードバランサーから送信される HTTP 502 エラーコードの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

HTTPCode_ELB_503_Count

ロードバランサーから送信される HTTP 503 エラーコードの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

HTTPCode_ELB_504_Count

ロードバランサーから送信される HTTP 504 エラーコードの数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

IPv6ProcessedBytes

IPv6 を使用したロードバランサーによって処理される総バイト数。この数は ProcessedBytes に含まれています。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

IPv6RequestCount

ロードバランサーによって受信された IPv6 リクエストの数。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。MinimumMaximum、および Average はすべては 1 を返すことに注意してください。

ディメンション

  • LoadBalancer

NewConnectionCount

クライアントからロードバランサーへ、およびロードバランサーからターゲットへの、新たに確立された TCP 接続の総数。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

ProcessedBytes

IPv4 および IPv6 を使用したロードバランサーによって処理される総バイト数。この数には、クライアントとの間および Lambda 関数との間で送受信されるトラフィックに加えて、ユーザー認証が有効な場合は ID プロバイダー (IdP) からのトラフィックが含まれます。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

RejectedConnectionCount

ロードバランサーが接続の最大数に達したため、拒否された接続の数。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

RequestCount

IPv4 および IPv6 経由で正常に処理されたリクエストの数。この数には、ロードバランサーのターゲットによって生成されたレスポンスを含むリクエストのみが含まれます。

レポート条件: 常に報告される

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

RuleEvaluations

1 時間の平均リクエスト頻度に基づいてロードバランサーによって処理されるルールの数。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

AWS/ApplicationELB 名前空間には、以下のターゲットのメトリクスが含まれます。

メトリクス 説明
HealthyHostCount

正常と見なされるターゲットの数。

レポート条件: ヘルスチェックが有効になっている場合にレポートされます

統計: 最も有用な統計は AverageMinimum、および Maximum です。

ディメンション

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

HTTPCode_Target_2XX_CountHTTPCode_Target_3XX_CountHTTPCode_Target_4XX_CountHTTPCode_Target_5XX_Count

ターゲットによって生成された HTTP 応答コードの数。これには、ロードバランサーによって生成される応答コードは含まれません。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。MinimumMaximum、および Average はすべては 1 を返すことに注意してください。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

NonStickyRequestCount

既存のスティッキーセッションを使用できなかったために、ロードバランサーが新しいターゲットを選択したリクエストの数。たとえば、リクエストが新しいクライアントから最初のリクエストで、維持 Cookie が提示されなかった、維持 Cookie が提示されたが、このターゲットグループに登録されたターゲットを指定しなかった、維持 Cookie の形式が誤っているか期限切れであった、内部エラーによりロードバランサーは維持 Cookie を読み取れなかったなどです。

レポート条件: 維持設定がターゲットグループで有効になっている。

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

RequestCountPerTarget

ターゲットグループ内の各ターゲットによって受信されたリクエストの平均数。TargetGroup ディメンションを使用してターゲットグループを指定する必要があります。ターゲットが Lambda 関数である場合、このメトリクスは適用されません。

レポート条件: 常に報告される

統計: 有効な唯一の統計は Sum です。これは合計ではなく平均を表すことに注意してください。

ディメンション

  • TargetGroup

  • TargetGroupLoadBalancer

TargetConnectionErrorCount

ロードバランサーとターゲット間で正常に確立されなかった接続数。ターゲットが Lambda 関数である場合、このメトリクスは適用されません。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

TargetResponseTime

リクエストがロードバランサーから送信され、ターゲットからの応答を受信するまでの経過時間 (秒)。これは、アクセスログの target_processing_time フィールドに相当します。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Average および pNN.NN (パーセンタイル) です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

TargetTLSNegotiationErrorCount

ロードバランサーにより開始され、ターゲットとのセッションを確立しなかった、TLS 接続の数。暗号化またはプロトコルの不一致が原因である場合があります。ターゲットが Lambda 関数である場合、このメトリクスは適用されません。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

UnHealthyHostCount

異常と見なされるターゲットの数。

レポート条件: ヘルスチェックが有効になっている場合にレポートされます

統計: 最も有用な統計は AverageMinimum、および Maximum です。

ディメンション

  • TargetGroupLoadBalancer

  • TargetGroupAvailabilityZoneLoadBalancer

AWS/ApplicationELB 名前空間には、ターゲットとして登録された Lambda 関数の次のメトリクスが含まれています。

メトリクス 説明
LambdaInternalError

ロードバランサーまたは AWS Lambda の内部的な問題のために失敗した Lambda 関数へのリクエストの数。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • TargetGroup

  • TargetGroupLoadBalancer

LambdaTargetProcessedBytes

Lambda 関数へのリクエストおよび Lambda 関数からのレスポンスについて、ロードバランサーによって処理された総バイト数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

LambdaUserError

Lambda 関数の問題のために失敗した Lambda 関数へのリクエストの数。たとえば、ロードバランサーに関数を呼び出すアクセス権限がなかった、形式が間違っているか必須フィールドがない JSON をロードバランサーが関数から受け取った、リクエストボディまたはレスポンスのサイズが最大サイズの 1 MB を超えているなどです。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • TargetGroup

  • TargetGroupLoadBalancer

AWS/ApplicationELB 名前空間には、ユーザー認証用に以下のメトリクスが含まれます。

メトリクス 説明
ELBAuthError

認証アクションが誤って設定されたため、ロードバランサーが IdP との接続を確立できなかったため、またはロードバランサーが内部エラーにより認証フローを完了できなかったため、完了できなかったユーザー認証の数。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

ELBAuthFailure

IdP がユーザーまたは承認コードへのアクセスを拒否したため、または承認コードが複数回使用されため、完了できなかったユーザー認証の数。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

ELBAuthLatency

ID トークンとユーザー情報を IdP に照会するのにかかった時間 (ミリ秒単位)。これらのオペレーションが 1 つ以上失敗した場合は、エラーになるまでの時間です。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): すべての統計は意味があります。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

ELBAuthRefreshTokenSuccess

ロードバランサーが、IdP から提供された更新トークンを使用してユーザークレームを正常に更新した回数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

ELBAuthSuccess

成功した認証アクションの数。ロードバランサーが IdP からユーザークレームを取得した後、認証ワークフローが終了すると、このメトリクスが増分されます。

レポート条件: ゼロ以外の値がある

統計: 最も有用な統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

ELBAuthUserClaimsSizeExceeded

設定された IdP が、11 KB を超えるサイズのユーザークレームを返した回数。

レポート条件: ゼロ以外の値がある

[Statistics] (統計): 唯一意味のある統計は Sum です。

ディメンション

  • LoadBalancer

  • AvailabilityZoneLoadBalancer

Application Load Balancer のメトリクスディメンション

Application Load Balancer のメトリクスをフィルタするには、次のディメンションを使用できます。

ディメンション 説明
AvailabilityZone

アベイラビリティーゾーン別にメトリクスデータをフィルタリングします。

LoadBalancer

ロードバランサーでメトリクスデータをフィルタリングします。ロードバランサーを次のように指定します。app/ロードバランサー名/1234567890123456 (ロードバランサー ARN の最後の部分)。

TargetGroup

ターゲットグループでメトリクスデータをフィルタリングします。ターゲットグループを次のように指定します。targetgroup/ターゲットグループ名/1234567890123456 (ターゲットグループ ARN の最後の部分)。

Application Load Balancer メトリクスの統計

CloudWatch では、Elastic Load Balancing で発行されたメトリクスのデータポイントに基づいて統計が提供されます。統計とは、メトリクスデータを指定した期間で集約したものです。統計を要求した場合、返されるデータストリームはメトリクス名とディメンションによって識別されます。ディメンションは、メトリクスを一意に識別する名前と値のペアです。たとえば、特定のアベイラビリティーゾーンで起動されたロードバランサーの配下のすべての正常な EC2 インスタンスの統計をリクエストできます。

Minimum 統計と Maximum 統計には、個々のロードバランサーノードによって報告される最小値と最大値が反映されます。たとえば、ロードバランサーノードが 2 つあるとします。一方のノードは、HealthyHostCountMinimum が 2、Maximum が 10、Average が 6 で、もう一方のノードは HealthyHostCountMinimum が 1、Maximum が 5、Average が 3 です。このため、ロードバランサーの Minimum は 1、Maximum は 10、Average は約 4 です。

Sum 統計は、すべてのロードバランサーノードにおける集計値です。メトリクスには期間あたり複数のレポートが含まれているため、Sum はすべてのロードバランサーノードで集計されたメトリクスのみに適用されます。

SampleCount 統計は測定されたサンプルの数です。メトリクスはサンプリング間隔とイベントに基づいて集計されるため、通常、この統計は有用ではありません。たとえば、HealthyHostCountSampleCount は、正常なホストの数ではなく各ロードバランサーノードが報告するサンプル数に基づいています。

パーセンタイルは、データセットにおける値の相対的な位置を示します。小数点以下最大 2 桁を使用して、任意のパーセンタイルを指定できます (p95.45 など)。たとえば、95 パーセンタイルは、95 パーセントのデータがこの値を下回っており、5 パーセントがこの値を上回っていることを意味します。パーセンタイルは、異常を分離するためによく使用されます。たとえば、アプリケーションがほとんどのリクエストをキャッシュから 1 ~ 2 ミリ秒で処理するのに、キャッシュが空の場合は 100 ~ 200 ミリ秒になるとします。最大値は最も速度が遅い場合を反映し、約 200 ミリ秒になります。平均値はデータの分散を示してはいません。パーセンタイルで、アプリケーションのパフォーマンスのより有益なビューが得られます。99 番目のパーセンタイルを Auto Scaling のトリガーあるいは CloudWatch アラームとして使用すると、2 ミリ秒以上の処理時間がかかるリクエストが 1% を超えないようターゲットを設定できます。

ロードバランサーの CloudWatch メトリクスを表示する

Amazon EC2 コンソールを使用して、ロードバランサーに関する CloudWatch メトリクスを表示できます。これらのメトリクスは、モニタリング用のグラフのように表示されます。ロードバランサーがアクティブでリクエストを受信しているときにのみ、モニタリング用のグラフにデータポイントが表示されます。

または、CloudWatch コンソールを使用してロードバランサーのメトリクスを表示できます。

Amazon EC2 コンソールを使用してメトリクスを表示するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ターゲットグループによってフィルタリングされたメトリクスを表示するには、以下の作業を実行します。

    1. ナビゲーションペインで、[Target Groups] を選択します。

    2. ターゲットグループを選択し、[Monitoring] タブを選択します。

    3. (オプション) 結果を時間でフィルタリングするには、[Showing data for] から時間範囲を選択します。

    4. 1 つのメトリクスの大きいビューを取得するには、グラフを選択します。

  3. ロードバランサーでフィルタリングされたメトリクスを表示するには、以下の操作を実行します。

    1. ナビゲーションペインで、[Load Balancers] を選択します。

    2. ロードバランサーを選択し、[Monitoring] タブを選択します。

    3. (オプション) 結果を時間でフィルタリングするには、[Showing data for] から時間範囲を選択します。

    4. 1 つのメトリクスの大きいビューを取得するには、グラフを選択します。

CloudWatch コンソールを使用してメトリクスを表示するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで メトリクスを選択します。

  3. 名前空間に [ApplicationELB] を選択します。

  4. (オプション) すべてのディメンションでメトリクスを表示するには、検索フィールドに名称を入力します。

  5. (オプション) ディメンション別に検索するには、次のいずれかを選択します。

    • ロードバランサーにレポートされるメトリクスのみを表示するには、[Per AppELB Metrics] を選択します。1 つのロードバランサーのメトリクスを表示するには、検索フィールドにその名前を入力します。

    • ターゲットグループにレポートされるメトリクスのみを表示するには、[Per AppELB, per TG Metrics] を選択します。1 つのターゲットグループのメトリクスを表示するには、検索フィールドにその名前を入力します。

    • アベイラビリティーゾーン別に、ロードバランサーにレポートされるメトリクスのみを表示するには、[Per AppELB, per AZ Metrics] を選択します。1 つのロードバランサーのメトリクスを表示するには、検索フィールドにその名前を入力します。1 つのアベイラビリティーゾーンのメトリクスを表示するには、検索フィールドにその名前を入力します。

    • アベイラビリティーゾーンとターゲットグループ別にロードバランサーにレポートされるメトリクスのみを表示するには、[Per AppELB, per AZ, per TG Metrics] を選択します。1 つのロードバランサーのメトリクスを表示するには、検索フィールドにその名前を入力します。1 つのターゲットグループのメトリクスを表示するには、検索フィールドにその名前を入力します。1 つのアベイラビリティーゾーンのメトリクスを表示するには、検索フィールドにその名前を入力します。

AWS CLI を使用してメトリクスを表示するには

使用可能なメトリクスを表示するには、次の list-metrics コマンドを使用します。

aws cloudwatch list-metrics --namespace AWS/ApplicationELB

AWS CLI を使用してメトリクスの統計を取得するには

get-metric-statistics コマンドを使用して、指定されたメトリクスとディメンションの統計情報を取得します。CloudWatch は、ディメンションの一意の組み合わせをそれぞれ別のメトリクスとして扱うことに注意してください。特に発行されていないディメンションの組み合わせを使用した統計を取得することはできません。メトリクス作成時に使用した同じディメンションを指定する必要があります。

aws cloudwatch get-metric-statistics --namespace AWS/ApplicationELB \ --metric-name UnHealthyHostCount --statistics Average --period 3600 \ --dimensions Name=LoadBalancer,Value=app/my-load-balancer/50dc6c495c0c9188 \ Name=TargetGroup,Value=targetgroup/my-targets/73e2d6bc24d8a067 \ --start-time 2016-04-18T00:00:00Z --end-time 2016-04-21T00:00:00Z

出力例を次に示します。

{ "Datapoints": [ { "Timestamp": "2016-04-18T22:00:00Z", "Average": 0.0, "Unit": "Count" }, { "Timestamp": "2016-04-18T04:00:00Z", "Average": 0.0, "Unit": "Count" }, ... ], "Label": "UnHealthyHostCount" }