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を使用するには、次の情報が必要です。
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_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つが表示されています(読みやすくするため、フォーマット・切り詰めを行っています)。
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":{}
}
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&list=10"
特定のInfrastructure条件のGET
単一のInfrastructure条件についての情報を取得する場合:
curl -v -X GET --header "Api-Key: $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 '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
とすべてのフィールドで新しい条件を追加(POST)してください。
Infrastructure条件を更新する際は、次の基本的なcURLコマンドを使用します。どの条件を更新するかを指定するには、"id":
を含めるようにしてください。
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"
条件のタイプ
プロセス実行条件では、プロセス数が定義した閾値を上回った場合、下回った場合、あるいは閾値と等しくなった場合にアラートを送信します。プロセス実行条件を追加(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
'{
"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_clause
とprocess_where_clause
を囲むシングルクォートをエスケープしていることに注意してください。
メトリクス条件では、選択したメトリックが定義した閾値を上回った場合、下回った場合、あるいは閾値と等しくなった場合にアラートを送信します。これには以下が含まれます。
システムメトリックス
プロセスメトリックス
ネットワークメトリックス
ストレージメトリックス
クラウドインテグレーションメトリックス
メトリクス条件を追加(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
メトリクス
:ご利用のインテグレーションの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
'{
"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
前後の一重引用符をエスケープしていることに注意してください
定義
cURLコマンドをフォーマットする際には、必要に応じて以下の値を使用します。これらはAPI呼び出し内の表示順ではなく、アルファベット順に表示されます。
フィールド | 定義 |
---|
comparison (列挙体)
| 条件タイプ: infra_metric 、infra_process_running 閾値の定義に使用する値(例:"["above", "below", "equal"] )。 |
critical_threshold とwarning_threshold
| 条件タイプ:all このオブジェクトは、違反をオープンする前に閾値を識別します。 critical_threshold は必須です。
warning_threshold はオプションであり、infra_metric 条件とのみ使用できます。
このオブジェクトのキーは、条件タイプによって異なります。 条件タイプ:infra_metric 書式: "duration_minutes":<integer>, "time_function":"any" or "all"
条件タイプ:Infra_process_running 書式: "duration_minutes":<integer>,
条件タイプ:Infra_host_not_reporting 書式: "duration_minutes":<integer>,
条件が違反をオープンするには、この数値を超過する必要があります 条件が違反をオープンするためにvalue が費やす、または到達する必要がある分数 違反を作成するために条件が特定の期間中保持される必要がある、または特定の期間中に閾値を一度超過する必要があるだけかを示します。for at least x minutes 閾値を設定している場合はall を使用し、at least once in x minutes 閾値の場合はany を使用します。
|
enabled (ブール値)
| 条件タイプ:all 条件のオンまたはオフ(true またはfalse )の状態を示します。 |
event_type (文字列)
| 条件タイプ:infra_metric メトリックのイベント(例:システムメトリクス、プロセスメトリクス、ストレージメトリクス、ネットワークメトリクス)。Infrastructureインテグレーションにデータを自動入力します(例:StorageSample またはSystemSample )。 |
filter (文字列)
| 条件タイプ:all 条件がUIで作成された場合は、where_clause の代わりにfilter が表示されます。たとえば: {and: [{is: {ec2InstanceType: "m3.medium"}}]}
推奨事項:新しい条件を作成する際は、where_clause を使用してください。 |
id (整数値)
| 条件タイプ:all URL内の条件ID。 - GET:この値はGETレスポンスに出力されます。
- PUT:この値を
DATA セクションに含めてください。 - POST:これは
DATA セクションに含めないようにしてください。 - DELETE:この値を
-X DELETE コールに含めてください。
|
integration_provider (文字列)
| 条件タイプ:infra_metric インテグレーションに対するアラートには、event_type ではなくintegration_provider を使用します。有効な値を参照するには:ご利用のクラウドサービスのNew Relicドキュメンテーションから、データを見つけて使用するセクションを確認してください。 例:AWS RDS監視インテグレーションのドキュメンテーションからは、DatastoreSample イベントタイプをintegration_provider 値と共に使用できることが分かります。この場合、DBインスタンスではRdsDbInstance 、またAurora DBクラスタではRdsDbCluster となります。 |
name (文字列)
| 条件タイプ:all Infrastructureのアラート条件の名前。たとえば: |
policy_id (整数値)
| 条件タイプ:all 条件に関連するアラートポリシーのアカウントIDに対するユニークID(例:1234567890 )。これはポリシーのグローバルIDではありません。 |
process_where_clause (文字列)
| 条件タイプ:infra_process_running プロセスに適用したすべてのフィルタ、特にアラート条件を実行中のプロセス。このパラメーターは、こうした種類のアラート条件において必須です。例: "commandName = '\''java'\''"
|
runbook_url (文字列)
| 条件タイプ:all 通知に表示されるランブック URL。 |
select_value (文字列)
| 条件タイプ:infra_metric ターゲットとなるメトリクスを特定する属性名(例:"cpuPercent" 、"diskFreePercent" 、"memoryResidentSizeBytes"または"memoryFreeBytes/memoryTotalBytes*100" )。Infrastructureインテグレーションにデータを自動入力します(例:diskFreePercent )。 |
type (列挙体)
| 条件タイプ:all 以下のInfrastructureアラート条件のいずれかになります:"infra_process_running" 、"infra_metric" 、または"infra_host_not_reporting" 。 |
violation_close_timer (整数)
| 条件タイプ:all 時間で表された、違反時間制限設定。可能な値は、0 、1 、2 、4 、8 、12 、24 、48 、72 です。これにより、違反が自動的に終了する前にどのくらいの時間が経過するかが決まります。 新たな条件については、値が示されていない場合、次のデフォルト値を使用します: |
where_clause (文字列)
| 条件タイプ:all 該当する場合、使用されているすべてのInfrastructureホストフィルターを識別します。たとえば: "(`hostname` LIKE '\''%cassandra%'\'')",
|