全部產品
Search
文件中心

Simple Log Service:目標Logstore有多餘資料怎麼處理?

更新時間:Jun 30, 2024

您將資料加工結果分發至目標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()