2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon EventBridgeアラートミュートルームでアラート疲れを解消

2
Posted at

CloudWatchアラームの静観

CloudWatchメトリクスをCloudWatchアラームで監視し、アクションとしてSNSのメール通知を使用することで、メール等を利用したアラート監視が可能です。

mu01.png

この場合、メンテナンスなどでアラートの静観を行いたい場合は、アラートアクションの有効化・無効化で対応が可能です。また、先日リリースされたCloudWatchアラームミュートルール機能を利用すれば、予め予定していたスケジュールでのアラート静観設定が可能です。

EventBridgeでの監視

CloudWatchアラームでの監視とは別に、EventBridgeを使用してCloudWatchメトリクスを監視する方法もあります。

mu02.png

この場合、CloudWatchではアクションは何も指定せず、EventBridge側でCloudWatchのステータスを監視して、ステータスに変化が発生した際にSNSなどの次のアクションを実行します。

{ "detail-type": ["CloudWatch Alarm State Change"], "source": ["aws.cloudwatch"] }

この方法では、CloudWatch側の設定(有効化・無効化)ではアラート静観を行うことができません。EventBridgeの検知条件で特定のアラートを除外する設定は可能ですが、都度条件を書き換えるのは大変です。そこで今回は、EventBridgeでCloudWatchメトリクスを監視する際に、DynamoDBと組み合わせて静観設定を行う仕組みを作成しました。

EV.png

事前にDynamoDBに静観対象のアラート名を追加しておきます。CloudWatchのステータスをEventBridgeで検知する箇所は同様ですが、ステータス変化を検知後、Lambdaを実行します。このLambdaでは、DynamoDBに登録されたアラートを静観対象とします。

mu03.png

コードは下記の通りです。alarm-mute-tableというテーブル内にMute=Trueのアラートは、後続のSNS送信を実行せず、アラート静観を行います。

import json
import boto3

sns_client = boto3.client('sns')
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('alarm-mute-table')

def lambda_handler(event, context):
    alarm_name = event.get('detail', {}).get('alarmName')
    
    # DynamoDBでミュート確認
    response = table.get_item(Key={'AlarmName': alarm_name})
    if response.get('Item', {}).get('Mute') == True:
        return {'statusCode': 200, 'body': 'Muted'}
    
    # SNS送信
    sns_client.publish(
        TopicArn='arn:aws:sns:ap-northeast-1:123456789012:alert-topic',
        Message=json.dumps(event, indent=2),
        Subject=f"CloudWatch Alarm: {alarm_name}"
    )
    
    return {'statusCode': 200, 'body': 'Sent'}

DynamoDBのレコードですが、下記のように静観対象としたいアラートを登録して、Muteをtrueとしておきます。

mu06.png

よく使用するものに関してはDynamoDBに登録しておき、普段はfalseの状態で通常監視、メンテナンス時はtrueのステータスに変更することで、アラート静観設定を行うことが可能です。

mu05.png

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?