APIを使用して、カスタム アラートインシデント トリガー イベントをNew Relicに報告できます。 このイベントはインシデントを直接作成するものではありませんが、インシデントの作成をトリガーします。
このAPIは、非同期エンドポイントです。つまり、大量のPOSTSを確実に、低レスポンスで送信することができます。
APIの使用:概要
ここでは、カスタムインシデントイベントをインシデントイベントAPI経由でNew Relicに送信するための一般的なプロセスを説明します。
- データをレポートするアカウントのを生成します。
- カスタムアトリビュートの作成を始める前に、 Event APIの制限と制限文字について確認してください 。
- JSONフォーマットのガイドライン に従ったインシデントイベントのJSONを生成します。
- 圧縮されたJSONペイロード(gzipやdeflateなど)を、POSTリクエストでcurlを使ってHTTPSエンドポイントに送信します。
インシデントイベントデータのNew Relicへの送信を開始したら、解析エラーの通知を受けるために、 NRQLアラート条件 を設定することをお勧めします。
JSONの例
JSONのペイロードは、以下の例のようになります。
[ { "eventType": "NrAiIncidentExternal", "title": "Test", "description": "The latency is above threshold of 500000 MS", "state": "trigger", "source": "luna", "entityName": "testEntity", "entity.guid": "testEntity123", "aggregationTag.serviceId": 5, "aggregationTag.environment": "testing", "aggregationTag.errorId": 10543, "tag.stackTrace": "some stack trace...", "version": 1 }]
eventType
フィールドはNrAiIncidentExternal
を使用する必要があります。
コマンドラインからインシデントイベントを送信
ここでは、curlを使ってJSONペイロードを送信する例を紹介します。
$gzip -c example_incidents.json | curl --data-binary @- \>-X POST -H "Content-Type: application/json" \>-H "Api-Key: YOUR_LICENSE_KEY" -H "Content-Encoding: gzip" \>https://insights-collector.newrelic.com/v1/accounts/YOUR_ACCOUNT/events
Response{"success":true, "uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}%
インシデント イベント データを正常に送信すると、アラート UI で確認したり、 そのデータをクエリして確認したりできます。
インシデントイベントの問い合わせ例
Nerdgraph API を使ってデータを照会することができます。
NerdGraphのクエリとその結果の例を示します。
{ actor { account(id: YOUR_ACCOUNT_ID) { nrql(query: "SELECT * FROM NrAiInternalIncident since 3 days ago") { results } } }}
"results": [ { "timestamp": 1641910123824, "totalViolations": 3, "violationIds": "[416e2e55069764086ad83e97a1160be0cb4c545b7950522f7c86baaa2a11b9b6]", "triggeredAt": 1641909163980, "entitiesData.ids": "testEntity123", "entitiesData.types": "unknown", "labelsHash": "91f938318e899dcd62965e2724548f4844f2898f3cf1c5411397ecc0eec87fc1", "annotations.description": "[\"The latency is above threshold of 500000 MS\"]", "labels.originalAccountIds": "YOUR_ACCOUNT_ID", "entitiesData.names": "testEntity", "entitiesData.entities": "{\"id\":\"testEntity123\",\"name\":\"testEntity\",\"type\":\"unknown\"}", "priority": "HIGH", "labels.serviceId": "5", "labels.environment": "testing", "closedAt": "", "updatedAt": 1641910123824, "annotations.title": "[\"Test\",\"Test2222\",\"Test3\"]", "nrAccountId": YOUR_ACCOUNT_ID, "accumulations": "{\"source\":[\"rest\"],\"origin\":[\"luna\"],\"entity_guid\":[\"testEntity123\"],\"tag.stackTrace\":[\"some stack trace...\"]}", "labels.accountIds": "YOUR_ACCOUNT_ID", "createdAt": 1641909163997, "priority.order": 2, "labels.aggregationKeys": "416e2e55069764086ad83e97a1160be0cb4c545b7950522f7c86baaa2a11b9b6", "accumulations.origins": "[\"luna\"]", "accumulations.entity_guid": "[\"testEntity123\"]", "incidentId": "a06ffb92-2f7e-473b-953f-151ff4777cb0", "labels.errorId": "10543", "dataMLModules": "{}", "triggerEvent": "VIOLATION_ADDED", "accumulations.tag.stackTrace": "[\"some stack trace...\"]", "isIint": false, "accumulations.sources": "[\"rest\"]", "entitiesData": "{\"name\":\"testEntity\",\"id\":\"testEntity123\",\"type\":\"unknown\",\"entities\":\"{\\\"id\\\":\\\"testEntity123\\\",\\\"name\\\":\\\"testEntity\\\",\\\"type\\\":\\\"unknown\\\"}\"}", "annotations": "{\"title\":[\"Test\",\"Test2222\",\"Test3\"],\"description\":[\"The latency is above threshold of 500000 MS\"]}", "labels": "{\"accountId\":\"XXXXXXX\",\"originalAccountId\":\"XXXXXXX\",\"entityId\":\"testEntity123\",\"entityName\":\"testEntity\",\"entityType\":\"unknown\",\"aggregationKey\":\"416e2e55069764086ad83e97a1160be0cb4c545b7950522f7c86baaa2a11b9b6\",\"serviceId\":\"5\",\"errorId\":\"10543\",\"environment\":\"testing\"}", "state": "CREATED" }]
インシデントイベントAPI仕様
incident event APIは、Event APIのvalue typesを使用します。これらの値タイプの説明と使用のガイドラインについては、 our event API JSON guidelines を参照してください。
注意
まったく同じaggregationTag
を持つ 2 つのトリガー イベントを作成すると、それらは同じインシデントに集約されます。 つまり、複数のトリガーから作成されるインシデントは 1 つだけです。
フィールド | 説明 |
---|---|
string, number, or timestamp | REQUIRED
つまり、同じ集約タグを持つ 2 つのトリガー イベントが同じインシデントに集約されます。 (トリガー イベントのいずれも解決イベントではないと仮定します)。 インシデントを解決するときは、解決イベントに同じ集約タグが含まれていることが重要です。 予約されたキーワードを持つ集約タグは除外されます。たとえば、
|
列挙型: ( | REQUIRED イベントが新しいインシデントをトリガーするか、既存のインシデントを解決するか。インシデントの更新は、トリガーを使用して送信することもできます。 |
列挙型: ( | インシデントの優先順位。デフォルト: 異なる優先順位で送信された場合、最高の優先順位が使用されます。 |
ストリング | REQUIRED, when イベントのタイトルです。 |
ストリング | REQUIRED, when インシデントの発生源、またはそのトリガーとなった監視システム(障害が発生したエンティティではない)。 |
ストリング | 起爆剤となるイベントの説明。 |
ストリング | インシデントに関連するページへのディープリンクです。 |
ストリング | ランブックのURLです。 |
ストリング | イベントに付けることができる外部ID。 例えば、このイベントの取り込みに関連するエラーを照会するために使用できます。 |
ストリング | インシデントを発生させたエンティティの名前。 |
ストリング | インシデントを発生させたエンティティのID。 |
浮く | 現在のフォーマットのバージョンです。 |