アラート API を使用したアラートの管理

IBM Cloud Monitoringインスタンスでは、MonitoringAPIを使用してアラートを管理できます。APIを使用します。

cURL を使用する方法について詳しくは、cURL コマンドを参照してください。

ユーザー・アラートについての詳細の取得

以下の cURL コマンドを使用して、アラートに関する情報を取得できます。

curl -X GET <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"

説明

  • <REST_API_ENDPOINT> は、REST API 呼び出しの対象となるエンドポイントを示す。 詳しくは、MonitoringREST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    TeamID はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

  • <ALERT_ID> は、変更したいアラートのIDを定義します。

例えば、アラートの応答本文は次のようになります。

{
  "alert": {
    "autoCreated": false,
    "condition": "min(min(dallas_prod)) = 0",
    "createdOn": 1551358413000,
    "enabled": false,
    "id": 23211,
    "modifiedOn": 1551634372000,
    "name": "Monitoring Uptime Alert",
    "filter": "env in (\"prod\")",
    "notificationChannelIds": [
      4
    ],
    "segmentBy": [
      "host.hostname"
    ],
    "segmentCondition": {
      "type": "ANY"
    },
    "notificationCount": 60,
    "rateOfChange": false,
    "reNotify": false,
    "severity": 0,
    "severityLabel": "HIGH",
    "teamId": 493,
    "timespan": 60000000,
    "type": "MANUAL",
    "version": 9
  }
}

アラートの作成

以下の cURL コマンドを使用して、アラートを作成できます。

curl -X POST <REST_API_ENDPOINT>/api/alerts -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json

説明

  • <REST_API_ENDPOINT> は、REST API 呼び出しの対象となるエンドポイントを示す。 詳しくは、MonitoringREST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    TeamID はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

  • alert.json を使用して、-d ファイル内にアラートを作成するためのデータを渡すことができます。

    アラートを作成するときには、パラメーター typenameseveritytimespanconditionsegmentbysegmentConditionnfilternotificationChannelIdsenabled を含めます。

    詳しくは、アラート・スキーマを参照してください。

以下のサンプルは、アラートを作成するために設定できる要求本体パラメーターを示しています。

{
  "alert": {
    "version": null,
    "name": "My Alert!",
    "description": null,
    "teamId": null,
    "enabled": false,
    "filter": null,
    "type": "MANUAL",
    "condition": "avg(timeAvg(uptime)) <= 0",
    "timespan": 600000000,
    "notificationChannelIds": [],
    "reNotify": false,
    "reNotifyMinutes": 30,
    "segmentBy": [
      "host.hostName"
    ],
    "segmentCondition": {
      "type": "ANY"
    },
    "severityLabel": "LOW"
  }
}

アラートの更新

既存のアラートを更新するには、そのアラートの ID が必要です。

以下の cURL コマンドを使用して、アラートを更新できます。

curl -X PUT <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json

説明

  • <REST_API_ENDPOINT> は、REST API 呼び出しの対象となるエンドポイントを示す。 詳しくは、MonitoringREST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    TeamID はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

  • <ALERT_ID> は、変更したいアラートのIDを定義します。

  • alert.json を使用して、-d ファイル内にアラートを作成するためのデータを渡すことができます。

    詳しくは、アラート・スキーマを参照してください。

以下のサンプルは、アラートを更新するために設定できる要求本体パラメーターを示しています。

{
  "alert": {
      "type": "MANUAL",
      "id": 23212,
      "version": 10,
      "name": "CheckNginxConnections",
      "description": "Active connections of nginx server",
      "enabled": false,
      "severity": 2,
      "timespan": 1000000,
      "condition": "avg(avg(nginx.net.connections)) > 1000",
      "segmentBy": [
          "host.hostName"
      ],
      "segmentCondition": {
          "type": "ANY"
      },
      "notificationChannelIds": [
          2
      ]
    }
}

アラートの削除

既存のアラートを削除するには、そのアラートの ID が必要です。

以下の cURL コマンドを使用して、アラートを削除できます。

curl -X DELETE <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"

説明

  • <REST_API_ENDPOINT> は、REST API 呼び出しの対象となるエンドポイントを示す。 詳しくは、MonitoringREST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。

    TeamID はオプションです。 このヘッダーを指定すると、その要求は、指定したチームで使用できるデータおよびリソースに制限されます。

    AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

  • <ALERT_ID> は削除したいアラートのIDを定義します。

すべてのユーザー・アラートの取得

以下の cURL コマンドを使用して、すべてのアラートに関する情報を取得できます。

curl -X GET <REST_API_ENDPOINT>/api/alerts?from=<START_TIMESTAMP>&to=<END_TIMESTAMP> -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID"

説明

  • <REST_API_ENDPOINT> は、REST API 呼び出しの対象となるエンドポイントを示す。 詳しくは、MonitoringREST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。

  • -H を使用して複数のヘッダーを渡すことができます。

    AuthorizationIBMInstanceID は、認証に必要なヘッダーです。 AUTH_TOKENGUID を取得する方法については、IAM トークンのヘッダーを参照してください。

  • to および from は、アラートに関する情報の期間を構成するために定義する必要がある照会パラメーターです。

応答の形式について詳しくは、アラート・スキーマを参照してください。

アラート・スキーマ: 要求本体

{
  "alerts": [
    {
      "alert": {
        "version": null,
        "name": "",
        "description": null,
        "teamId": null,
        "enabled": false,
        "filter": null,
        "type": "",
        "condition": "",
        "timespan": 600000000,
        "notificationChannelIds": [],
        "reNotify": false,
        "reNotifyMinutes": 30,
        "segmentBy": [],
        "segmentCondition": {
          "type": ""
        },
        "severityLabel": ""
      }
    }
  ]
}

アラート・スキーマ: 応答本文

{
  "alerts": [
    {
    "alert": {
      "autoCreated": false,
      "condition": "",
      "createdOn": 1551358413000,
      "enabled": false,
      "id": 23211,
      "modifiedOn": 1551634372000,
      "name": "",
      "filter": "",
      "notificationChannelIds": [],
      "segmentBy": [],
      "segmentCondition": {
        "type": "ANY"
      },
      "notificationCount": 60,
      "rateOfChange": false,
      "reNotify": false,
      "severity": 0,
      "severityLabel": "",
      "teamId": 493,
      "timespan": 60000000,
      "type": "",
      "version": 9
      }
    }
  ]
}

エラー応答コード

以下の表に、一般的なエラー応答コードを示します。

RC
RC 説明
400 アラート構成が無効です。
401 無許可のアクセスです。
404 アラート ID を認識できません。
409 バージョンが一致しません。
422 アラート名が無効です。 この名前は既に使用されています。

本体パラメーター

id (整数)

アラートの ID。

condition (ストリング)

アラートに対して構成されるしきい値を定義します。 このパラメーターは、MANUAL アラートにのみ必要です。

例えば、次のようにコンシジョンを定義することができる: avg(timeAvg(uptime)) <= 0

createdOn (整数)

アラートの作成時間をミリ秒単位で定義します。

このパラメーターは、アラートが作成されたときの UNIX タイム・スタンプを返します。

description (ストリング)

このパラメーターは、アラートを記述します。

この記述は、モニタリング UI の*「アラート」*セクションにアラートを表示するときに確認できるもので、通知 E メールの中に含められています。

enabled (ブール値)

アラートの状況を定義します。

デフォルトでは、このパラメーターは true に設定されます。アラートは、その作成時に有効になります。

filter (ストリング)

セグメントを構成することによってアラートの有効範囲を定義します。

このフィールドを空にすると、すべてのメトリック・ソースが含められます。 有効範囲は Everything に設定されます。

例えば、以下のようなフィルターを定義できます。

kubernetes.namespace.name='production'
container.image='nginx'*.
kubernetes.namespace.name='production' and container.image='nginx'*.

name (ストリング)

アラートの名前。 固有の名前を指定してください。

この名前は、モニタリング UI の*「アラート」*セクションでアラートを識別するときに使用されるもので、通知 E メールの中に含められています。

modifiedOn (整数)

アラートの最終変更日時をミリ秒単位で定義します。

このパラメーターは、アラートが最後に変更されたときの UNIX タイム・スタンプを定義します。

notificationChannelIds (配列)

アラートがトリガーされる時点を通知するように構成されている通知チャネルをリストします。

有効なオプションは、EMAILPAGER_DUTYWEBHOOKVICTOROPS、および SLACK です。

"notificationChannelIds": [
      "EMAIL",
      "WEBHOOK"
    ]

notificationCount (整数)

過去 2 週間に送信されるアラートの通知の数を定義します。

reNotify (ブール値)

アラート条件が確認されて解決されるまでフォローアップ通知を取得するかどうかを定義します。

デフォルトでは、フォローアップ通知は有効になっておらず、このフィールドは false に設定されています。

reNotifyMinutes (整数)

解決されていないアラートに関する通知を受け取る頻度を定義します。

リマインダーが送信されるまでの時間を分単位で指定します。

severity (整数)

syslog でエンコードされたアラート重大度を定義します。

以下の表に、設定できる値をリストします。

厳しさの値
重大度 情報
0 emergency
1 alert
2 critical
3 error
4 warning
5 notice
6 informational
7 debug

severityLabel (ストリング)

アラートの重大度を定義します。 有効な値は、HIGHMEDIUMLOW、およびINFOです。 値が小さくなると重大度は高くなります。

以下の表に、重大度パラメーターの値に応じて設定する必要がある重大度の状況を示します。

深刻度レベル値
重大度 重大度の状況
0 HIGH
1 HIGH
2 MEDIUM
3 MEDIUM
4 LOW
5 LOW
6 INFO
7 INFO

segmentBy (ストリングの配列)

追加のセグメンテーション条件を定義します。

例えば、['host.mac', 'proc.name'] によって CPU アラートをセグメント化し、モニター・インスタンスでデータを取得するすべてのマシンの任意のプロセスがアラートで報告されるようにすることができます。

segmentCondition (ストリング)

segmentBy パラメーターで指定される各モニター対象エンティティーに対してアラートがトリガーされる条件を定義します。 このパラメーターは、MANUAL アラートにのみ必要です。

有効な値は次のとおりです。

  • ANY: モニター対象エンティティーの少なくとも 1 つが条件を満たしている場合にアラートがトリガーされます。
  • ALL: モニター対象エンティティーのすべてが条件を満たしている場合にアラートがトリガーされます。

teamId (ストリング)

アラートを所有するチームの GUID を定義します。

タイプ (ストリング)

アラートのタイプを定義します。 有効な値は、MANUALBASELINE、および HOST_COMPARISON です。

通知送信時に制御するアラートには MANUAL に設定します。 アラートをトリガーするタイミングを決定するしきい値を定義する必要があります。

予期しないメトリック値が検出されたときに通知するアラートには、BASELINE に設定します。 新しいメトリック・データは、一定期間にわたって収集されるメトリック値と比較されます。

グループ内の 1 台のホストがグループ内の他のホストとは異なるメトリック値を報告したときに通知するアラートには、HOST_COMPARISON を設定します。

timespan (整数)

アラートをトリガーする前にアラート条件を満たす必要がある最小の時間間隔をマイクロ秒単位で指定します。

最小値は 60000000 マイクロ秒、つまり 1 分です。

このパラメーターの値は、60000000 マイクロ秒の倍数でなければなりません。

version (整数)

アラートのバージョン。

バージョンは、アラートを更新するたびに変わります。

バージョンは、オプティミスティック・ロックの目的で使用されます。

照会パラメーター

alertId (整数)

アラートの ID。

from (long)

定義されているアラートに関する情報を要求するときに使用する開始タイム・スタンプをマイクロ秒単位で定義します。

to (long)

定義されているアラートに関する情報を要求するときに使用する終了タイム・スタンプをマイクロ秒単位で定義します。