Infrastructure REST APIを使用して、アラート条件の追加、更新、削除、一覧表示を行います。Infrastructure UI を使用して、個別のアラート条件を管理することもできます。
InfrastructureアラートのREST API呼び出しは、APIエクスプローラー では利用できません。
APIを使用する理由
例
一貫性
Infrastructure UIで同じ条件を毎回設定せずに、すべてのクラスタに同じ一連の条件を定義します。 複数の条件をUIで個別に更新することなく、迅速に管理します。 柔軟性
任意のホストグループに対して条件を作成できます。 オフラインになったホストに対する条件をいつでも無効化、あるいは削除できます。 排他的なフィルタリング(たとえば、environment NOT LIKE x)を使用して条件を作成します。詳細については、排他的なフィルタリングに関するこの記事 を参照してください。 AWS Cloud Integrationsについては、まだAWSから送信されていない属性を選択する。 where_clauseを使用してセカンダリまたはターシャリメトリックに制限を指定することによって、複合アラート条件を作成します。NRQLアラート条件の500ファセット制限を上回る。 信頼性
要件 Infrastructure REST APIを使用するには、次の情報が必要です。
ヒント お使いの組織がEUデータセンターでデータをホストする場合は、EU地域のエンドポイント を使用していることを確認してください。
Infrastructure API呼び出しの使用 ここでは、Infrastructureアラート条件用の基本的なcURLコマンドとその応答についていくつか説明します。条件のタイプに応じて、コールで提供されたDATA情報は、POST(追加)とPUT(更新)コールで異なります。
dataブロックで使用される各属性の定義は、定義 セクションに記載されています。
GET Infrastructure条件 Infrastructure条件のリストのGET または特定のInfrastructure条件のGET を行うことができます。以下は、Infrastructure条件をリストするためのヒントです。
ページ付けには、limit(ページあたりのレコード数)とoffset(スキップするレコード数)パラメーターを使用します。デフォルトで、ページあたりのレコード数は50件、offsetは0(レコードをスキップしない)から始まります。 結果を特定のポリシーに絞り込むには、policy_idを使用します。 ヒント GETレスポンスをPUTまたはPOSTの入力用テンプレートとして使用する場合は、必ずcreated_at_epoch_millis、updated_at_epoch_millisおよびid情報を削除してください。
Infrastructure条件のリストのGET $ curl -v -X GET --header "Api-Key: $API_KEY " "https://infra-api.newrelic.com/v2/alerts/conditions?policy_id=111111"
例:条件一覧を入手する 応答には、サンプルポリシーの3つの条件のうち2つが表示されています(読みやすくするため、フォーマット・切り詰めを行っています)。
Content-Type : application/json
"type" : "infra_process_running" ,
"name" : "Java is running" ,
"where_clause" : "(`hostname` LIKE '%cassandra%')" ,
"created_at_epoch_millis" : 1490996713872 ,
"updated_at_epoch_millis" : 1490996713872 ,
"process_where_clause" : "(`commandName` = 'java')"
"created_at_epoch_millis" : 1501704525462 ,
"fullHostname" : "Production_1"
"name" : "PROD - Host Machine's Agent Not Responding ...." ,
"type" : "infra_host_not_reporting" ,
"updated_at_epoch_millis" : 1504879191220
50件の上限を超えたInfrastructure条件10件分のリストを取得するには:
$ curl -v -X GET --header "Api-Key: $API_KEY " "https://infra-api.newrelic.com/v2/alerts/conditions?policy_id=111111&offset=50&limit=10"
特定のInfrastructure条件のGET 単一のInfrastructure条件についての情報を取得する場合:
$ curl -v -X GET --header "Api-Key: $API_KEY " "https://infra-api.newrelic.com/v2/alerts/conditions/condition-id"
例:特定の条件を入手する 応答(読みやすくするため、フォーマットしています):
Content-Type : application/json
"type" : "infra_host_not_reporting" ,
"created_at_epoch_millis" : 1490981583580 ,
"updated_at_epoch_millis" : 1490981583580 ,
Infrastructure条件を作成(POST)する 重要 新しい条件を追加(POST)する際は、"id":を含めないでください。条件の作成時に生成されます。
Infrastructure条件を追加する際は、次の基本的なcURLコマンドを使用します。
$ curl -X POST 'https://infra-api.newrelic.com/v2/alerts/conditions' \
> -H "Api-Key: $API_KEY " -i -H 'Content-Type: application/json' \
> -d '{"data":{DATA object details}}'
追加しているInfrastructure条件のタイプについては、DATAオブジェクト(-dセクション)に詳細情報を含めてください。
Infrastructure条件を更新(PUT)する Infrastructure条件を更新する際は、変更が必要なフィールドを含めるだけで十分です。APIは、欠落しているフィールドの既存の値を保持します。
重要 条件typeを変更する場合は、PUT を使用しないでください。 代わりに、既存の条件を削除してから、新しい条件typeおよびall フィールドを使用して新しい条件を追加 (POST) します。
Infrastructure条件を更新する際は、次の基本的なcURLコマンドを使用します。更新対象の条件を指定するには、"id":を含めるようにしてください。
例:条件を更新する(PUT) $ curl -X PUT 'https://infra-api.newrelic.com/v2/alerts/conditions/condition-id' \
> -H "Api-Key: $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 "Api-Key: $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 "Api-Key: $API_KEY " -i -H 'Content-Type: application/json' -d \
$ "type":"infra_process_running",
$ "name":"Java is running",
$ "where_clause":"(hostname LIKE ' \ ' '%cassandra%' \ ' ')",
$ "process_where_clause":"(commandName = ' \ ' 'java' \ ' ')"
重要 余分な一重引用符でwhere_clauseの周りの一重引用符をエスケープしていることに注意してください。 process_where_clause
メトリック条件のAPIデータ メトリクス条件では、選択したメトリックが定義した閾値を上回った場合、下回った場合、あるいは閾値と等しくなった場合にアラートを送信します。これには以下が含まれます。
システム メトリックス
プロセス メトリックス
ネットワーク メトリックス
ストレージ メトリックス
クラウドインテグレーション メトリックス
メトリクス条件を追加(POST) または更新(PUT) するには、APIキー を使用し、定義 を参照してAPIコールの値をカスタマイズします。
クラウドインテグレーションのアラート条件を追加もしくはアップデートする場合:
event_typeフィールドには、選択したクラウドインテグレーションサービスが生成したイベントタイプを入力してください(例:AWS EC2インテグレーションにはComputeSample)。
プロバイダー値を必要とするクラウドインテグレーションサービスでアラート条件を設定する場合(例:AWS RDSはprovider値がRdsDbInstanceもしくはRdsDbClusterのDatastoreSampleを使用しており、"integration_provider"フィールドを追加して、アラート条件がターゲットにしたサービスに適した値を使用しなくてはいけません(例:"integration_provider":"RdsDbInstance")。
select_valueフィールドでは、providerを標準的な接頭辞ストリングとする、以下の構文を用いてメトリック名を構築します。
provider.metric.aggregation_type
metric:ご利用のインテグレーションのNew Relicドキュメンテーション内に書かれたメトリック名を使用してください。aggregation_type:Sum、Average、MinimumまたはMaximumを使用します。インテグレーションのクラウドプロバイダによるオリジナルドキュメンテーションを参照して、各メトリクスで利用可能な統計集団はどれか確認してください。例 例えば:
$ curl -X POST 'https://infra-api.newrelic.com/v2/alerts/conditions' \
> -H "Api-Key: $API_KEY " -i -H 'Content-Type: application/json' -d \
$ "name":"Disk Space Condition",
$ "where_clause":"(hostname LIKE ' \ ' '%cassandra%' \ ' ')",
$ "event_type":"StorageSample",
$ "select_value":"diskFreePercent",
重要 余分な一重引用符で…の周りの一重引用符をエスケープしていることに注意してください。 where_clause
定義 cURLコマンドをフォーマットする際には、必要に応じて以下の値を使用します。これらはAPI呼び出し内の表示順ではなく、アルファベット順に表示されます。
Field
Definition
comparison (列挙体 )
Condition type: infra_metric, infra_process_running
閾値の定義に使用する値(例:"["above", "below", "equal"])。
critical_threshold および warning_threshold
Condition type: すべて
このオブジェクトは、インシデントをオープンする前に閾値を識別します。
critical_thresholdは必須です。
warning_thresholdはオプションで、infra_metric条件でのみ使用できます。
このオブジェクトのキーは、条件タイプによって異なります。
Condition type: infra_metric フォーマット:
"duration_minutes" : <integer> ,
"time_function" : "any" or "all"
Condition type: infra_process_running フォーマット:
"duration_minutes" : <integer> ,
Condition type: infra_host_not_reporting フォーマット:
"duration_minutes" : <integer> ,
value条件がインシデントをオープンするには、この数値を超過する必要があります
duration_minutes条件がインシデントをオープンするためにvalueが費やす、または到達する必要がある分数
time_functionインシデントを作成するために条件が特定の期間中保持される必要がある、または特定の期間中に閾値を一度超過する必要があるだけかを示します。for at least x minutes閾値を設定する場合は、allを使用します。at least once in x minutes閾値の場合は、anyを使用します。
enabled (ブール値 )
Condition type: すべて
条件のオンまたはオフ(trueまたはfalse)の状態を示します。
event_type [string ])
Condition type: infra_metric
メトリックのイベント(例:システムメトリクス、プロセスメトリクス、ストレージメトリクス、ネットワークメトリクス)。Infrastructureインテグレーションにデータを自動入力します(例:StorageSampleまたはSystemSample)。
filter [string ])
Condition type: すべて
条件がUIで作成された場合は、where_clauseの代わりにfilterが表示されます。たとえば:
{and: [{is: {ec2InstanceType: "m3.medium"}}]}
推奨事項: 新しい条件を作成するときはwhere_clauseを使用します。
id (整数 )
Condition type: すべて
URL内の条件ID。
GET:この値はGETレスポンスに出力されます。 PUT:この値をDATAセクションに含めてください。 POST:これはDATAセクションに含めないようにしてください。 この値は、-X DELETEコールに含めてください。 integration_provider [string ])
Condition type: infra_metric
インテグレーションのアラートの場合は、 event_typeではなくintegration_provider使用します。 有効な値を確認するには、クラウド サービスのNew Relicドキュメントで Find and use data セクションを確認してください。
例:AWS RDS監視インテグレーション のドキュメンテーションからは、DatastoreSampleイベントタイプをintegration_provider値と共に使用できることが分かります。この場合、DBインスタンスではRdsDbInstance、またAurora DBクラスタではRdsDbClusterとなります。
name [string ])
Condition type: すべて
Infrastructureのアラート条件の名前。たとえば:
policy_id (整数 )
Condition type: すべて
条件に関連するアラートポリシーのアカウントIDに対するユニークID(例:1234567890)。これはポリシーのグローバルIDではありません。
process_where_clause [string ])
Condition type: infra_process_running
プロセスに適用したすべてのフィルタ、特にアラート条件を実行中のプロセス。このパラメーターは、こうした種類のアラート条件において必須です。例:
"commandName = '\''java'\''"
runbook_url [string ])
Condition type: all
通知に表示されるランブック URL。
select_value [string ])
Condition type: infra_metric
ターゲットとするメトリックを識別する属性名(例:"cpuPercent"、"diskFreePercent"、"memoryResidentSizeBytes", or "memoryFreeBytes/memoryTotalBytes*100")。Infrastructureインテグレーションにデータを自動入力します(例:diskFreePercent)。
type (列挙体 )
Condition type: すべて
Infrastructureアラート条件のタイプ:"infra_process_running"、"infra_metric"または"infra_host_not_reporting"。
violation_close_timer (整数 )
Condition type: すべて
時間で表された、インシデント時間制限 設定。可能な値は0、1、2、4、8、12、24、48、72。これにより、インシデントが自動的に終了する前にどのくらいの時間が経過するかが決まります。
新たな条件については、値が示されていない場合、次のデフォルト値を使用します:
where_clause [string ])
Condition type: すべて
該当する場合、使用されているすべてのInfrastructureホストフィルター を識別します。たとえば:
"(`hostname` LIKE '\''%cassandra%'\'')",