このトピックでは、ログを異なるストレージ送信先にエクスポートする方法について説明します。ログ内のフィールドは、送信先によって異なります。
背景情報
ログを複数のストレージ送信先にエクスポートする必要があり、送信先ごとにログに含まれるフィールドが異なります。この例では、生ログのフィールドは f1、f2、f3、f4、および f5 です。
target1 に出力する場合、f1 および f2 フィールドを削除し、他のすべてのフィールドを保持します。
target2 に出力する場合、f3 および f4 フィールドを削除し、他のすべてのフィールドを保持します。
設定例
生ログ
__time__ : 1591754815
f1: GET
f2: https
f3: aliyun
f4: 200
f5: standard変換構文
以下の例で使用されているデータ変換関数の詳細については、「関数概要」をご参照ください。
e_set 関数を使用して、
tag: target1, target2という新しいフィールドをログに追加します。e_split 関数を使用して、tag フィールドに基づいてログを 2 つのログに分割します。一方のログには
tag: target1フィールドが含まれ、もう一方のログにはtag: target2フィールドが含まれます。tag: target1フィールドを含むログから f1 および f2 を削除し、e_output 関数を使用して f3、f4、および f5 をtarget1にエクスポートします。tag: target1フィールドを含むログに対しては、以降の変換ルールは実行されません。tag: target2フィールドを含むログから f3 および f4 を削除します。
e_set("tag", "target1, target2")
e_split("tag")
e_if(e_search("tag==target1"), e_compose(e_drop_fields("f1", "f2", regex=False), e_output("target1")))
e_drop_fields("f3", "f4", regex=False)
e_output("target2")target1 へフィールドをエクスポート
__time__ : 1591754815
f3: aliyun
f4: 200
f5: standardtarget2 への出力
__time__ : 1591754815
f1: GET
f2: https
f5: standard誤った設定
次の処理構文を使用すると、target1 への出力は要件を満たします。ただし、この出力がそのまま target2 に渡されるため、target2 のログから f1 および f2 フィールドが失われてしまいます。
e_drop_fields("f1", "f2", regex=False)
e_coutput("target1")
e_drop_fields("f3", "f4", regex=False)
e_output("target2")