New Relic監視アラートのLINE通知をAWSサーバーレスで自動化

Ai

前回のブログで、New Relic のアラートをメールに通知する記事を書きました。よかったら、見てみてください。今回はLambda を使って、Line に通知をしてみたいと思います。会社ではslack であったり、Chatwork であったり、ビジネスツールに通知すると思います。ただ、個人では流石につかいませんよね。。。ということでLine に通知できたら便利なので、通知設定していきます!

New Relic とEventbridge の連携について

以前のブログで書きましたので、その設定に関しては下記のブログで設定してみてください。変更点のみを今回

Eventbridge のターゲットをLambda に変更

前回のブログでは、SNS の通知を設定したのですが、今回はLambda と連携する必要があるので、Lmabda に変更していきます。

ターゲットをLambda に変更

ロール変更

新しいロールを選択して、適当にRole 名称をつけてあげます。

他のところは、そのままの設定で大丈夫です。これで、Lambda の連携は完了です。

Lambda のコードをデプロイ

今回もコードをGithub で管理しているので、それを参照してみてください!

今回のレポジトリ

Lambda のコードのみを管理しているので、デプロイ方法は他の記事でまた紹介します!

GitHub - kentaindeed/newrelic-notify-lambda: new relic の通知を eventbridge => lambda => Line に通知する関数です
new relic の通知を eventbridge => lambda => Line に通知する関数です - kentaindeed/newrelic-notify-lambda

Layer に関しては以前紹介したLine 通知の記事のLibrary を使用しています。

今回のポイント

今回のポイントは下記になります。

  • Lambda でNew Relic のEvent を取得する処理
  • New Relic で必要な情報のみを選定する
  • Line Flex Message を使ってLine 通知をオシャレにする

New Relic => Eventbridge のjson 構造に関して

Eventbridge から渡って来る時は、下記のような構造になります。

{
  "version": "0",
  "id": "...",
  "detail-type": "...",
  "source": "NewRelicEventSource", // New Relic からの通知であることを示すソース
  "account": "...",
  "time": "...",
  "region": "...",
  "resources": [
    "..."
  ],
  "detail": {
    // ここに New Relic のイベントテンプレートで定義したデータが入ります
  }
}

つまりは、detail に全てalert の内容が入ってきます。なので、detail の内容を取得する処理を入れる必要があります。

New Relic event 取得処理

これは簡単で、Lambda が受け取ったevent のdetail の中の処理を変数に入れてあげるだけです。
これはとても簡単ですね。detail の中でも不要な情報もでてくるので、その選定もここでしてあげます。

def process_newrelic_alert(event):
    """
    New Relicアラートイベントを処理
    """
    detail = event.get('detail', {})
    
    # アラート情報を抽出
    alert_info = {
        'policy_name': detail.get('alertPolicyNames'),
        'condition_name': detail.get('alertConditionNames'),
        'severity': detail.get('priority'),
        'incident_url': detail.get('issueUrl'),
        'timestamp': event.get('time', ''),
        'account_id': detail.get('accountId', ''),
        'entity_name': detail.get('entityName', ''),
    }
    
    logger.info(f"Extracted alert_info: {alert_info}")

    return alert_info

Flex message に関して

今回、Flex Message を使うこと自体が初めてだったので、今回はAI に書いてもらいました。CSS の要素とかもかかわるとあまり詳しくないので、こういうの書いてくれるの本当にありがたいです。

Flex Message Simulator というのがあるらしいので、そこで一から作成したい人はチェックしてみてください。面白そうですが、またの機会にしようと思います。

チュートリアル - Flex Message Simulatorでデジタル名刺を作成する
LINE Developersサイトは開発者向けのポータルサイトです。LINEプラットフォームのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、...

最後に環境変数を設定

今回も前に紹介したGroup ID とLine Token で認証しているので、Lambdaの環境変数で設定してあげてください!

Line 通知の画像

こんな感じで通知されます。View in New Relic を押したら、New Relic のコンソールに移動できるみたいな感じです。Policy Name がダサいのがちょっと残念ですね。もうちょっと改善の余地ありです。

まとめ

Lambda の管理が少し大変ですが、こんな感じでアラート通知もLine にできたりするので、興味のある人はやってみてください!!

\ 最新情報をチェック /

コメント

PAGE TOP
タイトルとURLをコピーしました