0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

terraformで既存EC2にアラート設定してみた

Posted at

概要

近々、大量にアラートを設定することになりそうなのでバチンと一発でできる方法がないか探してみました。
検証したところ、terraformでできたので記載します。

前提

windows11を利用した場合の手順になります。

手順

terraformダウンロード

  • terraformを下記ページからダウンロードする
    ※OSによって異なるので、自分が利用しているものを選択する

  • ダウンロードしたものをzipファイルを解凍する
  • 解答してできたフォルダの中にあるterraform.exeをパスを通す場所に移動する
    スクリーンショット 2025-03-21 044142.png
  • 今回は以下場所に設置しました
    C:\Users[ユーザー名]\terraform
    ※terraformのフォルダはなかったので、作成しました
     tarraformの中にterraform.exeが入ってます。

環境変数設定

  • 環境変数を設定しパスを通します
  • スタートボタンをクリックし、envと検索する
    システム環境変数の編集がでてくるので、クリック
    スクリーンショット 2025-03-21 044855.png
  • 以下画面になるので、環境変数をクリック
    image.png
  • ユーザー環境変数のPathをダブルクリック
    image.png
  • 新規をクリックしterraformを設置したパスを入力する
    image.png
  • 動作確認をするためにpowershellを開き、以下コマンドを入力
terraform --version

成功すると以下のように表示されます
image.png

terraformを動かしてみる

  • terraform用のフォルダを作成し、適当な.tfに以下内容を入力する
  • 自分はec2-alarm.tfというファイル名にしました
# 既知のインスタンスIDをリストで定義
locals {
  instance_ids = [
    "[インスタンスIDを入力する場所]",
    # 必要なだけインスタンスIDを追加してください
  ]
}

# 各インスタンスに同じCloudWatchアラームを設定
resource "aws_cloudwatch_metric_alarm" "ec2_cpu_alarm" {
  for_each = toset(local.instance_ids)
  
  alarm_name          = "[${each.value}]CPUUtilization-High-90%"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 2
  metric_name         = "CPUUtilization"
  namespace           = "AWS/EC2"
  period              = 300
  statistic           = "Average"
  threshold           = 90
  alarm_description   = "EC2 CPU使用率が90%を超過 (${each.value})"
  alarm_actions       = ["[通知をしたいSNSのARNを入力する]"]
  
  dimensions = {
    InstanceId = each.value
  }
}

補足
alarm_name = "[${each.value}]CPUUtilization-High-90%"
${each.value}の部分はインタンスIDが入ります

  • provider.tfファイルを作成し、以下内容を入力する
provider aws{
    access_key = "[アクセスキーを入力する場所]"
    secret_key = "[シークレットアクセスキーを入力する場所]"
    region = "ap-northeast-1"
}
  • terraform用に作成したフォルダで、powershellを実行する
  • 以下コマンドを実行する
#初期設定をする
terraform init

#作成できるものの確認をする
terraform plan

#作成する 
#作成されるものが表示されたあと問題なければyesと入力する
terraform apply

できあがったものを確認する

AWSコンソールにログインし、CloudWatchを確認するとアラートが作成されてます。
今回の場合ですと、東京リージョンに作成されているはずです。

アラートが不要になった場合は、以下コマンドで削除できます。
terraform destroy
削除の確認が入りますので、問題ない場合はyesと入力してください。

まとめ

アラートを複数作成する方法を記載しました。

同じ環境にEC2が100台ある場合インスタンスIDを入力してあげたら、バチンと100個アラートが作成されます。

これの応用で、別アラートを設定することも可能なのでいけそうだなと思った人は色々やってみてください。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?