Logstore では、変換されたデータを異なるアカウント間の複数のターゲット Logstore へ送信することができます。

変換されたデータは、2つの方法を使って送信することができます。アカウント間の複数のターゲット Logstore へ送信する方法と、ターゲット Logstore へ動的に送信する方法があります。 次の表では、これら 2 種類の方法それぞれのメリットとデメリットについて示しています。
方法 メリット デメリット
複数のターゲット Logstore を設定します。 異なるアカウントの Logstore をターゲット Logstore として設定することができます。 複数のターゲット Logstore の設定や使用は複雑です。 ターゲット Logstore は静的に指定されます。 現在、指定できるターゲット Logstore は最大 20個です。
いくつかのターゲット Logstore を設定し、コード内のプロジェクトと logstore フィールドをリセットします。 ターゲット Logstore のプロジェクトと logstore フィールドは、動的に取得し、 LOG ドメイン固有言語 (DSL) ルールで設定することができます。 変換したデータは、20 個以上のターゲット Logstore へ送信することができます。 使用される AccessKey は、各ターゲット Logstore の設定によるものであり、動的に変更することはできません。 最大 20 個の異なるアカウントのターゲット Logstore を指定することができます。
現在、データ変換タスクは、同じリージョンでのみ送信することができます。

シナリオ 1: アカウント間で、複数のターゲット Logstore を送信する。

  • 生ログ
    """
    All the following logs are stored in the same Logstore. The logical name of this Logstore defaults to target0.
    """
    "Log 1"
    http_host:  m1.abcd.com
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    
    "Log 2"
    http_host:  m2.abcd.com
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    
    "Log 3"
    http_host:  m3.abcd.com
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    
    "Log 4"
    http_host:  m4.abcd.com
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https
  • 送信する目的
    • ソース Logstore target0http_status2XX のログイベントを保持し、そのトピックを success_event に設定します。
    • http_status3XX のログイベントをターゲット Logstore target1 へ送信し、そのトピックをredirection_event に設定します。
    • http_status4XX のログイベントをターゲット Logstore target2 へ送信し、そのトピックを unauthorized_event に設定します。
    • http_status5XX のログイベントをターゲット Logstore target3 へ送信し、そのトピックを internal_server_error_event に設定します。
  • LOG DSL オーケストレーション
    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"))
        )
  • 変換結果
    """
    Source Logstore: target0
    """
    __topic__:  success_event
    http_host:  m1.abcd.com
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    
    """
    Target Logstore: target1
    """
    __topic__:  redirection_event
    http_host:  m2.abcd.com
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    
    """
    Target Logstore: target2
    """
    __topic__: unauthorized_event
    http_host:  m3.abcd.com
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    
    """
    Target Logstore: target3
    """
    __topic__: internal_server_error_event
    http_host:  m4.abcd.com
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https
    • target0 や target1 などといったさまざなな Logstore の論理名を、LOG DSL ルールコードで設定します。 さらに、AccessKey を使って、異なるアカウントの複数プロジェクトや Logstore を設定します。データの送信
    • e_output 関数を呼び出した後、対応するログイベントはソース Logstore から削除されます。 e_output 関数を呼び出した後にソース Logstore のログイベントを保持したい場合は、代わりに e_coutput 関数を呼び出します。

シナリオ 2: ターゲット Logstore へ動的に送信する。

  • 生ログ
    "project1 logstore1"
    __tag__:type: dynamic_dispatch
    host:  a.b.c.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:  m.n.q.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:   e.f.d.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:   p.q.t.com
    project: project2
    logstore: logstore2
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https
  • 送信する目的
    • プロジェクトと logstore フィールドのさまざまな値に基づいて動的にログイベントを送信します。
    • 値が dynamic_dispatch に設定されている、タグ __tag:__type をログイベントへ追加します。
  • LOG DSL オーケストレーション
    e_output(project=v("project"), logstore=v("logstore"), tags={"type": "dynamic_dispatch"})
    • ターゲット Logstore への動的な送信に使用するデフォルトの AccessKey は、LOG DSL ルールの設定項目で設定された 1 つ目のターゲット Logstore に対応する AccessKey です。
    • e_output 関数はログイベント送信のプロジェクトフィールドや logstore フィールドの値を動的に抽出するため、前述の変換ルールは 、1 つ目のターゲット Logstore のプロジェクトフィールドや logstore フィールドから影響は受けません。
  • 変換結果
    "project1 logstore1"
    __tag__:type: dynamic_dispatch
    host:  a.b.c.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:  m.n.q.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:   e.f.d.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:   p.q.t.com
    project: project2
    logstore: logstore2
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https

シナリオ 3: アカウント間でターゲット Logstore を動的に送信する。

このシナリオは、シナリオ 1 と 2 を組み合わせたものです。
  • 生ログ
    """ 
    project1 belongs to account 1. It has two Logstores: logstore1 and logstore2.
    project2 belongs to account 2. It has two Logstores: logstore1 and logstore2.
    """
    "Log 1"
    host:  a.b.c.com
    project: project1
    logstore: logstore1
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    
    "Log 2"
    host:  m.n.q.com
    project: project1
    logstore: logstore2
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    
    "Log 3"
    host:   e.f.d.com
    project: project2
    logstore: logstore1
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    
    "Log 4"
    host:   p.q.t.com
    project: project2
    logstore: logstore2
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https
  • 送信する目的
    • プロジェクトや logstore フィールドのさまざまな値に基づいて、ログイベントを動的に送信します。
    • 異なるアカウントのターゲット Logstore へデータを送信します。 project1 はアカウント 1 に、project2 はアカウント 2に属しています。
  • LOG DSL オーケストレーション
    e_switch(e_match(v("project"), "project1"), e_output(name="target0", project=v("project"), logstore=v("logstore")),
             e_match(v("project"), "project2"), e_output(name="target1", project=v("project"), logstore=v("logstore")))
    • タスク設定項目で、ターゲット Logstore target0 と target1 にそれぞれ対応するアカウント 1 と アカウント 2 の AccessKey を設定します。
    • e_output関数はログイベント送信のプロジェクトフィールドや logstore フィールドの値を動的に抽出するため、前述の変換ルールは 、ターゲット Logstore target0 と target1 のプロジェクトフィールドや logstore フィールドから影響は受けません。
  • 変換結果
    """
    Account 1
    project1 logstore1
    """
    host:  a.b.c.com
    project: project1
    logstore: logstore1
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    
    """
    Account 1
    project1 logstore2
    """
    host:  m.n.q.com
    project: project1
    logstore: logstore2
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    
    """
    Account 2
    project2 logstore1
    """
    host:   e.f.d.com
    project: project2
    logstore: logstore1
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    
    """
    Account 2
    project2 logstore2
    """
    host:   p.q.t.com
    project: project2
    logstore: logstore2
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https