こんにちは、インフラエンジニアの綿引です。
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) などは任意で変更
以下がソースになります。
AWSTemplateFormatVersion: "2010-09-09" Description: CloudWatch Alarm ##################################################################### # Parameters 設定 ##################################################################### Parameters: SystemName: Description: EnvironmentName or ServerName Type: String Default: EnvironmentName # 環境名やサーバ名を記載 Ec2InstanceId: Description: Ec2 InstanceId Type: AWS::EC2::Instance::Id Ec2ImageId: Description: Ec2 ImageId (AMIID) Type: String Default: ami-XXXXXXXXXXXX # EC2 の ImageId を記載 Ec2InstanceType: Description: Ec2 InstanceType Type: String Default: XXXXXX # インスタンスタイプを記載 AlbLoadBalancer: Description: AlbLoadBalancer Type: String Default: app/XXXXXX/XXXXXXXXXXX # ALB の ARN を記載 AlbTargetGroup: Description: ALB TargetGroup Type: String Default: targetgroup/XXXXXX/XXXXXXXXXXX # ターゲットグループの ARN を記載 RdsDBInstanceIdentifier: Description: RDS DBInstanceIdentifier Type: String Default: XXXXXX # DB クラスター識別子を記載 SNSTopicName: Description: SNS Topic Name Type: String Default: arn:aws:sns:XXXXXXXXXXX # SNS トピック ##################################################################### # Resources 設定 ##################################################################### Resources: # CloudWatchアラームの定義 ##################################################################### # EC2 のアラーム設定 ##################################################################### EC2StatusCheckFailedAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} EC2 ステータスチェック MetricName: StatusCheckFailed Namespace: AWS/EC2 Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 0 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanThreshold # 閾値より大きい Dimensions: - Name: InstanceId Value: !Ref Ec2InstanceId EC2CPUCreditBalanceAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} EC2 CPU クレジットバランス MetricName: CPUCreditBalance Namespace: AWS/EC2 Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 200 # 閾値 TreatMissingData: notBreaching # 欠落データは良好 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanOrEqualToThreshold # 閾値以下 Dimensions: - Name: InstanceId Value: !Ref Ec2InstanceId EC2CPUUtilizationAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} EC2 CPU 使用率 MetricName: CPUUtilization Namespace: AWS/EC2 Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 2 # 閾値超過回数 Threshold: 95 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanOrEqualToThreshold # 閾値以上 Dimensions: - Name: InstanceId Value: !Ref Ec2InstanceId EC2MemUsedPercentAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} EC2 メモリ 使用率 MetricName: mem_used_percent Namespace: CWAgent Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 95 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanOrEqualToThreshold # 閾値以上 Dimensions: - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: InstanceType Value: !Ref Ec2InstanceType EC2DiskUsedPercentAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} EC2 DISK 使用率 MetricName: disk_used_percent Namespace: CWAgent Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 80 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanOrEqualToThreshold # 閾値以上 Dimensions: - Name: path Value: / # 環境に合わせて変更 - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: InstanceType Value: !Ref Ec2InstanceType - Name: device Value: nvme0n1p1 # 環境に合わせて変更 - Name: fstype Value: xfs # 環境に合わせて変更 ##################################################################### # EC2 ミドルウェアプロセスのアラーム設定 ##################################################################### ProcessAmazonCloudwatchAgentAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} amazon-cloudwatch-agent プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: amazon-cloudwatch-agent - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessAmazonSsmAgentAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} amazon-ssm-agent プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: amazon-ssm-agent - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessChronydAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} chronyd プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: chronyd - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessCrondAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} crond プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: crond - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessHttpdAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} Apache プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: httpd - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessRsyslogdAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} rsyslogd プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: rsyslogd - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessSshdAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} sshd プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: sshd - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessPostfixMasterAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} postfix_master プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: master - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessSssdAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} sssd プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: sssd - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ProcessTdAgentAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} td-agent プロセス MetricName: procstat_lookup_pid_count Namespace: CWAgent Statistic: Maximum # 最大 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: exe Value: td-agent - Name: InstanceId Value: !Ref Ec2InstanceId - Name: ImageId Value: !Ref Ec2ImageId - Name: pid_finder Value: native - Name: InstanceType Value: !Ref Ec2InstanceType ##################################################################### # ALB のアラーム設定 ##################################################################### ALBHealthyHostCountFtAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} ALB 正常ターゲット数 MetricName: HealthyHostCount Namespace: AWS/ApplicationELB Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 1 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanThreshold # 閾値未満 Dimensions: - Name: TargetGroup Value: !Ref AlbTargetGroup - Name: LoadBalancer Value: !Ref AlbLoadBalancer - Name: AvailabilityZone Value: ap-northeast-1a ALBRejectedConnectionCountFtAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} ALB 接続エラー数 (ALB 最大接続超過) MetricName: RejectedConnectionCount Namespace: AWS/ApplicationELB Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 0 # 閾値 TreatMissingData: notBreaching # 欠落データは良好 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanThreshold # 閾値より大きい Dimensions: - Name: LoadBalancer Value: !Ref AlbLoadBalancer ALBTargetConnectionErrorCountFtAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} ALB 接続エラー数 (LB - ターゲット間) MetricName: TargetConnectionErrorCount Namespace: AWS/ApplicationELB Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 0 # 閾値 TreatMissingData: notBreaching # 欠落データは良好 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanThreshold # 閾値より大きい Dimensions: - Name: LoadBalancer Value: !Ref AlbLoadBalancer ALBTargetTLSNegotiationErrorCountFtAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} ALB TLS接続エラー数 (LB - ターゲット間) MetricName: TargetTLSNegotiationErrorCount Namespace: AWS/ApplicationELB Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 0 # 閾値 TreatMissingData: notBreaching # 欠落データは良好 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanThreshold # 閾値より大きい Dimensions: - Name: LoadBalancer Value: !Ref AlbLoadBalancer ##################################################################### # RDS (Aurora) のアラーム設定 ##################################################################### RDSCPUCreditBalanceAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} Aurora CPU クレジットバランス MetricName: CPUCreditBalance Namespace: AWS/RDS Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 3 # 閾値超過回数 Threshold: 200 # 閾値 TreatMissingData: notBreaching # 欠落データは良好 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanOrEqualToThreshold # 閾値以下 Dimensions: - Name: DBClusterIdentifier Value: !Ref RdsDBInstanceIdentifier RDSDatabaseConnectionsAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} Aurora DatabaseConnections MetricName: DatabaseConnections Namespace: AWS/RDS Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 100 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanOrEqualToThreshold # 閾値以上 Dimensions: - Name: DBClusterIdentifier Value: !Ref RdsDBInstanceIdentifier RDSDeadlocksAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} Aurora デットロック回数 MetricName: Deadlocks Namespace: AWS/RDS Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 0 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanThreshold # 閾値より大きい Dimensions: - Name: DBClusterIdentifier Value: !Ref RdsDBInstanceIdentifier RDSFreeableMemoryAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} Aurora 空きメモリ容量 MetricName: FreeableMemory Namespace: AWS/RDS Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 104857600 # 閾値 (100MB) TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: LessThanOrEqualToThreshold # 閾値以下 Dimensions: - Name: DBClusterIdentifier Value: !Ref RdsDBInstanceIdentifier RDSCPUUtilizationAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref SNSTopicName # アラーム時のアクション AlarmName: !Sub ${SystemName} Aurora CPU 使用率 MetricName: CPUUtilization Namespace: AWS/RDS Statistic: Average # 平均 Period: 60 # 期間[s] EvaluationPeriods: 1 # 閾値超過回数 Threshold: 90 # 閾値 TreatMissingData: breaching # 欠落データは不良 OKActions: - !Ref SNSTopicName # 復旧時のアクション ComparisonOperator: GreaterThanOrEqualToThreshold # 閾値以上 Dimensions: - Name: DBClusterIdentifier Value: !Ref RdsDBInstanceIdentifier
実際のソース
ソースは以下 GitHub に上げておきましたので宜しければお使いください。
GitHub : CloudFormation-Templates CloudWatch-Alarm
※ 随時更新しているため上記記載の内容とは若干異なる場合があります
最後に
今回は CloudFormation を使って CloudWatch Alarm を作成しました。
今まで CloudWatch 系のブログをいくつか書いてきましたが、一旦の集大成です。
よろしければお使いください。