您將資料加工結果分發至目標Logstore後,如果目標Logstore中有多餘資料,可參見本文解決。
名為website_log的Logstore中有5000條資料,其中SourceIP為192.0.2.54的資料有1000條,SourceIP為192.0.2.28的資料有1000條,SourceIP為192.0.2.136的資料有1000條,SourceIP為其他值的資料有2000條。現對這些資料進行加工,分發到不同的目標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_log的Logstore中有1000條資料,其中SourceIP為192.0.2.54。
名為28_log的Logstore中有1000條資料,其中SourceIP為192.0.2.28。
名為136_log的Logstore中有1000條資料,其中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"))
儲存目標
加工結果
(不符合預期)名為54_log的Logstore中有3000條資料,除SourceIP為192.0.2.54的資料外,還有SourceIP為其他值的資料。
(符合預期)名為28_log的Logstore中有1000條資料,其中SourceIP為192.0.2.28。
(符合預期)名為136_log的Logstore中有1000條資料,其中SourceIP為192.0.2.136。
原因分析
Log Service在分發資料加工結果時,符合e_output函數加工規則的資料被分別分發到對應的目標Logstore中。其他在加工過程中通過DSL(加工語句)處理且未被丟棄的資料將被分發到儲存目標1的Logstore中(本案例中為54_log Logstore)。Log Service以儲存目標1為預設儲存目標。
解決方案
在加工語句中加上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()