Skip to content

Webhookにアラートを通知する

Webhookを利用することでアラートの内容のJSONをPOSTで受け取れます。通知を受け取った後の処理を自動化したい場合などに重宝するでしょう。

Webhookへの通知を追加する

通知の設定は、チャンネルページのWebhookのフォームから、追加ができます。MackerelサーバーからのPOSTを受け取るURLを指定して下さい。

JSONフォーマット

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

json
{
  "orgName": "Macker...",
  "event": "alert",
  "imageUrl": "https://mackerel.io/embed/public/.../....png",
  "memo": "memo....",
  "type": "host",
  "message": "MetricName 2.26 > 1.96",
  "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
  }
}

JSONの各項目

KEYTYPEDESCRIPTION
orgNamestringアラートが発生しているオーガニゼーションの名前
eventstringalert固定
typestring監視ルールの種別。疎通 ("connectivity")、ホストメトリック ("host")、サービスメトリック ("service")、外形監視 ("external")、チェック監視 ("check")、式監視 ("expression")、ロール内異常検知 ("anomalyDetection") のいずれかになります。
messagestringアラートのメッセージ
hostobjectホスト情報(ホストメトリック時のアラートのみ出力)
serviceobjectサービス情報(サービスメトリック時のアラートのみ出力)
alertobjectアラート情報
imageUrlstring / null関連するグラフの画像URL
ただし、関連するグラフを表示 がオフになっている場合やアラートに関連するグラフがない場合は nullが設定されます。
memostring監視項目のメモ

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のみ設定されている場合のアラートではメトリックや閾値などの情報はアラートに含まれません。監視対象の種類と出力される項目は、監視ルール設定画面で入力可能な項目と対応します。

Webhook活用方法

Webhookをセキュアに使うために

Webhookをセキュアに利用するために、以下の対策を組み合わせて利用することを推奨します。

  • SSLを利用する
    • 独自証明書や一部の認証局には対応していません
  • ベーシック認証を設定しURLに認証情報を含める
    • https://user:p4ssw0rd@example.com のような形式
  • IPアドレス制限を実施する