NRQLアラートコンディションを作成し、動作した場合、NrAiSignalというデータが記録されます。こちらのデータは、対象のアラートコンディションが期待通りに動作しているかなど、判定の詳細をご確認いただけるデータになっています。いくつかのユースケースとともに確認すべき点をご紹介しますので、アラートコンディション作成後の動作確認や違反が期待通りに作成されなかった場合などのトラブルシューティングにご活用頂ければ幸いでございます。
集計が行われているか?
NRQLアラートコンディションに対応するデータがインジェストされ、その判定が行われると、NrAiSignalが作成されます。具体的には以下のようにアラートコンディションのIDを条件に指定していただくことで、ご確認いただけます。
実際にNRQLアラートコンディションを作成し、データをインジェストした後に、上記にて確認してみてください。なお、NrAiSignalのデータが作成されていない場合、判定が行われていないということになります。実際に対象のデータがインジェストされているのにこちらが作成されていない場合、Streaming methodの設定が適切でない可能性があります。各Streaming methodがどのようなデータパターンに適切かに関して、こちらのblogに記載がございますので、ご確認ください。
集計が遅延しているか?
NrAiSignalには以下の3つのtimestamp関連の属性があります。
- timestamp
- endTimestamp
- serverTime
また、それぞれについて簡単に説明します。
timestamp, endTimestamp
集計期間の開始・終了日時を示します。EventやLogなどの各データには必ずtimestamp属性がついており、対象のデータのtimestampが確認できますが、このtimestampの値がNrAiSignalのこれらのtimestamp以上endTimestamp未満の場合に集計対象として含まれることが期待されるデータになります。
serverTime
実際に集計が実施されたNew Relicのサーバ上の時間を示します。
timestampとserverTimeの時間の差に関して、Streaming methodの設定や対象のデータがインジェストされたタイミングに大きく依存します。こちらの時間の差が普段より非常に大きくなった場合、何等かの要因によりインジェストが遅延したことが原因となることが多いかと思われます。
データが集計期間に間に合っているか?
New Relicのアラートでは、2つの時間軸が存在します。1つはEventやLogなどのデータのtimestamp。こちらは、基本的に各データが作成されたHost上の時間となります。2つ目は、New Relic Platform上の時間です。基本的にデータ送信元が時刻同期されており、すべてのデータがほぼリアルタイムに送信できている場合は、気にする必要はありません。ただし、単一の送信元(ホスト等)からのデータのみ遅延するということも考えられます。この場合の挙動に関しては、設定されているStreaming methodに従いますが、aggregatedDataPointsCountをご確認いただくことで、集計対象に含まれたデータの個数をご確認いただけます。基本的に固定数が集計対象となる前提の場合、この値が減少していれば、データのインジェストが集計期間に間に合っていなかったということが考えられます。集計に間に合わない事象が頻繁に発生する場合、Streaming methodの時間やクエリーの内容自体を見直していただくことをおすすめします。
データが集計窓より前あるいは後に到達したか?
上記と重複しますが、実際にいくつのデータが遅延したかなどもご確認いただけるようになっています。eventを確認してみてください。eventに格納される値がsummaryの場合、earlyEventDropCountやlateEventDropCountにてその値が確認できます。
エラーが発生していないか?
こちらも大事な情報となります。例えば、値として数値が保存されている場合に数値型ではなく文字列型として保存されている場合があります。sum()やaverage()などの集計関数でその値を集計するようにしていた場合、集計に失敗して動作できない場合があります。その場合、errorにエラーの内容が記録されます。アラートコンディションを作成し、テストした後、こちらも確認していただくことをおすすめします。
まとめ
その他、NrAiSignalには、トラブルシューティングに活用できる呪法が詰まっています。NRQLアラートコンディションにて期待通りに動作しないなどがあった場合、Data Dictionaryで定義を確認しつつ、確認してみて頂ければ幸いでございます。
이 블로그에 표현된 견해는 저자의 견해이며 반드시 New Relic의 견해를 반영하는 것은 아닙니다. 저자가 제공하는 모든 솔루션은 환경에 따라 다르며 New Relic에서 제공하는 상용 솔루션이나 지원의 일부가 아닙니다. 이 블로그 게시물과 관련된 질문 및 지원이 필요한 경우 Explorers Hub(discuss.newrelic.com)에서만 참여하십시오. 이 블로그에는 타사 사이트의 콘텐츠에 대한 링크가 포함될 수 있습니다. 이러한 링크를 제공함으로써 New Relic은 해당 사이트에서 사용할 수 있는 정보, 보기 또는 제품을 채택, 보증, 승인 또는 보증하지 않습니다.