[CloudFormation]FATALエラーを検知してSNSでメール送信する機能をコードにまとめた

2020年11月1日

MetricFilter -> CloudWatchのアラーム -> SNSでメール送信というシンプルな構成です。
Lambdaを間にはさんでデータ整形するのもよくあります。

よく使うので、CloudFormationでまとめておきました。

 

AWSTemplateFormatVersion: "2010-09-09"
Description:
  Create SNS, CloudWatchAlarm, MetiricFilter
Parameters:
  Service:
    Type: String
    Default: "example"

  Email:
    Type: String
    Default: "example@example.com"

Resources:
  SendEmailTopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        -
          Endpoint: !Sub "${Email}"
          Protocol: email
      TopicName: !Sub "${Service}_topic"

  FatalErrorAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmActions:
        - !Ref SendEmailTopic
      AlarmDescription: Fatalエラーが発生しました
      MetricName: "Fatal"
      Namespace: LogMetrics
      Statistic: Sum
      Period: '60'
      EvaluationPeriods: '1'
      Threshold: '1'
      ComparisonOperator: GreaterThanOrEqualToThreshold
      TreatMissingData: notBreaching

  
  FatalFilter:
    Type: AWS::Logs::MetricFilter
    Properties:
      FilterPattern: "FATAL"
      LogGroupName: "LogGroupName"
      MetricTransformations:
        -
          MetricValue: 1
          MetricNamespace: LogMetrics
          MetricName: "Fatal"

MetricFileterのLogGroupNameには監視したいロググループの名前を入れてください。
コンソールからCloudWatch -> ロググループで確認できます。

FATALをERRORにしたり、しきい値をいじることでいろんなものに使えます。
FATALが1分で1回きたらメールで通知が来ます。
3分間でErrorが3回出たらメール通知とかもできます。