フィルタリング

このチャプターでは、JavaScriptを使ってカスタム・フィルターを作る方法を説明します。これによって、極めて的を絞ったフィルタリングが可能になります。

フィルターの高度な利用

フィルターを使用するには、フィルター・バーに式を入力して、何をフィルタリングするかを指定します。フィルター式は、JavaScriptで解釈されます。つまり、パワフルなJavaScriptの機能を最大限に活用して、フィルターを作成できるのです。複数のJavaScriptステートメントを続けた式も可能です。例;

statement-1;
statement-2;
...
statement-n
            

見つかったそれぞれのネットワーク・トラフィック・データポイントについて、これらそれぞれのステートメントがエバリュエーション(値を求める)されます。フィルターは、最後のステートメント(statement-n)の結果を、最終結果として用います。これは、ブール値でなければなりません。もし、結果がtrueなら、データポイントは、フィルターを通過し、チャートに追加されます。もし、結果がfalseなら、データポイントは、破棄されます。最後の式がブール値にならない場合には、エラーが表示されます。最後のステートメントの前のステートメントが、最後のステートメントの結果に思わぬ影響を及ぼす場合があるので、注意が必要です。

フィルターが参照できるタームを、セクション「フィルターに利用できるターム」にリストアップします。JavaScriptで用いられる有効なブール演算子やブール関数は全て、タームのエバリュエーションに用いることができます。これには、正規表現が含まれます。これによって、等式の場合より、ずっと複雑なパターン・マッチングが可能になります。

includeステートメントも、フィルターで使用できます。

フィルターでしばしば必要になるのに、式にするのに難しいのは、あるIPアドレスが、特定のサブネットのメンバーかどうかのテストです。これが簡単にできるよう、このための関数を用意しています:inSubnet(address, subnet, maskBits)。addressが、maskBitsの範囲のマスクのsubnetのメンバーであれば、trueが返されます。addressは、どのアドレス・フィールドでもかまいませんし、それどころか、IPアドレスを表す、どんな文字列でもかまいません。

例えば、サブネット10.1.2.0/24からのトラフィックだけを残す場合は、次のフィルターを用います。

inSubnet(ipSource, "10.1.2.0", 24)            
            

もっと複雑なフィルターも作成できます。例えば、上記のサブネットのトラフィックを全て、別のサブネット、192.168.0.0/16に移したい場合は、次のようにします。;

inSubnet(ipSource, "10.1.2.0", 24) && inSubnet(ipDestination, "192.168.0.0", 16)