Todos os produtos
Search
Central de documentação

Simple Log Service:Distribuir dados para vários Logstores

Última atualização: Jul 03, 2026

Este tópico descreve cenários de distribuição de dados para vários Logstores, como distribuição dinâmica, entre contas, dinâmica entre contas e dinâmica complexa, além das etapas para cada caso.

Informações básicas

O recurso de transformação de dados do Log Service permite distribuir resultados para vários Logstores. Use pares de AccessKey para enviar resultados a Logstores em contas diferentes ou utilize as funções e_output e e_coutput para rotear resultados dinamicamente para um Project e Logstore específicos.

Nota
  • É possível distribuir resultados para Logstores em até 20 contas diferentes.

  • A função e_output envia logs para o Logstore especificado e interrompe a aplicação das regras de transformação subsequentes. Para continuar aplicando regras após o envio dos logs, use a função e_coutput. Para mais informações, consulte Funções e_output e e_coutput. Este tópico usa a função e_output como exemplo.

Cenário 1: Distribuição entre contas

Por exemplo, todos os logs de acesso de um site estão armazenados em um único Logstore. O objetivo é rotear logs com diferentes status HTTP para Logstores em contas distintas.

Use o recurso de transformação de dados do Log Service para realizar essa tarefa.

  • Logs brutos

    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
  • Requisitos de distribuição

    • Logs com http_status igual a 2XX são armazenados no Logstore0 do destino de armazenamento target0, com o tópico definido como success_event.

    • Logs com http_status igual a 3XX são distribuídos para o Logstore1 no destino de armazenamento target1, com o tópico definido como redirection_event.

    • Logs com http_status igual a 4XX são enviados ao Logstore2 no destino de armazenamento target2, com o tópico definido como unauthorized_event.

    • Logs com http_status igual a 5XX são direcionados ao Logstore3 no destino de armazenamento target3, com o tópico definido como internal_server_error_event.

    O target0 pertence à conta A, enquanto target1, target2 e target3 pertencem à conta B.

  • Regra de transformação

    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"))
        )
  • Destinos de armazenamento

    No painel Create Data Transformation Job, configure os destinos de armazenamento. Para mais informações, consulte Criar um job de transformação de dados. A região de destino para o Target 2 (target1) é China (Beijing), com endpoint https://cn-beijing.log.aliyuncs.com. Já o Target 3 (target2) tem como região China (Hangzhou) - Current Region, e seu endpoint é cn-hangzhou-intranet.log.aliyuncs.com.

    Label

    Storage target

    Destination Project and Logstore

    AccessKey

    1

    target0

    Project0, Logstore0

    Par de AccessKey da Conta A

    2

    target1

    Project1, Logstore1

    Par de AccessKey da Conta B

    3

    target2

    Project2, Logstore2

    Par de AccessKey da Conta B

    4

    target3

    Project3, Logstore3

    Par de AccessKey da Conta B

  • Resultados da transformação

    ## Logs with an http_status of 2xx are distributed to Logstore0, which belongs to Account A.
    __topic__:  success_event
    http_host:  example.com
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    ## Logs with an http_status of 3xx are distributed to Logstore1, which belongs to Account B.
    __topic__:  redirection_event
    http_host:  example.org
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    ## Logs with an http_status of 4xx are distributed to Logstore2, which belongs to Account B.
    __topic__: unauthorized_event
    http_host:  example.net
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    ## Logs with an http_status of 5xx are distributed to Logstore3, which belongs to Account B.
    __topic__: internal_server_error_event
    http_host:  aliyundoc.com
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https

Cenário 2: Distribuição dinâmica simples

Suponha que todos os logs de acesso de um site estejam em um único Logstore e você precise distribuí-los para diferentes Logstores com base nos campos project e LogStore.

Use o recurso de transformação de dados do Log Service para atender a essa necessidade.

  • Logs brutos

    __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
  • Requisitos de distribuição

    • A distribuição ocorre dinamicamente conforme os valores dos campos project e Logstore.

    • Adicione o campo tag:type com o valor dynamic_dispatch ao log.

  • Regra de transformação

    e_output(project=v("project"), logstore=v("logstore"), tags={"type": "dynamic_dispatch"})

    A função e_output extrai dinamicamente os valores dos campos project e Logstore para distribuir os logs.

  • Destino de armazenamento

    Na página Create Data Transformation Job, configure apenas um destino de armazenamento padrão. Esse destino armazena os logs não descartados durante o processo de transformação.

    Nota

    Neste cenário, o Project e o Logstore de destino para a distribuição dinâmica são definidos pela configuração na função e_output. Esse destino é independente daquele configurado para o destino de armazenamento padrão (Label 1) na página Create Data Transformation Job.

    Exemplo de configuração para o destino de armazenamento padrão (Label 1): defina Target Name como target0, Destination Region como China (Zhangjiakou), Destination Project como Project0 e Destination Logstore como Logstore0. Em Authorization Method, selecione Default Role.

  • Resultados da transformação

    ## Distributed to Logstore1 in Project1.
    __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
    ## Distributed to Logstore2 in Project1.
    __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
    ## Distributed to Logstore1 in Project2.
    __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
    ## Distributed to Logstore2 in Project2.
    __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

Cenário 3: Distribuição dinâmica entre contas

Imagine que todos os logs de acesso de um site residam em um único Logstore e seja necessário roteá-los dinamicamente para Logstores em contas diferentes, utilizando os campos project e logstore presentes nos logs.

Use o recurso de transformação de dados do Log Service para implementar essa solução.

  • Logs brutos

    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
  • Requisitos de distribuição

    Os dados são distribuídos dinamicamente para Projects em contas distintas conforme os valores dos campos project e LogStore no log. Por exemplo, o Project1 (contendo Logstore1 e Logstore2) pertence à conta A, e o Project2 (contendo Logstore1 e Logstore2) pertence à conta B.

  • Regra de transformação

    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")))
  • Destinos de armazenamento

    Na página Create Data Transformation Job, configure os destinos de armazenamento. Para mais detalhes, consulte Criar um job de transformação de dados.

    Nota

    Neste cenário, o Project e o Logstore de destino são determinados pela configuração na função e_output. Esse destino independe daquele configurado para o destino de armazenamento padrão (Label 1) na página Create Data Transformation Job.

    Para o Authorization Method de cada destino de armazenamento, selecione AccessKey Pair e insira o AccessKey ID e o AccessKey Secret da conta correspondente.

    Label

    Storage target

    Destination Project and Logstore

    AccessKey

    1

    target0

    Project0, Logstore0

    Não aplicável

    2

    target1

    Pode ser qualquer valor. O destino é determinado pela função e_output.

    Par de AccessKey da Conta A

    3

    target2

    Pode ser qualquer valor. O destino é determinado pela função e_output.

    Par de AccessKey da Conta B

  • Resultados da transformação

    ## Distributed to Logstore1 in Account A's Project1.
    host:  example.aliyundoc.com
    project: Project1
    logstore: Logstore1
    http_status:  200
    request_method:  GET
    request_uri:  /pic/icon.jpg
    scheme:  https
    ## Distributed to Logstore2 in Account A's Project1.
    host:  demo.aliyundoc.com
    project: Project1
    logstore: Logstore2
    http_status:  301
    request_method:  POST
    request_uri:  /data/data.php
    scheme:  http
    ## Distributed to Logstore1 in Account B's Project2.
    host:   learn.aliyundoc.com
    project: Project2
    logstore: Logstore1
    http_status:  404
    request_method:  GET
    request_uri:  /category/abc/product_id
    scheme:  https
    ## Distributed to Logstore2 in Account B's Project2.
    host:   guide.aliyundoc.com
    project: Project2
    logstore: Logstore2
    http_status:  504
    request_method:  GET
    request_uri:  /data/index.html
    scheme:  https

Cenário 4: Distribuição dinâmica complexa

Considere uma empresa que veicula anúncios de um jogo e armazena todos os logs de requisição de API desse jogo em um único Logstore. A empresa deseja analisar o cabeçalho de requisição user_agent para rotear requisições de diferentes dispositivos (iOS, Android e Windows) para Logstores separados e examinar o campo request_method para calcular a taxa de conversão dos anúncios.

Use os recursos de transformação de dados e de consulta e análise do Log Service para atender a esses requisitos.

  • Log bruto

    __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
  • Requisitos de distribuição

    • Encaminhar logs de requisição de usuários Windows para o Logstore1 no destino de armazenamento target1.

    • Direcionar logs de requisição de usuários iOS para o Logstore2 no destino de armazenamento target2.

    • Enviar logs de requisição de usuários Android para o Logstore3 no destino de armazenamento target3.

    • Regra de transformação

      Neste exemplo, use a função ua_parse_os para analisar o campo user_agent, a função dct_get para obter informações do sistema operacional a partir do cabeçalho da requisição e a função e_set para adicionar um novo campo chamado os, definindo seu valor com as informações do sistema operacional. Em seguida, use a função e_output juntamente com funções condicionais para executar a distribuição dinâmica.

      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"))
    • Destinos de armazenamento

      Na página Create Data Transformation Job, configure os destinos de armazenamento. Para mais informações, consulte Criar um job de transformação de dados.

      Para cada destino de armazenamento, configure Target Name, Destination Project e Destination Logstore. Selecione também uma Destination Region (por exemplo, China (Hangzhou)) e um Authorization Method (Default Role ou Custom Role). Caso selecione Custom Role, forneça o Role ARN.

      Label

      Storage target

      Destination Project and Logstore

      1

      target0

      Project0, Logstore0

      2

      target1

      Project1, Logstore1

      3

      target2

      Project2, Logstore2

      4

      target3

      Project3, Logstore3

    • Consulta e análise

      Execute consultas nos Logstores de destino para determinar a taxa de conversão dos anúncios. Os resultados abaixo indicam que usuários Android apresentam uma taxa de conversão maior. Para mais detalhes, consulte Início rápido em consulta e análise.

      • Na página Search & Analysis do Logstore2, execute a seguinte consulta para contar as requisições GET e POST de usuários iOS.

        * | SELECT Request_method, COUNT(*) as number GROUP BY Request_method

        查询分析

      • Na página Search & Analysis do Logstore3, execute a seguinte consulta para contar as requisições GET e POST de usuários Android.

        * | SELECT Request_method, COUNT(*) as number GROUP BY Request_method

        查询分析