• ログイン無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

インシデントイベントREST API

Event API を使用して、カスタム アプライド インテリジェンスのインシデント イベントを New Relic に報告することができます。

このAPIは、非同期エンドポイントです。つまり、大量のPOSTSを確実に、低レスポンスで送信することができます。

APIの使用:概要

ここでは、カスタムインシデントイベントをインシデントイベントAPI経由でNew Relicに送信するための一般的なプロセスを説明します。

  1. データを報告するアカウントの ライセンスキー を生成します。
  2. カスタムアトリビュートの作成を始める前に、 Event APIの制限と制限文字について確認してください
  3. JSONフォーマットのガイドライン に従ったインシデントイベントのJSONを生成します。
  4. 圧縮された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.*

string, number, or timestamp

必須項目

aggregationTagで始まる属性は、トリガーイベントをまとめるために使用されます。

言い換えれば、同じ集約タグを持つ2つのトリガーイベントが同じインシデントに集約されます。(これは、それらの間に解決イベントがないことを前提としています)。

インシデントを解決する際には、解決イベントに同じアグリゲーションタグを含めることが重要です。

予約されたキーワードを持つ集約タグは除外されます。たとえば、 aggregationTag.priority: 2のJSONペイロードでは、このキーと値のペアは、次の予約済みキーワードを使用したインシデントイベントで省略されます。

reserved_key: {"priority", "accountId", "originalAccountId", "policyId", "conditionId", "aggregationKey", "entityType", "entityName", "entityId", "violationUuid", "violationId", "nrIncidentId" }

state

enum:(trigger, resolve, acknowledge)

必須項目

イベントが新しいインシデントを引き起こすか、既存のインシデントを解決するか。

priority

enumを使用しています。(低、中、高、臨界)

インシデントの優先度。デフォルト: high.

異なる優先順位で送信された場合、最高の優先順位が使用されます。

title

ストリング

stateトリガーの場合は必須

イベントのタイトルです。

source

ストリング

stateトリガーの場合は必須

インシデントの発生源、またはそのトリガーとなった監視システム(障害が発生したエンティティではない)。

description

ストリング

起爆剤となるイベントの説明。

deepLinkUrl

ストリング

インシデントに関連するページへのディープリンクです。

runbookUrl

ストリング

ランブックのURLです。

externalId

ストリング

イベントに付けることができる外部ID。

例えば、このイベントの取り込みに関連するエラーを照会するために使用できます。

entityName

ストリング

インシデントを発生させたエンティティの名前。

entity.guid

ストリング

インシデントを発生させたエンティティのID。

version

浮く

現在のフォーマットのバージョンです。

Copyright © 2022 New Relic Inc.