News and media screen tile collage

本投稿は「Critical Notice : NRQL Conditions using ‘FROM log… FACET message’ will be blocked and disabled」の抄訳です。

発効日: 2022年6月8日

  • イベントタイプ "Log" をクエリし、FACET 属性のリストに "message" 属性を含む NRQL アラート条件を作成する機能を無効にする予定です。
  • 「FROM Log... FACET message」構文を含み、かつ、「Sum of Query Results」しきい値タイプを使用するNRQLアラート条件を無効にする予定です。

必要なアクション

NRQLアラート条件を編集してください。

クエリのFACET属性から'message'を削除します。WHERE句ではまだ使用可能です。

条件を保存します。

この問題は複合的な要因を持つアラート条件によって引き起こされます。その要素の一つである「SUm of Query results」しきい値は、現在「EOL(End of Life)」を迎えており、必要なプラットフォーム保護が含まれていないインフラ上に存在しています。このようなアラート条件は、6月30日に終了するアクティブなEOLプロセスの一部でもあり、関連する自動化スクリプトを更新している最中であるはずです。自動化スクリプトの修正もあわせてお願いします。

すべてのログメッセージは一意であるため、システムが大量のログメッセージを作成し始めると、「メッセージ」でFACETするクエリは、同じ情報を伝える数十万件の違反が短時間で作成されるおそれがあります。すべてのログメッセージは一意であるため、すべてのメッセージは新しいインシデント、場合によっては新しいイシューを作成し、それぞれに対して個別の通知を作成することになります。私たちのプラットフォームには、障害を防ぐためにカーディナリティの爆発に対するプラットフォームレベルの保護機能がありますが、それでもその影響は深刻です。私たちはアラート条件の作成時にカーディナリティを検証しますが、こうしたカーディナリティの爆発は作成後にいつでも、そして非常に短時間で発生します。

messageをFACETするNRQLアラート条件はすべて無効になるのでしょうか?

「FACET messages」を持ち、かつ、「Sum of Query results」しきい値を利用しているアラート条件のみを無効化し、再有効化もできないようにする予定です。これらは最大のリスクとなるためです。

他のすべての条件タイプについては、UIまたはAPIを使用して新しい条件を作成する機能を無効にします。つまり、そのクエリーパターンを残したまま編集することはできません。また、アラート条件が問題になった場合には、即座にそれを無効にする予定です。このクエリパターンを使用しているすべての条件を修正し、自動化スクリプトを更新する必要があります。

問題となるログ行を通知で送信させるにはどうすればよいですか?

NRQLアラート条件に “FACET message"を追加する主なユースケースは、注目したいログ行を強制的に通知に含めることです。これはFACET句の意図された使い方ではありません。条件が作成されたときに非常に多くの一致するログがあった場合、条件の作成をブロックしていたでしょう。

ログ警告は通常、クエリに一致するログメッセージのカウントに基づいているため、警告を引き起こした特定のログメッセージを渡すための特別な機能は持っていません。最近、「ワークフロー」機能で同様の機能を提供しましたが、今後も強化していく予定です。

ログを取得するには、「エンリッチメント」をサポートする新しいワークフロー機能を使用します

「ワークフロー」の使い方については、こちらのドキュメントとビデオをご覧ください。

その中に、「エンリッチメント」機能についてのセクションがあります。これにより、通知を送信する前に実行されるNRQLクエリをワークフローに追加することができます。そのクエリを使用して、特定のパターンに一致するログ行を取得することができます。

エンリッチメントクエリビルダー

エンリッチメントクエリビルダー

ワークフローに追加されたエンリッチメント

ワークフローに追加されたエンリッチメント

ログパターンを利用して安全に件数を監視する

全てのログメッセージは一意であるため(タイムスタンプを含むため)、'message' で FACET した場合、 count() をして、「count greater than 1」のアラート条件を設定できません。

ログパターンに合致するログのカウントを時系列で作成することができます。ログパターンについては、こちらのドキュメントを参照してください。

ログパターンを使用したクエリ例

SELECT count(*) FROM Log WHERE message LIKE '%Kafka%' AND `newrelic.logPattern` LIKE 'Deleted offset index <%> (kafka.log.LogSegment)' limit 20

その他のご質問やサポートについては、アカウントチーム、または弊社のグローバルテクニカルサポートチームにお問い合わせください。