NerdGraph APIを使用して、NewRelicアラートの信号損失検出とギャップフィリングをカスタマイズできます。たとえば、失われた信号を考慮するまでの待機時間を構成したり、時系列のギャップを埋めるために使用する値を構成したりできます。
信号の損失は、New Relicがデータの受信をしばらく停止すると発生します。技術的には、データが時系列で最後に受信されてからかなりの時間が経過した後に、信号の損失を検出します。信号の損失は、インシデントをトリガーまたは解決するために使用でき、これを使用してアラートを設定できます。
ギャップフィリングは、データポイントが失われたことによる問題を解決するのに役立ちます。有効なデータポイントの間にギャップが検出されると、最後に確認された値や静的な値などの代替値で自動的にギャップを埋めます。ギャップフィリングを行うことで、必要のないアラートの発生や解決を防ぐことができます。
ヒント
システムは、アクティブに報告された信号のギャップを埋めます。 この信号履歴は、2 時間操作がないと削除されます。 ギャップを埋めるために、この非アクティブ期間後に受信されたデータ ポイントは新しい信号として扱われます。
シグナル ロス、ギャップ フィリング、およびこれらの機能へのアクセスをリクエストする方法の詳細については、 このサポート フォーラムの投稿を参照してください。
このガイドでは、以下のことを説明しています。
電波障害検出のカスタマイズ
一定時間が経過してもデータが受信されない場合、信号喪失検出によってインシデントが開始または終了されます。たとえば、有効期限を 60 秒に設定し、統合が 1 分以上データを送信しないように見える場合、信号損失しきい値がトリガーされます。
NerdGraph の次の 3 つのフィールドを使用して、信号損失の期間と、インシデントを開くか閉じるかを構成できます。
expiration.expirationDuration
:最後のデータポイントがプラットフォームによって受信されてから、信号が失われたと見なされるまでの待機時間(秒単位)。これは、データのタイムスタンプではなく、データがプラットフォームに到着する時間に基づいています。デフォルトではこれをnullのままにするため、信号損失検出は有効になりません。expiration.openViolationOnExpiration
:true
の場合、信号が失われたときに新しいインシデントがオープンされます。デフォルトはfalse
です。このフィールドを使用するには、期間を指定する必要があります。expiration.closeViolationsOnExpiration
:true
の場合、シグナルに関連する未解決のインシデントは有効期限が切れるとクローズされます。デフォルトはfalse
です。このフィールドを使用するには、期間を指定する必要があります。
信号が失われると予想される場合は、インシデントを開かないオプションもあります。 これを行うには、NerdGraph で次のフィールドを使用します。
expiration.ignoreOnExpectedTermination
:true
の場合、信号が失われると予想されるときにインシデントは開かれません。 信号が失われると予想されることを示すには、エンティティにタグtermination: expected
が存在する必要があります。 デフォルトはfalse
です。 インフラストラクチャ ホスト エンティティの場合、タグhostStatus: shutdown
は、信号が停止し、インシデントの発生を防ぐことが予想されることも示します。
既存の状態の信号損失設定を見る
既存のNRQL条件では、信号損失設定がすでに構成されている場合があります。既存の条件設定を表示するには、 nrqlCondition
> expiration
の下のフィールドを選択します:
{ actor { account(id: YOUR_ACCOUNT_ID) { alerts { nrqlCondition(id: NRQL_CONDITION_ID) { ... on AlertsNrqlStaticCondition { id name nrql { query } expiration { closeViolationsOnExpiration expirationDuration openViolationOnExpiration ignoreOnExpectedTermination } } } } } }}
このような結果が表示されるはずです。
{ "data": { "actor": { "account": { "alerts": { "nrqlCondition": { "expiration": { "closeViolationsOnExpiration": false, "expirationDuration": 300, "openViolationOnExpiration": true, "ignoreOnExpectedTermination": false }, "id": "YOUR_ACCOUNT_ID", "name": "Any less than - Extrapolation", "nrql": { "query": "SELECT average(value) FROM AlertsSmokeTestSignals WHERE wave_type IN ('min-max', 'single-gap') FACET wave_type" } } } } } }, ...
信号の消失を設定して新たな状態を作る
2 分間データが受信されなかった場合に信号損失しきい値をトリガーする NRQL 静的条件を 新規作成するとします。以下の例のように、 expirationDuration
を 120 秒に設定し、 openViolationOnExpiration
true
に設定します。
mutation { alertsNrqlConditionStaticCreate( accountId: YOUR_ACCOUNT_ID policyId: YOUR_POLICY_ID condition: { name: "Low Host Count - Catastrophic" enabled: true nrql: { query: "SELECT uniqueCount(host) FROM Transaction WHERE appName='my-app-name'" } signal { aggregationWindow: 60 aggregationMethod: EVENT_FLOW aggregationDelay: 120 } terms: [{ threshold: 2 thresholdOccurrences: AT_LEAST_ONCE thresholdDuration: 600 operator: BELOW priority: CRITICAL }] valueFunction: SINGLE_VALUE violationTimeLimitSeconds: 86400 expiration: { expirationDuration: 120 openViolationOnExpiration: true } } ) { id name }}
条件の信号消失設定の更新
アラート状態の信号損失パラメータを更新したい場合はどうなりますか?次の変更により、NRQL静的条件を新しいexpiration
値で更新できます。
mutation { alertsNrqlConditionStaticUpdate( accountId: YOUR_ACCOUNT_ID id: YOUR_STATIC_CONDITION_ID condition: { expiration: { closeViolationsOnExpiration: true expirationDuration: 300 openViolationOnExpiration: false ignoreOnExpectedTermination: true } } ) { id expiration { closeViolationsOnExpiration expirationDuration openViolationOnExpiration ignoreOneExpectedTermination } }}
隙間を埋めるカスタマイズ
ギャップフィリングでは、時系列のギャップ値を、最後に見つかった値か、任意の静的な値で置き換えます。ギャップフィリングを行うのは、信号のギャップの後に別のデータポイントが受信されてから(データ受信が回復してから)です。
タイプがスタティックに設定されている場合、フィリングのタイプと値の両方を設定できます。
signal.fillOption
:失われたデータポイントの置換値のタイプ。値は次のとおりです。NONE
:ギャップフィリングは無効になっています。LAST_VALUE
:時系列で見られる最後の値。STATIC
:fillValue
で定義された任意の値。
signal.fillValue
:fillOption
がSTATIC
に設定されている場合に失われたデータポイントを置き換えるために使用する値。
重要
ギャップフィリングもexpiration.expirationDuration
の影響を受けます。ギャップが有効期限よりも長い場合、信号は期限切れと見なされ、ギャップは埋められなくなります。
例えば、ギャップフィリングを設定した静的なNRQL条件を作成する方法は以下の通りです。
mutation { alertsNrqlConditionStaticCreate( accountId: YOUR_ACCOUNT_ID policyId: YOUR_POLICY_ID condition: { enabled: true name: "Example Gap Filling Condition" nrql: { query: "SELECT count(*) FROM Transaction" } terms: { operator: ABOVE priority: CRITICAL threshold: 1000 thresholdDuration: 300 thresholdOccurrences: ALL } valueFunction: SINGLE_VALUE violationTimeLimitSeconds: 28800 signal: { aggregationWindow: 60 aggregationMethod: EVENT_FLOW aggregationDelay: 120 fillOption: STATIC fillValue: 1 } } ) { id }}