本トピックでは、複数の送信先 Logstore へのデータのディストリビューションに関する各種シナリオおよび必要な手順について説明します。対象となるシナリオには、動的ディストリビューション、クロスアカウントディストリビューション、動的クロスアカウントディストリビューション、および複雑なシナリオにおける動的ディストリビューションが含まれます。
背景情報
Simple Log Service のデータ変換機能では、変換結果を複数の送信先 Logstore へディストリビューションできます。変換結果を保存する際、異なるアカウントの AccessKey 情報を設定することで、そのアカウントに属する Logstore へ結果を送信できます。また、e_output 関数または e_coutput 関数を使用して、送信先のプロジェクトおよび Logstore を動的に取得し、異なる Logstore へ結果をディストリビューションすることも可能です。
-
変換結果は、最大 20 アカウントの Logstore へディストリビューションできます。
-
e_output 関数を使用した場合、指定された LogStore へ送信されたログは、その後続の変換ルールによって処理されません。指定された LogStore へ送信されたログに対しても後続の変換ルールを適用する場合は、e_coutput 関数をご利用ください。詳細については、「e_outputLogStoreut」をご参照ください。本トピックでは、例として e_output 関数を使用します。
シナリオ 1:クロスアカウントディストリビューション
たとえば、ある Web サイトのすべてのアクセスログが 1 つの Logstore に格納されています。このログから、ステータスコードごとに異なるログを、それぞれ別のアカウントに属する Logstore へディストリビューション・保存したいとします。
この要件を満たすには、Simple Log Service のデータ変換機能をご利用ください。
-
元のログ
http_host: example.com http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https http_host: example.org http_status: 301 request_method: POST request_uri: /data/data.php scheme: http http_host: example.net http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https http_host: aliyundoc.com http_status: 504 request_method: GET request_uri: /data/index.html scheme: https -
ディストリビューション要件
-
http_status が 2XX であるログを、ストレージターゲット target0 の Logstore0 に保存します。ログのトピックを success_event に設定します。
-
http_status が 3XX のログを、ストレージターゲット target1 の Logstore1 に振り分けます。ログのトピックを redirection_event に設定します。
-
http_status が 4XX であるログを、ストレージターゲット target2 の Logstore2 に転送します。ログトピックを unauthorized_event に設定します。
-
http_status が 5XX のログを、ストレージターゲット target3 の Logstore3 に配信します。ログトピックを internal_server_error_event に設定します。
target0 はアカウント A に属しています。target1、target2、および target3 はアカウント B に属しています。
-
-
変換ルール
e_switch(e_match("status", r"2\d+"), e_set("__topic__", "success_event"), e_match("status", r"3\d+"), e_compose(e_set("__topic__", "redirection_event"), e_output("target1")), e_match("status", r"4\d+"), e_compose(e_set("__topic__", "unauthorized_event"), e_output("target2")), e_match("status", r"5\d+"), e_compose(e_set("__topic__", "internal_server_error_event`"), e_output("target3")) ) -
ストレージターゲット
データ変換ジョブの作成 パネルで、ストレージターゲットを構成できます。詳細については、「データ変換ジョブの作成」をご参照ください。

ラベル
ストレージターゲット
送信先プロジェクトおよび Logstore
AccessKey
1
target0
Project0, LogStore0
アカウント A の AccessKey 情報
2
target1
Project1, Logstore1
アカウント B の AccessKey 情報
3
target2
Project2, Logstore2
アカウント B の AccessKey 情報
4
target3
Project3, Logstore3
アカウント B の AccessKey 情報
-
変換結果
## http_status が 2XX のログは、アカウント A の Logstore0 へディストリビューションされます。 __topic__: success_event http_host: example.com http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https ## http_status が 3XX のログは、アカウント B の Logstore1 へディストリビューションされます。 __topic__: redirection_event http_host: example.org http_status: 301 request_method: POST request_uri: /data/data.php scheme: http ## http_status が 4XX のログは、アカウント B の Logstore2 へディストリビューションされます。 __topic__: unauthorized_event http_host: example.net http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https ## http_status が 5XX のログは、アカウント B の Logstore3 へディストリビューションされます。 __topic__: internal_server_error_event http_host: aliyundoc.com http_status: 504 request_method: GET request_uri: /data/index.html scheme: https
シナリオ 2:シンプルな動的ディストリビューション
たとえば、ある Web サイトのすべてのアクセスログが 1 つの Logstore に格納されています。このログを、project および LogStore フィールドの値に基づいて、異なる Logstore へディストリビューション・保存したいとします。
この要件を満たすには、Simple Log Service のデータ変換機能をご利用ください。
-
元のログ
__tag__:type: dynamic_dispatch host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https __tag__:type: dynamic_dispatch host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http __tag__:type: dynamic_dispatch host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https __tag__:type: dynamic_dispatch host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https -
ディストリビューション要件
-
project および LogStore フィールドの値に基づき、ログを動的にディストリビューションします。
-
__tag__:type フィールドをログに追加し、その値を dynamic_dispatch に設定します。
-
-
変換ルール
e_output(project=v("project"), logstore=v("logstore"), tags={"type": "dynamic_dispatch"})e_output 関数は、project および LogStore フィールドの値を動的に抽出してログをディストリビューションします。
-
ストレージターゲット
データ変換ジョブの作成 パネルで、デフォルトのストレージターゲットを設定できます。このターゲットは、変換中に破棄されなかった他のログの保存先として使用されます。
説明本シナリオでは、動的ディストリビューションの送信先プロジェクトおよび Logstore は、e_output 関数内の構成によって決定されます。データ変換ジョブの作成 パネルでデフォルトのストレージターゲット(ラベル 1)として構成された送信先プロジェクトおよび Logstore とは無関係です。

-
変換結果
## Project1 の Logstore1 へディストリビューションされました。 __tag__:type: dynamic_dispatch host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https ## Project1 の Logstore2 へディストリビューションされました。 __tag__:type: dynamic_dispatch host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http ## Project2 の Logstore1 へディストリビューションされました。 __tag__:type: dynamic_dispatch host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https ## Project2 の Logstore2 へディストリビューションされました。 __tag__:type: dynamic_dispatch host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https
シナリオ 3:動的クロスアカウントディストリビューション
たとえば、ある Web サイトのすべてのアクセスログが 1 つの Logstore に格納されています。このログを、project および LogStore フィールドの値に基づき、異なるアカウントに属する Logstore へ動的にディストリビューションしたいとします。
この要件を満たすには、Simple Log Service のデータ変換機能をご利用ください。
-
元のログ
host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https -
ディストリビューション要件
project および LogStore フィールドの値に基づき、ログを動的にディストリビューションします。送信先のプロジェクトは異なるアカウントに属しています。Project1(LogStore1 および LogStore2 を含む)はアカウント A に属し、Project2(LogStore1 および LogStore2 を含む)はアカウント B に属しています。
-
変換ルール
e_switch(e_match(v("project"), "Project1"), e_output(name="target1", project=v("project"), logstore=v("logstore")), e_match(v("project"), "Project2"), e_output(name="target2", project=v("project"), logstore=v("logstore"))) -
ストレージターゲット
データ変換ジョブの作成 パネルで、ストレージターゲットを構成できます。詳細については、「データ変換ジョブの作成」をご参照ください。
説明本シナリオでは、送信先のプロジェクトおよび Logstore は、e_output 関数内の構成によって決定されます。データ変換ジョブの作成 パネルでデフォルトのストレージターゲット(ラベル 1)として構成された送信先プロジェクトおよび Logstore とは無関係です。

ラベル
ストレージターゲット
送信先プロジェクトおよび Logstore
AccessKey
1
target0
Project0, Logstore0
該当なし
2
target1
任意を選択してください。送信先は e_output 関数の構成によって決定されます。
アカウント A の AccessKey 情報
3
target2
任意を選択してください。送信先は e_output 関数の構成によって決定されます。
アカウント B の AccessKey 情報
-
変換結果
## アカウント A の Project1 の Logstore1 へディストリビューションされました。 host: example.aliyundoc.com project: Project1 logstore: Logstore1 http_status: 200 request_method: GET request_uri: /pic/icon.jpg scheme: https ## アカウント A の Project1 の Logstore2 へディストリビューションされました。 host: demo.aliyundoc.com project: Project1 logstore: Logstore2 http_status: 301 request_method: POST request_uri: /data/data.php scheme: http ## アカウント B の Project2 の Logstore1 へディストリビューションされました。 host: learn.aliyundoc.com project: Project2 logstore: Logstore1 http_status: 404 request_method: GET request_uri: /category/abc/product_id scheme: https ## アカウント B の Project2 の Logstore2 へディストリビューションされました。 host: guide.aliyundoc.com project: Project2 logstore: Logstore2 http_status: 504 request_method: GET request_uri: /data/index.html scheme: https
シナリオ 4:複雑なシナリオにおける動的ディストリビューション
たとえば、ある企業がゲームの広告を配信しており、そのゲームに対するすべての API リクエスト情報を 1 つの Logstore に格納しています。この企業は、user-agent リクエストヘッダーを解析し、iOS、Android、Windows など異なるデバイスからのリクエストを分類・ディストリビューション・保存したうえで、広告コンバージョン率を分析したいと考えています。
これらの要件を満たすには、Simple Log Service のデータ変換機能およびクエリと分析機能をご利用ください。
-
元のログ
__source__:127.0.0.0 __tag__:__receive_time__: 1589541467 ip:10.0.0.0 request_method: GET user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 -
ディストリビューション要件
-
Windows ユーザーからのリクエスト情報を、ストレージターゲット target1 の Logstore1 へディストリビューション・保存します。
-
iOS ユーザーからのリクエスト情報を、ストレージターゲット target2 の Logstore2 へディストリビューション・保存します。
-
Android ユーザーからのリクエスト情報を、ストレージターゲット target3 の Logstore3 へディストリビューション・保存します。
-
-
変換ルール
本例では、ua_parse_os 関数を使用して user_agent フィールドを解析し、dct_get 関数を使用してリクエストヘッダーからオペレーティングシステム情報を取得します。次に、e_set 関数を使用して、オペレーティングシステム情報を含む os フィールドを追加します。最後に、e_output 関数および条件関数を用いて動的ディストリビューションを行います。
e_set("os", dct_get(ua_parse_os(v("user_agent")),"family")) e_if(e_search("os==Windows"),e_output(name="target1")) e_if(e_search("os=iOS"),e_output(name="target2")) e_if(e_search("os==Android"),e_output(name="target3")) -
ストレージターゲット
データ変換ジョブの作成 パネルで、ストレージターゲットを構成できます。詳細については、「データ変換ジョブの作成」をご参照ください。

ラベル
ストレージターゲット
送信先プロジェクトおよび Logstore
1
target0
Project0 および LogStore0
2
target1
Project1, Logstore1
3
target2
Project2, Logstore2
4
target3
Project3, Logstore3
-
クエリと分析
送信先 Logstore でクエリと分析操作を実行し、広告コンバージョン率を算出します。以下のクエリ結果は、Android ユーザーの広告コンバージョン率がより高いことを示しています。詳細については、「クエリと分析のクイックスタート」をご参照ください。
-
Logstore2 のクエリと分析ページで、次のクエリ文を入力して、iOS ユーザーからの GET および POST リクエストの比率を確認できます。
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
-
Logstore3 のクエリと分析ページで、次のクエリ文を入力して、Android ユーザーからの GET および POST リクエストの比率を確認できます。
* | SELECT Request_method, COUNT(*) as number GROUP BY Request_method
-