New Relicではシステムで異常が発生した場合にさまざまな手段で通知やツール連携を行うことができます。その一つの方法にAmazon EventBridgeがあります。Amazon EventBridgeを利用することでアラートを通知するだけでなく、その後のアクションを自動化することができインシデント対応を効率化することができます。本ブログでは、アラートの延長での架電を例に、Amazon EventBridgeとの連携方法を説明します。

全体構成

本ブログで設定する全体構成です。まず、New Relicでインシデントが発生した場合に、Amazon EventBridgeにアラート通知します。Amazon EventBridgeにはAWS Lambdaを実行するルールを定義しておき、そのAWS LambdaはAmazon ConnectのAPIを使って架電をするように設定しておきます。

notification-to-awseventbridge

 

設定方法

本ブログでは、New RelicとAmazon EventBridgeの連携設定方法を中心にご説明します。Amazon Connectによる架電の方法やAWS LambdaによるAmazon ConnectのAPI呼び出し方法については説明しませんので対応するドキュメントを参照してください。

では、New RelicとAmazon EventBridgeの連携設定方法を説明します。詳細は公式ドキュメントに記載されていますのでそちらを参照してください。

New Relic イベントソースを設定

AWSのコンソールにログインし、Amazon EventBridgeのパートナーイベントソースからNew Relicを選択します。

EventBridge1

 

AWSアカウントIDを記憶しておきます。

EventBridge2

AWS EventBridgeを通知先(Destination)として登録する

New RelicのUIにアクセスし、Aerts & AIのDestinationsにて通知先としてAWS EventBridgeを登録します。任意の名称とリージョン、前段のステップで取得したAWS account IDを指定します。

EventBridge3

 

EventBridge4

 

Workflowの通知先としてAWS EventBridgeを指定する

アラート発火時に、先ほど登録したAWS EventBridgeに通知が行くようWorkflowを設定します。NotifyのセクションにてAWS EventBridgeを選択します。
 

EventBridge5

 

Destinationには前のステップで作成したものを指定します。Event sourceは未作成の場合、任意の名前を指定します。

EventBridge6

 

Event sourceを指定した後は、AWS管理コンソールでパートナーイベントソースとして指定したイベントソースが作成されていることを確認します。

EvevntBridge8

 

イベントバスと関連づける

先のステップで作成したイベントソースをイベントバスと関連づけます。

EventBridge9

 

AWSの管理コンソールで作成したイベントソースを選択肢、イベントバスと関連付けます。

EventBridge10

 

EventBridge11

 

イベントソースのステータスがアクティブになりました。

EventBridge12

 

関連付けたイベントバスにてスキーマの検出を開始します。

EventBridge13

 

EventBridge14

 

ルールを作成する

最後にAWS EventBridge経由でLambdaを実行するルールを作成します。その際、先ほど作成したイベントバスを指定します。

EventBridge15

 

イベントソースは、「AWSイベントまたはEventBridgeパートナーイベント」を選択します。

EventBridge16

 

イベントパターンの設定においては、EventBridgeパートナー、New Relicを選択します。

EventBridge17

 

最後はターゲットの設定です。ターゲットは何を実施したいかに依存しますが、今回は架電のためのAmazon ConnectのAPIをコールするAWS Lambdaをターゲットとします。

EventBridge18

 

無事にAWS LambdaのトリガーにAWS EventBridgeが追加されました。ここまでの設定で、アラート発火からAWS EventBridge、AWS Lambdaの呼び出しまで完了しました。

EventBridge19

参考:Amazon Connect呼び出し用 AWS Lambda

簡単ではありますが、AWS EventBridge経由で呼び出され、Amazon Connect経由で架電をするAWS Lambda関数の例を示します。メッセージはNew Relicのアラート通知の際にAWS EventBridge呼び出しのペイロードから取得し、それ以外のAmazon Connectの静的な設定はAWS Lambdaの環境変数から取得しています。

import boto3
import os

def handler(event, context):
    
    connect = boto3.client('connect')

    message = event['detail']['message']
    destinationPhoneNumber=os.environ['DESTINATION_PHONE_NUMBER']
    sourcePhoneNumber=os.environ['SOURCE_PHONE_NUMBER']
    contactFlowId=os.environ['CONTACT_FLOW_ID']
    instanceId=os.environ['INSTANCE_ID']

    resp = connect.start_outbound_voice_contact(
        DestinationPhoneNumber=destinationPhoneNumber,
        ContactFlowId=contactFlowId,
        InstanceId=instanceId,
        SourcePhoneNumber=sourcePhoneNumber,
        Attributes={
            'message': message
        }
    )

最後にAmazon Connectでアラート契機の架電が正しくできているかを確認します。

無事に指定した番号への架電が行われ、通知に含まれていたメッセージ等も渡っていることが確認できます。

Amazon Connect

まとめ

今回は、AWS EventBridgeを活用しNew Relicのアラートを契機に対処を自動化するための設定をご紹介しました。今回は架電を例にしましたがEventBridgeのターゲットを変更すれば他の用途にも利用できます。監視からのアクションの自動化によって運用の効率をさらに上げていきましょう。