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 接続の総数。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
ClientTLSNegotiationErrorCount |
クライアントにより開始され、TLS エラーのためにロードバランサーとのセッションを確立しなかった、TLS 接続の数。考えられる原因としては、暗号やプロトコルの不一致、クライアントがサーバー証明書を検証できないため接続を閉じるなどがあります。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
ConsumedLCUs |
ロードバランサーが使用するロードバランサーキャパシティーユニット (LCU) の数です。1 時間当たりで使用する LCU 数の料金をお支払いいただきます。 詳細については、Elastic Load Balancing の料金表 レポート条件: 常に報告される 統計: All ディメンション
|
DesyncMitigationMode_NonCompliant_Request_Count |
RFC 7230 に準拠していないリクエストの数。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
DroppedInvalidHeaderRequestCount |
リクエストをルーティングする前に、ロードバランサーが無効なヘッダーフィールドを持つ HTTP ヘッダーを削除したリクエストの数。ロードバランサーは、 レポート条件: ゼロ以外の値がある 統計: All ディメンション
|
ForwardedInvalidHeaderRequestCount |
無効なヘッダーフィールドを持つ HTTP ヘッダーがあるロードバランサーによってルーティングされたリクエストの数。ロードバランサーは、 レポート条件: 常に報告される 統計: All ディメンション
|
GrpcRequestCount |
IPv4 および IPv6 経由で処理された gRPC リクエストの数。 レポート条件: ゼロ以外の値がある 統計 : 最も有用な統計は ディメンション
|
HTTP_Fixed_Response_Count |
成功した固定レスポンスアクションの数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTP_Redirect_Count |
成功したリダイレクトアクションの数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTP_Redirect_Url_Limit_Exceeded_Count |
レスポンスの Location ヘッダーの URL が 8K を超えているために、リダイレクトアクションを完了できなかった数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTPCode_ELB_3XX_Count |
ロードバランサーから送信された HTTP 3XX リダイレクトコードの数。この数には、ターゲットによって生成される応答コードは含まれません。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTPCode_ELB_4XX_Count |
ロードバランサーから送信される HTTP 4XX クライアントエラーコードの数。この数には、ターゲットによって生成される応答コードは含まれません。 リクエストの形式が不正な場合、または不完全な場合は、クライアントエラーが生成されます。ロードバランサーが HTTP 460 エラーコードを返す場合を除き、これらのリクエストはターゲットで受信されませんでした。この数には、ターゲットによって生成される応答コードは含まれません。 レポート条件: ゼロ以外の値がある 統計 : 最も有用な統計は ディメンション
|
HTTPCode_ELB_5XX_Count |
ロードバランサーから送信される HTTP 5XX サーバーエラーコードの数。この数には、ターゲットによって生成される応答コードは含まれません。 レポート条件: ゼロ以外の値がある 統計 : 最も有用な統計は ディメンション
|
HTTPCode_ELB_500_Count |
ロードバランサーから送信される HTTP 500 エラーコードの数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTPCode_ELB_502_Count |
ロードバランサーから送信される HTTP 502 エラーコードの数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTPCode_ELB_503_Count |
ロードバランサーから送信される HTTP 503 エラーコードの数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
HTTPCode_ELB_504_Count |
ロードバランサーから送信される HTTP 504 エラーコードの数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
IPv6ProcessedBytes |
IPv6 を使用したロードバランサーによって処理される総バイト数。この数は レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
IPv6RequestCount |
ロードバランサーによって受信された IPv6 リクエストの数。 レポート条件: ゼロ以外の値がある 統計 : 最も有用な統計は ディメンション
|
NewConnectionCount |
クライアントからロードバランサーへ、およびロードバランサーからターゲットへの、新たに確立された TCP 接続の総数。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
NonStickyRequestCount |
既存のスティッキーセッションを使用できなかったために、ロードバランサーが新しいターゲットを選択したリクエストの数。たとえば、リクエストが新しいクライアントから最初のリクエストで、維持 Cookie が提示されなかった、維持 Cookie が提示されたが、このターゲットグループに登録されたターゲットを指定しなかった、維持 Cookie の形式が誤っているか期限切れであった、内部エラーによりロードバランサーは維持 Cookie を読み取れなかったなどです。 レポート条件: 維持設定がターゲットグループで有効になっている。 [Statistics] (統計): 唯一意味のある統計は ディメンション
|
ProcessedBytes |
IPv4 および IPv6 を使用したロードバランサーによって処理される総バイト数 (HTTP ヘッダーおよび HTTP ペイロード)。この数には、クライアントとの間および Lambda 関数との間で送受信されるトラフィックに加えて、ユーザー認証が有効な場合は ID プロバイダー (IdP) からのトラフィックが含まれます。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
RejectedConnectionCount |
ロードバランサーが接続の最大数に達したため、拒否された接続の数。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
RequestCount |
IPv4 および IPv6 経由で正常に処理されたリクエストの数。このメトリクスは、ロードバランサーノードがターゲットを選択できたリクエストに対してのみ増分されます。ターゲットが選択される前に拒否されたリクエストは、このメトリクスには反映されません。 レポート条件: 常に報告される 統計: 最も有用な統計は ディメンション
|
RuleEvaluations |
1 時間の平均リクエスト頻度に基づいてロードバランサーによって処理されるルールの数。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
AWS/ApplicationELB
名前空間には、以下のターゲットのメトリクスが含まれます。
メトリクス | 説明 |
---|---|
HealthyHostCount |
正常と見なされるターゲットの数。 レポート条件: ヘルスチェックが有効になっている場合にレポートされます 統計値: 最も有用な統計値は ディメンション
|
HTTPCode_Target_2XX_Count ,
HTTPCode_Target_3XX_Count ,
HTTPCode_Target_4XX_Count ,
HTTPCode_Target_5XX_Count |
ターゲットによって生成された HTTP 応答コードの数。これには、ロードバランサーによって生成される応答コードは含まれません。 レポート条件: ゼロ以外の値がある 統計 : 最も有用な統計は ディメンション
|
RequestCountPerTarget |
ターゲットグループ内の各ターゲットによって受信されたリクエストの平均数。 レポート条件: 常に報告される 統計: 有効な唯一の統計は ディメンション
|
TargetConnectionErrorCount |
ロードバランサーとターゲット間で正常に確立されなかった接続数。ターゲットが Lambda 関数である場合、このメトリクスは適用されません。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
TargetResponseTime |
リクエストがロードバランサーから送信され、ターゲットからの応答を受信するまでの経過時間 (秒)。これは、アクセスログの レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
TargetTLSNegotiationErrorCount |
ロードバランサーにより開始され、ターゲットとのセッションを確立しなかった、TLS 接続の数。暗号化またはプロトコルの不一致が原因である場合があります。ターゲットが Lambda 関数である場合、このメトリクスは適用されません。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
UnHealthyHostCount |
異常と見なされるターゲットの数。 レポート条件: ヘルスチェックが有効になっている場合にレポートされます 統計値: 最も有用な統計値は ディメンション
|
AWS/ApplicationELB
名前空間には、ターゲットとして登録された Lambda 関数の次のメトリクスが含まれています。
メトリクス | 説明 |
---|---|
LambdaInternalError |
ロードバランサーまたは AWS Lambda の内部的な問題のために失敗した Lambda 関数へのリクエストの数。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
LambdaTargetProcessedBytes |
Lambda 関数へのリクエストおよび Lambda 関数からのレスポンスについて、ロードバランサーによって処理された総バイト数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
LambdaUserError |
Lambda 関数の問題のために失敗した Lambda 関数へのリクエストの数。たとえば、ロードバランサーに関数を呼び出すアクセス権限がなかった、形式が間違っているか必須フィールドがない JSON をロードバランサーが関数から受け取った、リクエストボディまたはレスポンスのサイズが最大サイズの 1 MB を超えているなどです。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
AWS/ApplicationELB
名前空間には、ユーザー認証用に以下のメトリクスが含まれます。
メトリクス | 説明 |
---|---|
ELBAuthError |
認証アクションが誤って設定されたため、ロードバランサーが IdP との接続を確立できなかったため、またはロードバランサーが内部エラーにより認証フローを完了できなかったため、完了できなかったユーザー認証の数。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
ELBAuthFailure |
IdP がユーザーまたは承認コードへのアクセスを拒否したため、または承認コードが複数回使用されため、完了できなかったユーザー認証の数。エラー理由コードを取得するには、アクセスログの error_reason フィールドを確認します。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
ELBAuthLatency |
ID トークンとユーザー情報を IdP に照会するのにかかった時間 (ミリ秒単位)。これらのオペレーションが 1 つ以上失敗した場合は、エラーになるまでの時間です。 レポート条件: ゼロ以外の値がある [Statistics] (統計): すべての統計は意味があります。 ディメンション
|
ELBAuthRefreshTokenSuccess |
ロードバランサーが、IdP から提供された更新トークンを使用してユーザークレームを正常に更新した回数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
ELBAuthSuccess |
成功した認証アクションの数。ロードバランサーが IdP からユーザークレームを取得した後、認証ワークフローが終了すると、このメトリクスが増分されます。 レポート条件: ゼロ以外の値がある 統計: 最も有用な統計は ディメンション
|
ELBAuthUserClaimsSizeExceeded |
設定された IdP が、11 KB を超えるサイズのユーザークレームを返した回数。 レポート条件: ゼロ以外の値がある [Statistics] (統計): 唯一意味のある統計は ディメンション
|
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 つあるとします。一方のノードは、HealthyHostCount
の Minimum
が 2、Maximum
が 10、Average
が 6 で、もう一方のノードは HealthyHostCount
の Minimum
が 1、Maximum
が 5、Average
が 3 です。このため、ロードバランサーの Minimum
は 1、Maximum
は 10、Average
は約 4 です。
Sum
統計は、すべてのロードバランサーノードにおける集計値です。メトリクスには期間あたり複数のレポートが含まれているため、Sum
はすべてのロードバランサーノードで集計されたメトリクスのみに適用されます。
SampleCount
統計は測定されたサンプルの数です。メトリクスはサンプリング間隔とイベントに基づいて集計されるため、通常、この統計は有用ではありません。たとえば、HealthyHostCount
の SampleCount
は、正常なホストの数ではなく各ロードバランサーノードが報告するサンプル数に基づいています。
パーセンタイルは、データセットにおける値の相対的な位置を示します。小数点以下最大 2 桁を使用して、任意のパーセンタイルを指定できます (p95.45 など)。たとえば、95 パーセンタイルは、95 パーセントのデータがこの値を下回っており、5 パーセントがこの値を上回っていることを意味します。パーセンタイルは、異常を分離するためによく使用されます。たとえば、アプリケーションがほとんどのリクエストをキャッシュから 1 ~ 2 ミリ秒で処理するのに、キャッシュが空の場合は 100 ~ 200 ミリ秒になるとします。最大値は最も速度が遅い場合を反映し、約 200 ミリ秒になります。平均値はデータの分散を示してはいません。パーセンタイルで、アプリケーションのパフォーマンスのより有益なビューが得られます。99 番目のパーセンタイルを Auto Scaling のトリガーあるいは CloudWatch アラームとして使用すると、2 ミリ秒以上の処理時間がかかるリクエスト数が 1% を超えないようターゲットを設定できます。
ロードバランサーの CloudWatch メトリクスの表示
Amazon EC2 コンソールを使用して、ロードバランサーに関する CloudWatch メトリクスを表示できます。これらのメトリクスは、モニタリング用のグラフのように表示されます。ロードバランサーがアクティブでリクエストを受信しているときにのみ、モニタリング用のグラフにデータポイントが表示されます。
別の方法としては、ロードバランサーのメトリクスの表示に、CloudWatch コンソールを使用することもできます。
Amazon EC2 コンソールを使用してメトリクスを表示するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ターゲットグループによってフィルタリングされたメトリクスを表示するには、以下の作業を実行します。
-
ナビゲーションペインで、[Target Groups] を選択します。
-
ターゲットグループを選択し、[Monitoring] タブを選択します。
-
(オプション) 結果を時間でフィルタリングするには、[Showing data for] から時間範囲を選択します。
-
1 つのメトリクスの大きいビューを取得するには、グラフを選択します。
-
-
ロードバランサーでフィルタリングされたメトリクスを表示するには、以下の操作を実行します。
-
ナビゲーションペインで、[Load Balancers] を選択します。
-
ロードバランサーを選択し、[Monitoring] タブを選択します。
-
(オプション) 結果を時間でフィルタリングするには、[Showing data for] から時間範囲を選択します。
-
1 つのメトリクスの大きいビューを取得するには、グラフを選択します。
-
CloudWatch コンソールを使用してメトリクスを表示するには
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 -
ナビゲーションペインで [Metrics (メトリクス)] を選択します。
-
名前空間に [ApplicationELB] を選択します。
-
(オプション) すべてのディメンションでメトリクスを表示するには、検索フィールドに名称を入力します。
-
(オプション) ディメンション別に検索するには、次のいずれかを選択します。
-
ロードバランサーにレポートされるメトリクスのみを表示するには、[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"
}