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

More than 3 years have passed since last update.

MackerelのアラートをAWS Event Bridgeに通知してみる

Posted at

はじめに

AWSのEventBridgeで、外部Saasからの通知を受け取れると記載があったので、試してみました。
Meckerel初めて使うので、お作法は良く分かっていません。。。

事前準備

EC2インスタンスをMackerelの監視対象に

  • EC2インスタンスを適当な設定で構築
    • OSはAmazonLinux 2
    • Public IPを振る(NAT Gateway等があれば不要)
  • EC2にログインし、Mackerelエージェントをインストール、APIKEYも設定しておく
curl -fsSL https://mackerel.io/file/script/amznlinux/setup-all-yum-v2.sh | MACKEREL_APIKEY='AABBCCDD' sh
※APIKEYはお使いの環境によって異なるので注意

*************************************
     Done! Welcome to Mackerel!
*************************************
※上記が表示されたらOK
  • MackerelのUIで監視対象になっているか確認
    mc-mon-01.PNG

MackerelとEventBridgeの連携

Mackerelの公式の手順に沿って設定すれば問題ありません。一応、実施した内容を記載していきます。
Amazon EventBridgeにアラートを通知する

通知Channelの作成

MackerelのChannelメニューから、EventBridgeを選択して追加します。
イベント名は任意でOKです。(AWSコンソール側で表示される名前になります。)
mc-mon-02.PNG

監視対象の追加

続いて、Monitorsメニューから、ホスト死活監視を追加。
細かい設定は分からなかったので、全てデフォルトのままです。
mc-mon-03.PNG

AWSコンソールで連携設定をする

AWSコンソールのEventBridgeの画面を開くと、先ほど追加したイベントソースが表示されています。イベントバスと関連付けるを実施してください。
関連付けを行うと、ステータスがアクティブに変更されます。
mc-mon-04.PNG

アラート通知時に起動されるLambdaを作成

今回はテスト用なので、単純にログ出力するだけのLambda FunctionEventBridgeConsoleLogを定義しました。

lambda_function
import json

def lambda_handler(event, context):
    print('A alarm was notified  from Mackerel service.')
    print(event)
    return 'OK'

Event Bridgeにルールを作成

EventBridgeに新規でルールを作成し、上記で作成したLambda Functionをターゲットに設定します。詳細はキャプチャを参照してください。
ルール MackerelMonitoringRule を作成しましたと表示されれば完了です。
mc-mon-05.PNG
mc-mon-06.PNG
mc-mon-07.PNG

アラート通知→EventBridge→Lambda起動

では、実際にアラートを発生させてみます。
一番最初に構築したEC2インスタンスを、AWSコンソールからStopさせます。

しばらく放置すると、Mackerel側でアラートが発生しました。
mc-mon-08.PNG

CloudWatchで作成したルールMackerelMonitoringRuleが呼ばれているか確認します。
mc-mon-09.PNG

最後に、CloudWatch LogsでLambdaのログを確認します。
print(event)で出力したイベント情報が確認できればOKです。
この情報を元に、EC2の再起動や入れ替えなどを自動化できそうですね。

{
    "version": "0",
    "id": "ee6c34a9-ed85-e47d-e510-a355e2d9160f",
    "detail-type": "alert",
    "source": "aws.partner/mackerel.io/ys-dev-web/MackerelMonitoring",
    "account": "xxxxxxxx",
    "time": "2020-02-10T13:05:04Z",
    "region": "us-west-2",
    "resources": [],
    "detail": {
        "orgName": "ys-dev-web",
        "alert": {
            "createdAt": 1581339903296,
            "isOpen": "True",
            "monitorName": "connectivity",
            "trigger": "monitor",
            "closedAt": "None",
            "url": "https://mackerel.io/orgs/ys-dev-web/alerts/xxxxxxx",
            "openedAt": 1581339903,
            "status": "critical"
        },
        "host": {
            "name": "ip-10-0-0-102.us-west-2.compute.internal",
            "memo": "",
            "isRetired": "False",
            "id": "xxxxxx",
            "url": "https://mackerel.io/orgs/ys-dev-web/hosts/xxxxxxx",
            "status": "working",
            "roles": []
        },
        "event": "alert",
        "user": "None"
    }
}

最後に

Mackerel自体が良く分かっていないので、手順飛んでいたらすみません。。
ただ、慣れてきたらSaas監視ツールとの連携が便利になるのは間違いなさそうです。

次回は、自作のアプリケーションからカスタムイベントを登録してみたいと思います!

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