0
0

More than 1 year has passed since last update.

S3のjsonファイルを参照してCloudWatchアラームをCLIで設定する

Last updated at Posted at 2023-03-02

はじめに

20台以上あるEC2のメモリー使用率を監視して閾値超過したらアラーム通知することになりました。
20台をコンソールからチマチマ設定するのが手間なので、jsonファイルに定義してCLIでさくっと設定したいなぁということでやり方を調べました。
ついでにjsonファイルをローカル環境に持っているのも嫌なのでS3に保存しておきCLIで呼び出したいと思います。

サービス構成

いたって普通。

CloudWatchアラームのjson作成

CloudWatchアラームをjsonで定義したファイルを作成します。

json
{
  "AlarmActions": [
    "arn:aws:sns:ap-northeast-1:11111111:aws_alarms"
  ],
  "AlarmName": "MemoryUtilization_Over80%",
    "Namespace": "xxx",
  "MetricName": "Memory % Committed Bytes In Use",
  "Dimensions": [
    {
      "Name": "InstanceId",
      "Value": "i-xxx"
    },
    {
      "Name": "InstanceId",
      "Value": "i-yyy"
    },
  ],
  "Statistic": "Maximum",
  "Period": 300,
  "EvaluationPeriods": 1,
  "Threshold": 80,
  "ComparisonOperator": "GreaterThanOrEqualToThreshold"
}

各項目の意味は次のとおりです。

  • AlarmName: アラームの名前を指定する。
  • ComparisonOperator: メトリックスの比較演算子を指定する。この例では、GreaterThanOrEqualToThreshold つまり、しきい値以上の場合にアラートを発生させるように設定されている。
  • EvaluationPeriods: アラームがトリガーされる前に必要な連続した測定値の数。
  • MetricName: 監視するメトリックスの名前を指定する。この例では、Memory % Committed Bytes In Use、つまりメモリ使用率を監視している。
  • Namespace: 監視するメトリックスの名前空間を指定する。この例では、xxx、つまり Amazon CloudWatch エージェントによって生成されたメトリックスを監視している。
  • Period: メトリックスのサンプリング間隔を指定する。
  • Statistic: メトリックスの集計方法を指定する。この例では、Maximum つまり、測定値の最大値を使用してアラートを発生させるように設定されている。
  • Threshold: アラートが発生する閾値を指定する。この例では、80%を閾値として設定している。
  • ActionsEnabled: アクションを有効にするかどうかを指定する。この例では、trueに設定している。
  • AlarmActions: アラームの発生時に実行するアクションを指定する。この例では、指定された SNS トピックに通知するように設定されている。
  • Dimensions: 監視対象のリソースに関する情報を指定する。この例では、EC2 インスタンスの ID を InstanceId という名前で指定している。連続記載で複数のEC2を指定可能。

このファイルをS3に保存します。S3のバケットポリシーにはCLIで作業するIAMユーザーで参照権限を付けておきます。
こんな感じ。

json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudWatchAlarms",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111:user/username"
                ]
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}

CLIでの設定

まず、S3に保存したファイルをインスタンスにコピーします。

aws s3 cp s3://xxx/MemoryUtilization_Over80%.json MemoryUtilization_Over80%.json

続いてCloudWatchアラームに反映します。

aws cloudwatch put-metric-alarm --cli-input-json file://~/MemoryUtilization_Over80%.json

削除する場合

設定した内容はコンソールからも確認可能です。
また、設定削除はCLIは次のとおりです。

aws cloudwatch delete-alarms --alarm-names 'MemoryUtilization_Over80%'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0