New Relic InfrastructureアラートのREST API呼び出し

Infrastructureとインテグレーションの個々のアラート条件は、New Relic Infrastructure UIで直接管理できます。またInfrastructure REST APIを使用して、アラート条件の追加(PUT)、更新(POST)、削除、一覧表示(GET)が可能です。

Infrastructur アラートのREST API呼び出しは、New RelicのAPIエクスプローラーでは利用できません。

お使いのアカウントがEUデータセンターでデータをホストする場合は、適切なEUリージョンアカウント向けAPIエンドポイントを使用していることを確認してください。

Infrastructure REST API UIの使用と比較した場合のメリット
一貫性
  • 新たにタグ付けされたクラスタすべてに対して、毎回個別に同じ条件を設定することなく、同一の条件セットを作成できます。
  • 複数の条件をUIで個別に更新することなく、迅速に管理できます。
柔軟性
  • 任意のホストグループに対して条件を作成できます。
  • オフラインになったホストに対する条件をいつでも無効化、あるいは削除できます。
  • 排他的なフィルタリング (例えば、environment NOT LIKE x)を使った条件を作成する。詳細については、排他的なフィルタリングに関するこの記事を参照してください。
  • AWS Cloud Integrationsについては、まだAWSから送信されていない属性を選択する。
  • where_clauseを使用してセカンダリまたはターシャリメトリックに制限を指定することによって、複合アラート条件を作成する。
  • NRQLアラート条件の500ファセット制限を上回る。
信頼性
  • 最後に条件が更新されたタイミングで監査できます。

要件

Infrastructure REST APIを使用するには、次の情報が必要です。

Infrastructure REST APIには、アラート条件が3,700に制限されており、これにはアクティブな条件および無効化された条件が含まれます。直接的な使用、またはUI経由での使用に関わらず、このAPIは3,700のアラート条件制限を超える追加アラート条件を加えるリクエストをすべて拒否します。

Infrastructure API呼び出しの使用

ここでは、Infrastructureアラート条件用の基本的なcURLコマンドとその応答をいくつかを説明します。条件のタイプに応じて、コールで提供されたDATA情報は、POST(追加)とPUT(更新)コールで異なります。データブロックで使用される各属性の定義は、属性セクションに記載されています。

GET Infrastructure条件

Infrastructure条件のリストのGETまたは特定のInfrastructure条件のGETを行うことができます。以下は、Infrastructure条件をリストするためのヒントです。

  • ページ付けには、limit(ページあたりのレコード数)とoffset(スキップするレコード数)パラメーターを使用します。デフォルトで、ページあたりのレコード数は50件、offsetは0(レコードをスキップしない)から始まります。
  • 特定のポリシーに結果を絞り込むには、policy_idを使用してください。

GET出力レスポンスをPUTまたはPOST入力のテンプレートとして使用したい場合は、created_at_epoch_millisupdated_at_epoch_millisおよびid情報を必ず削除してください。

Infrastructure条件のリストのGET

curl -v -X GET --header "X-Api-Key: {admin_api_key}" \
  "https://infra-api.newrelic.com/v2/alerts/conditions?policy_id=111111"
例:条件一覧を入手する

応答には、サンプルポリシーの3つの条件のうち2つが表示されています(読みやすくするため、フォーマット・切り詰めを行っています)。

HTTP/1.1 200 OK
Content-Length: 622
Content-Type: application/json

{
   "data":[
      {
         "type":"infra_process_running",
         "name":"Java is running",
         "enabled":true,
         "where_clause":"(`hostname` LIKE '%cassandra%')",
         "id":13890,
         "created_at_epoch_millis":1490996713872,
         "updated_at_epoch_millis":1490996713872,
         "policy_id":111111,
         "comparison":"equal",
         "critical_threshold":{
            "value":0,
            "duration_minutes":6
         },
         "process_where_clause":"(`commandName` = 'java')"
      },
      {
         "created_at_epoch_millis": 1501704525462,
         "critical_threshold": {
             "duration_minutes": 5
         },
         "enabled": true,
         "filter": {
            "and": [
                {
                     "like": {
                         "fullHostname": "Production_1"
                     }
                 }
             ]
         },
         "id": 448036,
         "name": "PROD - Host Machine's Agent Not Responding ....",
         "policy_id": 98485,
         "type": "infra_host_not_reporting",
         "updated_at_epoch_millis": 1504879191220
      }
     . . . 
   ],
   "meta":{
      "limit":50,
      "offset":0,
      "total":3
   },
   "links":{
      "next":"infra-api.newrelic.com/v2/alerts/conditions?limit=1\u0026offset=50\u0026policy_id=111111"
   }
}

50件の上限を超えたInfrastructure条件10件分のリストを取得するには:

curl -v -X GET --header "X-Api-Key: {admin_api_key}" \
  "https://infra-api.newrelic.com/v2/alerts/conditions?policy_id=111111&offset=50&list=10"

特定のInfrastructure条件のGET

単一のInfrastructure条件についての情報を取得する場合:

curl -v -X GET --header "X-Api-Key: {admin_api_key}" \
 "https://infra-api.newrelic.com/v2/alerts/conditions/{condition-id}"
例:特定の条件を入手する

応答(読みやすくするため、フォーマットしています):

HTTP/1.1 200 OK
Content-Length: 246
Content-Type: application/json

{
   "data":{
      "type":"infra_host_not_reporting",
      "name":"demo condition",
      "enabled":false,
      "id":13887,
      "created_at_epoch_millis":1490981583580,
      "updated_at_epoch_millis":1490981583580,
      "policy_id":23635,
      "critical_threshold":{
         "duration_minutes":100
      }
   }
}

Infrastructure条件を作成(POST)する

新しい条件(POST)を追加する際は"id": を含めないでください。条件の作成時に生成されます。

Infrastructure条件を追加する際は、次の基本的なcURLコマンドを使用します。

curl -X POST 'https://infra-api.newrelic.com/v2/alerts/conditions' \
     -H 'X-Api-Key:{admin_api_key}' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
   "data":{DATA object details
      }
   }
}'

追加しているInfrastructure条件のタイプについては、DATAオブジェクト(-d \セクション)に詳細情報を含めてください:

Infrastructure条件を更新(PUT)する

Infrastructure条件を更新する際は、変更が必要なフィールドを含めるだけで十分です。APIは、欠落しているフィールドの既存の値を保持します。

条件typeを変更したい場合は、PUTを使用しないでください。その代わりに、既存の条件を削除してから、新しい条件typeすべてのフィールドで新しい条件を追加(POST)してください。

Infrastructure条件を更新する際は、次の基本的なcURLコマンドを使用します。どの条件を更新するかを指定するには、"id":を含めるようにしてください。

例:条件を更新する(PUT)
curl -X PUT 'https://infra-api.newrelic.com/v2/alerts/conditions/{condition-id}' \
     -H 'X-Api-Key:{admin_api_key}' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
   "data":{DATA object details
      }
   }
}'

更新しているInfrastructure条件のタイプについては、DATAオブジェクト(-d \セクション)に詳細情報を含めてください:

Infrastructure条件を削除(DELETE)する

Infrastructure条件を削除する際は、以下の基本的なcURLコマンドを使用します。

curl -v -X DELETE --header "X-Api-Key: {admin_api_key}" \
  "https://infra-api.newrelic.com/v2/alerts/conditions/{condition_id}"
      

条件のタイプ

プロセス実行条件のAPIデータ

プロセス実行条件では、プロセス数が定義した閾値を上回った場合、下回った場合、あるいは閾値と等しくなった場合にアラートを送信します。プロセス実行条件を追加(POST)または更新(PUT)するには、アドミンユーザーのAPIキーを使用し、定義を参照してAPI呼び出しの値をカスタマイズします。

例:条件のタイプ

例えば:

curl -X POST 'https://infra-api.newrelic.com/v2/alerts/conditions' \
     -H 'X-Api-Key:{admin_api_key}' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
   "data":{
      "type":"infra_process_running",
      "name":"Java is running",
      "enabled":true,
      "where_clause":"(hostname LIKE '\''%cassandra%'\'')",
      "policy_id":{policy_id},
      "comparison":"equal",
      "critical_threshold":{
         "value":0,
         "duration_minutes":6
      },
      "process_where_clause":"(commandName = '\''java'\'')"
   }
}'

追加のシングルクォートがwhere_clauseprocess_where_clauseを囲むシングルクォートをエスケープしていることに注意してください。

メトリック条件のAPIデータ

メトリック条件では、選択したメトリックが定義した閾値を上回った場合、下回った場合、あるいは閾値と等しくなった場合にアラートを送信します。以下のようなメトリックスが含まれます。

メトリック条件を追加(POST)または更新(PUT)するには、アドミンユーザーのAPIキーを使用し、定義を参照してAPI呼び出しの値をカスタマイズします。

クラウドインテグレーションのアラート条件を追加もしくはアップデートする場合:

  • event_typeフィールドには、選択したクラウドインテグレーションサービスが生成したイベントタイプを入力してください(例:AWS EC2インテグレーションにはComputeSample)。

  • プロバイダ値を必要とするクラウドインテグレーションサービスでアラート条件を設定する場合(例:AWS RDS は provider 値が RdsDbInstance もしくは RdsDbClusterDatastoreSample を使用しており、"integration_provider" フィールドを追加して、アラート条件がターゲットにしたサービスに適した値を使用しなくてはいけません(例:"integration_provider":"RdsDbInstance")。
  • select_valueフィールドでは、provider を標準的な接頭辞ストリングとする、以下の構文を用いてメトリック名を構築します:

    provider.metric.aggregation_type
    • metric: ご利用のインテグレーションのNew Relicドキュメンテーション内に書かれたメトリック名を使用してください。
    • aggregation_type: SumAverageMinimum、もしくはMaximumを使用します。インテグレーションのクラウドプロバイダによるオリジナルドキュメンテーションを参照して、各メトリクスで利用可能な統計集団はどれか確認してください。

例えば:

curl -X POST 'https://infra-api.newrelic.com/v2/alerts/conditions' \
     -H 'X-Api-Key:{admin_api_key}' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
   "data":{
      "type":"infra_metric",
      "name":"Disk Space Condition",
      "enabled":true,
      "where_clause":"(hostname LIKE '\''%cassandra%'\'')",
      "policy_id":{policy_id},
      "event_type":"StorageSample",
      "select_value":"diskFreePercent",
      "comparison":"below",
      "critical_threshold":{
         "value":10,
         "duration_minutes":1,
         "time_function":"any"
      },
      "warning_threshold":{
         "value":30,
         "duration_minutes":2,
         "time_function":"any"
      }
   }
}'

追加の一重引用符がwhere_clause前後の一重引用符をエスケープしていることに注意してください

ホストレポート停止条件

ホストのレポート停止条件では、ホストがレポートを停止した場合にアラートを送信します。ホストのレポート停止条件を追加(POST)または更新(PUT)するには、アドミンユーザーのAPIキーを使用し、定義を参照してAPI呼び出しの値をカスタマイズします。

例えば:

curl -X POST 'https://infra-api.newrelic.com/v2/alerts/conditions' \
     -H 'X-Api-Key:{admin_api_key}' -i \
     -H 'Content-Type: application/json' \
     -d \
'{
   "data":{
      "type":"infra_host_not_reporting",
      "name":"Cassandra Host Reporting Condition",
      "enabled":true,
      "where_clause":"(hostname LIKE '\''%cassandra%'\'')",
      "policy_id":{policy_id},
      "critical_threshold":{
         "duration_minutes":12
      }
   }
}'

追加の一重引用符がwhere_clause前後の一重引用符をエスケープしていることに注意してください

定義

cURLコマンドをフォーマットする際には、必要に応じて以下の値を使用します。これらはAPI呼び出し内の表示順ではなく、アルファベット順に表示されます。

フィールド 定義

comparison列挙体

条件タイプ: infra_metricinfra_process_running

閾値の定義に使用する値(例:"["above", "below", "equal"])。

critical_thresholdwarning_threshold

条件タイプ: すべて

このオブジェクトは、違反をオープンする前に閾値を識別します。

  • critical_thresholdは必須です。
  • warning_thresholdはオプションであり、infra_metric条件とのみ使用できます。

このオブジェクトのキーは、条件タイプによって異なります。

条件タイプ: infra_metricの書式:

"critical_threshold":{
   "value":<number>,
   "duration_minutes":<integer>,
   "time_function":"any" or "all"
},

条件タイプ: infra_process_runningの書式:

"critical_threshold":{
   "value":<integer>,
   "duration_minutes":<integer>,
},

条件タイプ: infra_host_not_reportingの書式:

"critical_threshold":{
   "duration_minutes":<integer>,
},
value

条件が違反をオープンするには、この数値を超過する必要があります

duration_minutes

条件が違反をオープンするためにvalueが費やす、または到達する必要がある分数

time_function

違反を作成するために条件が特定の期間中保持される必要がある、または特定の期間中に閾値を一度超過する必要があるだけかを示します。for at least x minutes閾値を設定している場合はallを使用し、at least once in x minutes閾値の場合はanyを使用します。

enabledブール値

条件タイプ: すべて

条件のオンまたはオフ(trueまたはfalse)の状態を示します。

event_type文字列

条件タイプ: infra_metric

メトリックのイベント(例:システムメトリックス、プロセスメトリックス、ストレージメトリックス、ネットワークメトリックス)。Infrastructureインテグレーションにデータを自動入力します(例:StorageSampleまたはSystemSample)。

filter文字列

条件タイプ: すべて

条件がUIで作成された場合は、where_clauseの代わりにfilterが表示されます。たとえば:

{and: [{is: {ec2InstanceType: "m3.medium"}}]}

推奨事項:新しい条件を作成する際は、where_clauseを使用してください。

id整数値

条件タイプ: すべて

URL内の条件ID。

  • GET:この値は、GETレスポンスに出力されます。
  • PUT:この値は、DATAセクションに含めてください。
  • POST:この値は、DATAセクションに含めないようにしてください。
  • DELETE:この値は、-X DELETEコールに含めてください。

integration_provider文字列

条件タイプ: infra_metric

インテグレーションに対するアラートには、event_typeではなくintegration_providerを使用します。有効な値を参照するには:APIリンクから、Integrationsを選択します。

name文字列

条件タイプ: すべて

Infrastructureのアラート条件の名前。たとえば:

"[test] process running"

policy_id整数値

条件タイプ: すべて

条件に関連するアラートポリシーのアカウントIDに対するユニークID(例:1234567890)。これはポリシーのグローバルIDではありません。

process_where_clause文字列

条件タイプ: infra_process_running

プロセスに適用した全てのフィルタ、特にアラート条件を実行中のプロセス。このパラメーターは、こうした種類のアラート条件において必須。例えば:

"commandName = '\''java'\''"

select_value文字列

条件タイプ: infra_metric

ターゲットとなるメトリックを特定する属性名(例:"cpuPercent""diskFreePercent"、または"memoryResidentSizeBytes")。Infrastructureインテグレーションにデータを自動入力します(例:diskFreePercent)。

type列挙体

条件タイプ: すべて

Infrastructureアラート条件のタイプ:"infra_process_running""infra_metric"、または"infra_host_not_reporting"

where_clause文字列

条件タイプ: すべて

該当する場合、使用されているすべてのInfrastructureホストフィルターを識別します。たとえば:

"(`hostname` LIKE '\''%cassandra%'\'')",

その他のヘルプ

推奨する詳細情報: