Todos los productos
Search
Centro de documentos

Simple Log Service:Distribuir datos en varios Logstores

Última actualización: Sep 02, 2026

Este tema describe diversos escenarios para distribuir datos en varios Logstores, como la distribución dinámica, la distribución entre cuentas, la distribución dinámica entre cuentas y la distribución dinámica compleja, así como los pasos correspondientes a cada uno.

Contexto

La función de transformación de datos de Log Service permite distribuir resultados en varios Logstores. Puede usar pares de AccessKey para enviar resultados a Logstores de diferentes cuentas, o utilizar las funciones e_output y e_coutput para enrutar dinámicamente los resultados a un Project y Logstore específicos.

Nota
  • Puede distribuir resultados en Logstores de un máximo de 20 cuentas.

  • La función e_output envía registros al Logstore especificado y detiene la aplicación de reglas de transformación subsecuentes. Para continuar aplicando reglas después de enviar los registros, utilice la función e_coutput. Para obtener más información, consulte e_output and e_coutput functions. Este tema utiliza la función e_output como ejemplo.

Escenario 1: Distribución entre cuentas

Por ejemplo, todos los registros de acceso de un sitio web se almacenan en un solo Logstore. Desea enrutar los registros con distintos estados HTTP a Logstores en diferentes cuentas.

Esto se logra mediante la función de transformación de datos de Log Service.

  • Registros sin procesar

    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 distribución

    • Los registros con un http_status de 2XX se almacenan en Logstore0 del destino de almacenamiento target0, y el tema se establece en success_event.

    • Los registros donde http_status es 3XX se distribuyen a Logstore1 del destino de almacenamiento target1, y el tema se establece en redirection_event.

    • Los registros con un http_status de 4XX se distribuyen a Logstore2 del destino de almacenamiento target2, y el tema se establece en unauthorized_event.

    • Los registros con un http_status de 5XX se distribuyen a Logstore3 del destino de almacenamiento target3, y el tema se establece en internal_server_error_event.

    target0 pertenece a la cuenta A, mientras que target1, target2 y target3 pertenecen a la cuenta B.

  • Regla de transformación

    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 almacenamiento

    En el panel Create Data Transformation Job, configure los destinos de almacenamiento. Para obtener más información, consulte Create a data transformation job. La región de destino para Target 2 (target1) es China (Beijing) y su endpoint es https://cn-beijing.log.aliyuncs.com. La región de destino para Target 3 (target2) es China (Hangzhou) - Current Region y su endpoint es cn-hangzhou-intranet.log.aliyuncs.com.

    Etiqueta

    Destino de almacenamiento

    Project y Logstore de destino

    AccessKey

    1

    target0

    Project0, Logstore0

    Par de AccessKey de la cuenta A

    2

    target1

    Project1, Logstore1

    Par de AccessKey de la cuenta B

    3

    target2

    Project2, Logstore2

    Par de AccessKey de la cuenta B

    4

    target3

    Project3, Logstore3

    Par de AccessKey de la cuenta B

  • Resultados de la transformación

    ## 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

Escenario 2: Distribución dinámica simple

Por ejemplo, todos los registros de acceso de un sitio web se almacenan en un solo Logstore. Desea distribuir estos registros en diferentes Logstores según los campos project y LogStore.

Esto se logra mediante la función de transformación de datos de Log Service.

  • Registros sin procesar

    __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 distribución

    • Los registros se distribuyen dinámicamente según los valores de los campos project y Logstore.

    • Agregue el campo tag:type con el valor dynamic_dispatch al registro.

  • Regla de transformación

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

    La función e_output extrae dinámicamente los valores del campo project y del campo Logstore para distribuir los registros.

  • Destino de almacenamiento

    En la página Create Data Transformation Job, solo necesita configurar un destino de almacenamiento predeterminado. Este destino se utiliza para almacenar los registros que no se descartan durante el proceso de transformación.

    Nota

    En este escenario, el Project y Logstore de destino para la distribución dinámica se determinan mediante la configuración en la función e_output. Este destino es independiente del configurado para el destino de almacenamiento predeterminado (Etiqueta 1) en la página Create Data Transformation Job.

    Ejemplo de configuración para el destino de almacenamiento predeterminado (Etiqueta 1): Establezca Target Name en target0, Destination Region en China (Zhangjiakou), Destination Project en Project0 y Destination Logstore en Logstore0. Para Authorization Method, seleccione Default Role.

  • Resultados de la transformación

    ## 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

Escenario 3: Distribución dinámica entre cuentas

Por ejemplo, todos los registros de acceso de un sitio web se almacenan en un solo Logstore. Desea enrutar dinámicamente los registros a Logstores en diferentes cuentas según los campos project y logstore de los registros.

Esto se logra mediante la función de transformación de datos de Log Service.

  • Registros sin procesar

    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 distribución

    Los datos se distribuyen dinámicamente a Projects en diferentes cuentas según los valores de los campos project y LogStore en un registro. Por ejemplo, Project1 (que contiene Logstore1 y Logstore2) pertenece a la cuenta A, y Project2 (que contiene Logstore1 y Logstore2) pertenece a la cuenta B.

  • Regla de transformación

    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 almacenamiento

    En la página Create Data Transformation Job, configure los destinos de almacenamiento. Para obtener más información, consulte Create a data transformation job.

    Nota

    En este escenario, el Project y Logstore de destino se determinan mediante la configuración en la función e_output. Este destino es independiente del configurado para el destino de almacenamiento predeterminado (Etiqueta 1) en la página Create Data Transformation Job.

    Para el Authorization Method de cada destino de almacenamiento, seleccione AccessKey Pair y luego introduzca el AccessKey ID y el AccessKey Secret de la cuenta correspondiente.

    Etiqueta

    Destino de almacenamiento

    Project y Logstore de destino

    AccessKey

    1

    target0

    Project0, Logstore0

    No aplica

    2

    target1

    Puede ser cualquier valor. El destino lo determina la función e_output.

    Par de AccessKey de la cuenta A

    3

    target2

    Puede ser cualquier valor. El destino lo determina la función e_output.

    Par de AccessKey de la cuenta B

  • Resultados de la transformación

    ## 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

Escenario 4: Distribución dinámica compleja

Por ejemplo, una empresa publica anuncios de un videojuego y almacena todos los registros de solicitudes API del juego en un solo Logstore. La empresa desea analizar el encabezado de solicitud user_agent para enrutar las solicitudes de diferentes dispositivos (iOS, Android y Windows) a Logstores separados, y analizar el campo request_method para calcular la tasa de conversión de los anuncios.

Estos requisitos se cumplen mediante las funciones de transformación de datos, y de consulta y análisis de Log Service.

  • Registro sin procesar

    __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 distribución

    • Distribuir los registros de solicitudes de usuarios de Windows a Logstore1 en el destino de almacenamiento target1.

    • Distribuir los registros de solicitudes de usuarios de iOS a Logstore2 en el destino de almacenamiento target2.

    • Distribuir los registros de solicitudes de usuarios de Android a Logstore3 en el destino de almacenamiento target3.

  • Regla de transformación

    En este ejemplo, puede usar la función ua_parse_os para analizar el campo user_agent, la función dct_get para obtener información del sistema operativo desde el encabezado de la solicitud, y la función e_set para agregar un nuevo campo llamado os y establecer su valor con la información del sistema operativo. Posteriormente, utilice la función e_output y funciones condicionales para realizar la distribución 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 almacenamiento

    En la página Create Data Transformation Job, configure los destinos de almacenamiento. Para obtener más información, consulte Create a data transformation job.

    Para cada destino de almacenamiento, configure su Target Name, Destination Project y Destination Logstore. También debe seleccionar una Destination Region (por ejemplo, China (Hangzhou)) y un Authorization Method (Default Role o Custom Role). Si selecciona Custom Role, debe proporcionar el Role ARN.

    Etiqueta

    Destino de almacenamiento

    Project y Logstore de destino

    1

    target0

    Project0, Logstore0

    2

    target1

    Project1, Logstore1

    3

    target2

    Project2, Logstore2

    4

    target3

    Project3, Logstore3

  • Consulta y análisis

    Ejecute consultas en los Logstores de destino para determinar la tasa de conversión de los anuncios. Los siguientes resultados indican que los usuarios de Android tienen una tasa de conversión más alta. Para obtener más información, consulte Query and analysis quick start.

    • En la página Search & Analysis de Logstore2, ejecute la siguiente consulta para contar las solicitudes GET y POST de usuarios de iOS.

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

      查询分析

    • En la página Search & Analysis de Logstore3, ejecute la siguiente consulta para contar las solicitudes GET y POST de usuarios de Android.

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

      查询分析