Skip to content

Amazon EventBridgeにアラートを通知する

Mackerelでは、アラートの内容のJSONをAmazon EventBridgeで受け取れます。通知を受け取った後の処理をAWS Lambdaなどを用いて自動化したい場合などに重宝するでしょう。

Amazon EventBridgeへの通知を追加する

コンソール画面で設定する

通知の設定は、チャンネルページのAmazon EventBridgeのフォームから、追加ができます。ご利用のAWSのアカウントID、通知を受け取るAWSリージョン、通知を識別するためのイベント名を指定して下さい。

  • AWSのアカウントIDの確認方法は、AWS アカウント ID - AWS 全般のリファレンスを参照してください。
  • Amazon EventBridgeでのMackerelのイベントソース名は以下のように作られます。
    • aws.partner/mackerel.io/{オーガニゼーション名}/{お客様が指定したイベント名}

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

Mackerelでの設定が完了したら、Amazon EventBridgeでイベントバス・ルールを作成し、Mackerelからの通知を受け取れるようにする必要があります。

  1. AWSコンソールのパートナーイベントソースのページを開きます。
  2. コンソールの操作するリージョンを、Mackerelで設定した通知を受け取るAWSリージョンに切り替えてください。
  3. 追加したイベントソースを選択し、右上にある イベントバスと関連付ける ボタンを押してください。
  4. イベントバスと関連付ける画面で必要なアクセス許可を選択し、 関連付ける ボタンを押してください。
  5. 左のパネルの、ルールのページを開き、イベントバスのドロップダウンリストから、作成したイベントバスを選択し、下部に表示されている ルールを作成 をクリックします
  6. ルールを作成画面では、名前、パターン、ターゲットを設定し、イベントバスの選択では、 カスタムイベントまたはパートナーイベントバス を選択し、追加したイベントバスを設定します。

JSONフォーマット

通知されるJSONは以下のような内容を含んでいます。 (項目は任意のタイミングで追加される場合があります)

javascript
{
  "orgName": "Macker...",
  "event": "alert",
  "memo": "memo....",
  "host": {
    "id": "22D4...",
    "name": "app01",
    "url": "https://mackerel.io/orgs/.../hosts/...",
    "type": "unknown",
    "status": "working",
    "memo": "",
    "isRetired": false,
    "roles": [
      {
        "fullname": "Service: Role",
        "serviceName": "Service",
        "serviceUrl": "https://mackerel.io/orgs/.../services/...",
        "roleName": "Role",
        "roleUrl": "https://mackerel.io/orgs/.../services/..."
      }
    ]
  },
  "alert": {
    "openedAt": 1473129912,
    "closedAt": 1473130092,
    "createdAt": 1473129912693, 
    "statusChangedAt": 1473130092,
    "criticalThreshold": 1.9588528112516932, 
    "duration": 5, 
    "isOpen": true, 
    "metricLabel": "MetricName", 
    "metricValue": 2.255356387321597, 
    "monitorName": "MonitorName", 
    "monitorOperator": ">", 
    "status": "critical", 
    "trigger": "monitor", 
    "id": "2bj...",
    "url": "https://mackerel.io/orgs/.../alerts/2bj...",
    "warningThreshold": 1.4665636369580741
  },
  "resourceInfo": {
    "service":"ec2",
    "region":null,
    "accountId":null,
    "resourceType":"instance",
    "resourceId":"i-12345..."
  }
}

JSONの各項目

KEYTYPEDESCRIPTION
orgNamestringアラートが発生しているオーガニゼーションの名前
eventstringalert固定
memostring監視ルールのメモ
hostobjectホスト情報(ホストメトリック時のアラートのみ出力)
serviceobjectサービス情報(サービスメトリック時のアラートのみ出力)
alertobjectアラート情報
resourceInfoobjectAWSのリソース情報(対応しているコンポーネントの場合のみ出力)

JSONの各項目(ホスト情報)

KEYTYPEDESCRIPTION
idstringホストID
namestringホスト名
urlstringホスト詳細のURL
statusstringホストステータス(working, standby, poweroff, maintenance
memostringホストに登録されているメモ
isRetiredboolean退役済みかどうか
rolesarray[object]ロール情報(ホストにロールが設定されている場合)

JSONの各項目(ロール情報)

KEYTYPEDESCRIPTION
fullnamestringサービス名:ロール名
serviceNamestringサービス名
serviceUrlstringサービス詳細のURL
roleNamestringロール名
roleUrlstringサービス詳細中のロールのURL

JSONの各項目(サービス情報)

KEYTYPEDESCRIPTION
idstringサービスID
memostringサービスに登録されているメモ
namestringサービス名
orgIdstringサービスが登録されているオーガニゼーションのID
rolesarray[object]ロール情報(サービスにロールが登録されている場合)

JSONの各項目(クエリによる監視のメトリック情報)

KEYTYPEDESCRIPTION
labelsobjectメトリックのラベル。例: { "http.method": "GET", "http.status_code": "200" }
namestringメトリック名。例: httpcheck.status

JSONの各項目(アラート情報)

KEYTYPEDESCRIPTION
idstringアラートのID
statusstringアラートのステータス(ok, warning, critical, unknown
isOpenbooleanアラートのオープンの状態
triggerstring通知が送信されたトリガー(monitoring(監視), manual(手動操作), monitorDelete(監視ルール削除), hostRetire(ホスト退役))
urlstringアラート詳細のURL
openedAtnumberアラートの発生時刻(エポック秒)
closedAtnumberアラートの解決時刻(エポック秒)
statusChangedAtnumberアラートのステータスが変わった時刻(エポック秒)
createdAtnumberアラートの発生時刻(エポックミリ秒)。非推奨で廃止予定。openedAtをご利用ください
monitorNamestringアラートを検知した監視項目名
metricLabelstring監視対象のメトリックなどの名称
metricValuenumberアラート検知時のメトリックの値
criticalThresholdnumberCRITICALの閾値
warningThresholdnumberWARNINGの閾値
monitorOperatorstring> or <
durationnumber監視間隔

※アラート情報の項目は、監視対象の種類(ホストメトリック, サービスメトリック, 外形監視, 式による監視, クエリによる監視)やそれぞれの設定項目によって増減します。たとえば外形監視でURLのみ設定されている場合のアラートではメトリックや閾値などの情報はアラートに含まれません。監視対象の種類と出力される項目は、監視ルール設定画面で入力可能な項目と対応します。

JSONの各項目(AWSのリソース情報)

EC2 の場合

mackerel-agentまたはAWSインテグレーションを導入しているEC2インスタンスで、アラートが発生した場合に、Mackerelですでに取得している情報*1を、ARN形式のフォーマットに従ったフィールドの情報を返却します。

KEYTYPEDESCRIPTION
servicestring[optional] サービス名 ec2
regionstring[optional] リージョン名
accountIdstring[optional] AWSアカウントID
resourceTypestring[optional] リソースの種別 instance
resourceIdstring[optional] リソースID(EC2 インスタンスID) i-12345...
[*1](#1) ただし、mackerel-agentの設定で `cloud_platform` を `none` としている場合は、これらの情報を取得できません。