Pocket

こんにちは、インフラエンジニアの綿引です。

CloudWatch Alarm で監視したいが、設定が面倒と感じる方も多いのではないでしょうか?

そこで今回は CloudWatch Alarm を AWS CloudFormation で作成したいと思います。

対象の方は以下のような方でしょうか。

 

  • CloudWatch Alarm を手動で作りたくない
  • 監視の内製化を検討している

 

テンプレートファイルの作成

ではテンプレートファイルを作成していきます。

今回も yaml で作成していきます。

前提

その前にまず前提です。

CloudWatch Alarm にて監視するサービスは以下です。

 

  • EC2
  • EC2 ミドルウェアプロセス
  • ALB
  • RDS (Aurora)

 

また今回「プロセス監視」と「アラームを SNS を使って通知させる」ということをやっているため、以下も前提とさせていただきます。

 

  • CloudWatch エージェント を EC2 に導入済みである
  • Amazon SNS を設定済みである

 

CloudWatch エージェントのインストール方法は以下に書いてあるので、よろしければご覧ください。

・CloudWatch で EC2 のメモリ・ディスク使用率を監視する

SNS の設定は以下を参考に実施いただければ、Slack まで通知可能です。

もちろんメールだけでも良ければ SNS だけ設定すれば OK です。

・Amazon CloudWatch + Amazon SNS + AWS Chatbot を使ってアラームを Slack に通知してみる

監視項目とメトリクス一覧

今回 Alarm を設定するメトリクスを一覧にしました。

監視項目(自分で勝手につけました)と対応するメトリクス、名前空間を記載しています。

どのサービスの監視項目かは名前空間を見て頂ければと思います。

監視項目 名前空間 監視メトリクス
EC2 ステータスチェック AWS/EC2 StatusCheckFailed
EC2 CPU クレジットバランス AWS/EC2 CPUCreditBalance
EC2 CPU 使用率 AWS/EC2 CPUUtilization
EC2 メモリ 使用率 CWAgent mem_used_percent
EC2 DISK 使用率 CWAgent disk_used_percent
amazon-cloudwatch-agent プロセス CWAgent procstat_lookup_pid_count
amazon-ssm-agent プロセス CWAgent procstat_lookup_pid_count
chronyd プロセス CWAgent procstat_lookup_pid_count
crond プロセス CWAgent procstat_lookup_pid_count
Apache プロセス CWAgent procstat_lookup_pid_count
rsyslogd プロセス CWAgent procstat_lookup_pid_count
sshd プロセス CWAgent procstat_lookup_pid_count
postfix_master プロセス CWAgent procstat_lookup_pid_count
sssd プロセス CWAgent procstat_lookup_pid_count
td-agent プロセス CWAgent procstat_lookup_pid_count
ALB 正常ターゲット数 AWS/ApplicationELB HealthyHostCount
ALB 接続エラー数 (ALB 最大接続超過) AWS/ApplicationELB RejectedConnectionCount
ALB 接続エラー数 (LB – ターゲット間) AWS/ApplicationELB TargetConnectionErrorCount
ALB TLS接続エラー数 (LB – ターゲット間) AWS/ApplicationELB TargetTLSNegotiationErrorCount
Aurora CPU クレジットバランス AWS/RDS CPUCreditBalance
Aurora DatabaseConnections AWS/RDS DatabaseConnections
Aurora デットロック回数 AWS/RDS Deadlocks
Aurora 空きメモリ容量 AWS/RDS FreeableMemory
Aurora CPU 使用率 AWS/RDS CPUUtilization

構成や環境などによって監視したいメトリクスも異なるかとは思いますので、必要なメトリクスがなかったり、不要なメトリクスがある場合は、任意でカスタマイズして頂ければと思います。

テンプレートファイル

次は実際のテンプレートファイルです。

各種設定を共通化するため「Parameters」を使用しているので、以下の「XXXXXXXX」の部分だけ、ご自身の環境に合わせて変更頂ければ Alarm の設定が可能になっています。

「Parameters」の一番上で定義している「SystemName」だけは、CloudWatch アラームのマネジメントコンソールから見やすいように追加した、必須ではないパラメータなので、もし不要であれば任意で外してしまってください。

※ 外した場合は「Resources」の「!Sub ${SystemName}」も全て消してください。

他にも閾値や閾値超過回数、欠如データの扱いなどもご自身の環境に合わせて変更いただけると良いかと思います。

変更点・注意点を以下に記載しますのでご確認ください。

 

  • 環境に合わせて「Parameters」の XXXX 部分を変更
  • 閾値 (Threshold) や、閾値超過回数 (EvaluationPeriods) などは任意で変更

 

以下がソースになります。

実際のソース

ソースは以下 GitHub に上げておきましたので宜しければお使いください。

GitHub : CloudFormation-Templates CloudWatch-Alarm

※ 随時更新しているため上記記載の内容とは若干異なる場合があります

最後に

今回は CloudFormation を使って CloudWatch Alarm を作成しました。

今まで CloudWatch 系のブログをいくつか書いてきましたが、一旦の集大成です。

よろしければお使いください。

Pocket

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る