Drop filterとは
New Relicでは、各種エージェントから送信されたデータを実際にデータベースに登録する前に不要なデータを削除するDrop filterという機能があります。これにより、間違って送信されてしまったデータがデータベースに登録されてしまうことを防いだり、意図せず大量のデータが送信されてしまいData ingest量がスパイクすることを防止することができます。各種データを送信するエージェントやクライアント側でもフィルター設定を行うことはできますが、New Relic側でもルールを設定しておくことにより、万が一クライアント側のフィルタールールで漏れてきてしまったデータであっても確実にDropすることが可能になります(いわゆる多重防御の観点)。

ログのDropは画面からも設定可能
このDrop filterはログも対象にすることができます。また、ログのDrop設定については、New RelicのLogs画面からも行うことができます。ログのフィルター条件を設定して一度Query logs
をクリックし、対象のログを表示させた状態からCreate drop filter
を選択することで、このログを取り込み対象外にすることができます。
ただし、この画面からだとログ検索の条件指定方法でルールを作成する必要があります。

ログの検索方法はLuceneベースになります。詳細はドキュメントを参照してください。
NRQLを使ってログのDrop filterを作成する
そこでNerdgraphを使ってルールを登録します。Nerdgraphでルール作成する際は、NRQLでの指定ができますので、普段から使い慣れた条件指定方法でルールを作成することができます。なお、Nerdgraphを実行するにはNerdgraph Explorerが便利です。

ここにクエリを入力して実行を行うだけで、Nerdgraph経由でルールを作成することができます。Nerdgraphを使ってルールを作成するクエリの詳細はこちらに記載されていますが、以下のサンプルを参考にしてみてください。直感的に理解できる内容かと思います。
ここでポイントになるのはnrql
とsource
の部分です。画面から設定する際はLuceneベースでの条件指定方法しかできませんでしたが、ここではNRQLを設定することができます。また、このルールがログ用のルールであることを定義するためにsource: "Logging"
を設定する必要があります。
画面上でルールを確認する
Nerdgraphでのルール登録に成功すると、New Relic LogsのDrop filtersから登録したルールを確認することができます。あとは実際にこのルールに該当するログをテスト転送してみて、ちゃんとデータがDropされていることを確認しましょう。

まとめ
ログのDrop filterは画面からも設定できる反面、Luceneベースの検索条件でルールを指定しなければならないため、慣れないこともあるかと思います。その際はNerdgraphを使ってルールを作成し、使い慣れたNRQLでルールを定義してみてはいかがでしょうか?
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.