変換済みのデータを送信先 Logstore に送信すると、予期しないデータが含まれている場合があります。本トピックでは、この問題の解決方法について説明します。
website_log という名前の Logstore には 5,000 件のログエントリが含まれています。そのうち 1,000 件は SourceIP が 192.0.2.54、1,000 件は SourceIP が 192.0.2.28、1,000 件は SourceIP が 192.0.2.136 です。残りの 2,000 件は他の SourceIP 値を持っています。これらのエントリを変換し、異なる送信先 Logstore に送信したいとします。
-
変換要件
-
SourceIPが192.0.2.54のログエントリを、54_logという名前の Logstore に送信します。 -
SourceIPが192.0.2.28のログエントリを、28_logという名前の Logstore に送信します。 -
SourceIPが192.0.2.136のログエントリを、136_logという名前の Logstore に送信します。
-
-
期待される結果
-
54_logLogstore には 1,000 件のログエントリが含まれ、すべてのエントリのSourceIPが192.0.2.54です。 -
28_logLogstore には 1,000 件のログエントリが含まれ、すべてのエントリのSourceIPが192.0.2.28です。 -
136_logLogstore には 1,000 件のログエントリが含まれ、すべてのエントリのSourceIPが192.0.2.136です。
-
-
変換文
e_if(e_search("SourceIP==192.0.2.54"), e_output(name="54-target", project="sls-test", logstore="54_log")) e_if(e_search("SourceIP==192.0.2.28"), e_output(name="28-target", project="sls-test", logstore="28_log")) e_if(e_search("SourceIP==192.0.2.136"), e_output(name="136-target", project="sls-test", logstore="136_log")) -
ストレージターゲット
3 つのストレージターゲット (
54-target(デフォルト)、28-target、および136-target) を設定します。これらのターゲットは、それぞれsls-testプロジェクト内の54_log、28_log、および136_logLogstore にデータをルートします。 -
実際の結果
-
(予期しない)
54_logLogstore には 3,000 件のログエントリが含まれています。SourceIPが192.0.2.54の期待されるログに加え、他のSourceIP値を持つログも含まれています。 -
(期待どおり)
28_logLogstore には 1,000 件のログエントリが含まれ、すべてのエントリのSourceIPが192.0.2.28です。 -
(期待どおり)
136_logLogstore には 1,000 件のログエントリが含まれ、すべてのエントリのSourceIPが192.0.2.136です。
-
-
原因
e_output関数の条件に一致するログは、対応する送信先 Logstore に送信されます。ただし、Simple Log Service は、いずれのルールにも一致しないログを自動的にデフォルトのストレージターゲットに送信します。この例では、デフォルトターゲット (54-target) が一致しなかったログを54_logLogstore にルートしています。 -
ソリューション
変換文の末尾に
e_drop()関数を追加します。この関数により、一致しなかったすべてのログが破棄されます。e_if(e_search("SourceIP==192.0.2.54"), e_output(name="54-target", project="sls-test", logstore="54_log")) e_if(e_search("SourceIP==192.0.2.28"), e_output(name="28-target", project="sls-test", logstore="28_log")) e_if(e_search("SourceIP==192.0.2.136"), e_output(name="136-target", project="sls-test", logstore="136_log")) e_drop()