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で定義を確認しつつ、確認してみて頂ければ幸いでございます。
Die in diesem Blog geäußerten Ansichten sind die des Autors und spiegeln nicht unbedingt die Ansichten von New Relic wider. Alle vom Autor angebotenen Lösungen sind umgebungsspezifisch und nicht Teil der kommerziellen Lösungen oder des Supports von New Relic. Bitte besuchen Sie uns exklusiv im Explorers Hub (discuss.newrelic.com) für Fragen und Unterstützung zu diesem Blogbeitrag. Dieser Blog kann Links zu Inhalten auf Websites Dritter enthalten. Durch die Bereitstellung solcher Links übernimmt, garantiert, genehmigt oder billigt New Relic die auf diesen Websites verfügbaren Informationen, Ansichten oder Produkte nicht.