監視対象としたいALBのCloudWatchメトリクスがまだ出力されていない状況においてアラームを設定する方法

ALB で監視対象としたい CloudWatch メトリクスの値がまだマネジメントコンソール上に出力されていない状況において、CLI を用いて CloudWatch アラームを設定する方法を紹介します。
2021.11.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

ALB のメトリクス監視を CloudWatch アラームとして設定したいと思った際に、監視対象としたいメトリクス情報がマネジメントコンソール上に存在しない場合があります。CloudWatch に対して一度も値が送信されていないメトリクスはマネジメントコンソール上に表示されないためです。

今回は上記の場合において、ALB のメトリクス監視設定を CLI で行う方法を紹介します。

CloudWatch に出力されていないメトリクスの監視設定については下記ブログでも紹介されています。

ALB の CloudWatch アラーム設定

ALB のメトリクスの中で、例として次のメトリクスの CloudWatch アラーム設定を実際に行ってみたいと思います。

  • RejectedConnectionCount

まだ一度も CloudWatch にメトリクスの値が送信されていないため、マネジメントコンソール上からは RejectedConnectionCount メトリクスを確認することはできません。

そのため、マネジメントコンソール上で CloudWatch アラームを設定しようとしても、メトリクスを選択できない状態となります。

ですが、対処方法の一つとして CLI を利用することでアラームを設定できます。

RejectedConnectionCount メトリクスのアラームを設定する CLI のコマンド例を示します。実際に設定する場合はシステムに適した設定内容に変更してください。

$ aws cloudwatch put-metric-alarm --alarm-name test-rejected-connection-count-alarm \
--metric-name RejectedConnectionCount \
--namespace AWS/ApplicationELB \
--statistic Sum \
--period 300 \
--threshold 10.0 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions Name=LoadBalancer,Value=app/test-alb/3c0602bb9392694b \
--evaluation-periods 1 \
--datapoints-to-alarm 1 \
--treat-missing-data missing \
--alarm-actions arn:aws:sns:ap-northeast-1:111122223333:test-sns-topic

CLI を利用することで CloudWatch アラームの設定ができました。

アラーム設定の参考情報

参考ドキュメント

CLI でコマンドを組み立てる際には Application Load Balancer の CloudWatch メトリクス を参照して、特に次の点を確認するとよいです。

メトリクス名

コマンドで指定するメトリクス名が合っているか確認します。スペルミスがある場合でも設定できてしまうためです。

統計方法

最も有用な統計方法を確認します。

Dimensions

設定する Dimensions を確認します。今回の例では LoadBalancer のみを指定していますが、メトリクスにより指定する Dimensions が異なります。

例えば、HealthyHostCount メトリクスでは TatgetGroup も指定する必要があります。「TargetGroup, LoadBalancer」を指定する dimensions オプションの設定例を示します。

--dimensions Name=TargetGroup,Value=targetgroup/test-alb-tg/39ee24d21b601c71 Name=LoadBalancer,Value=app/test-alb/3c0602bb9392694b


既に出力されているメトリクスを利用してアラーム作成のコマンドオプションを検討する方法

CLI のコマンド内容を検討する際には、既に存在しているメトリクスからダミーのアラームを作成し、その情報を参考にして、設定したいメトリクスに関するアラームのコマンド内容を検討する方法もあります。

例えば、今回の例で指定した Dimensions には既に RequestCount メトリクスが存在していたので、一時的に RequestCount メトリクスのアラームを作成して describe-alarms により設定情報を出力することで、参考にすることができます。

$ aws cloudwatch describe-alarms --alarm-names test-request-count-alarm
{
    "MetricAlarms": [
        {
            "AlarmName": "test-request-count-alarm",
            "AlarmArn": "arn:aws:cloudwatch:ap-northeast-1:111122223333:alarm:test-request-count-alarm",
            "AlarmConfigurationUpdatedTimestamp": "2021-11-08T14:40:10.585000+00:00",
            "ActionsEnabled": true,
            "OKActions": [],
            "AlarmActions": [
                "arn:aws:sns:ap-northeast-1:111122223333:test-sns-topic"
            ],
            "InsufficientDataActions": [],
            "StateValue": "OK",
            "StateReason": "Threshold Crossed: 1 out of the last 1 datapoints [0.0 (08/11/21 14:34:00)] was not greater than or equal to the threshold (10.0) (minimum 1 datapoint for ALARM -> OK transition).",
            "StateReasonData": "{\"version\":\"1.0\",\"queryDate\":\"2021-11-08T14:40:50.831+0000\",\"startDate\":\"2021-11-08T14:34:00.000+0000\",\"statistic\":\"Average\",\"period\":300,\"recentDatapoints\":[0.0],\"threshold\":10.0,\"evaluatedDatapoints\":[{\"timestamp\":\"2021-11-08T14:34:00.000+0000\",\"sampleCount\":21.0,\"value\":0.0}]}",
            "StateUpdatedTimestamp": "2021-11-08T14:40:50.837000+00:00",
            "MetricName": "RequestCount",
            "Namespace": "AWS/ApplicationELB",
            "Statistic": "Average",
            "Dimensions": [
                {
                    "Name": "LoadBalancer",
                    "Value": "app/test-alb/3c0602bb9392694b"
                }
            ],
            "Period": 300,
            "EvaluationPeriods": 1,
            "DatapointsToAlarm": 1,
            "Threshold": 10.0,
            "ComparisonOperator": "GreaterThanOrEqualToThreshold",
            "TreatMissingData": "missing"
        }
    ],
    "CompositeAlarms": []
}

まとめ

CloudWatch に対して一度も値が送信されていない ALB のメトリクスに関して、CloudWatch アラームを設定する方法を紹介しました。アラームを設定しようとしたときに、メトリクス情報が見当たらずに困っているどなたかのご参考になれば幸いです。