您將數據加工結果分發至目標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條?,F對這些數據進行加工,分發到不同的目標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。
原因分析
日志服務在分發數據加工結果時,符合e_output函數加工規則的數據被分別分發到對應的目標Logstore中。其他在加工過程中通過DSL(加工語句)處理且未被丟棄的數據將被分發到存儲目標1的Logstore中(本案例中為54_log Logstore)。日志服務以存儲目標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()