Todos os produtos
Search
Central de documentação

Simple Log Service:Funções de processamento de eventos

Última atualização: Jul 03, 2026

As funções de processamento de eventos permitem descartar, reter, dividir e enviar logs durante a transformação de dados. Este tópico aborda a sintaxe, os parâmetros e os exemplos de cada função.

Funções

Categoria

Função

Descrição

Operações de eventos

e_drop

Descarta um log com base em uma condição.

Pode ser usada com outras funções. Para obter mais informações, consulte Replicar e distribuir dados.

e_keep

Retém um log com base em uma condição.

Tanto e_keep quanto e_drop descartam logs. O e_keep descarta um log quando a condição não é atendida, enquanto o e_drop descarta um log quando a condição é atendida.

# The following four transformation rules are equivalent.
e_if_else(e_search("f1==v1"), KEEP, DROP)
e_if_else(e_search("not f1==v1"), DROP) 
e_keep(e_search("f1==v1"))
e_drop(e_search("not f1==v1"))

# The following transformation rules are meaningless.
The following transformation rules have no effect and serve no purpose:   
e_keep()

Pode ser usada com outras funções. Para obter mais informações, consulte Transformar dados JSON complexos.

Divisão de eventos

e_split

Divide um log em vários logs com base no valor de um campo. Também é possível extrair campos com JMESPath antes da divisão.

Pode ser usada com outras funções. Para obter mais informações, consulte Transformar dados JSON complexos.

Saída de eventos

e_output and e_coutput

Envia um log para um Logstore especificado. Você pode configurar o topic, source, tags e shard hash para o log de saída.

  • e_output: Envia o log para o Logstore especificado. As regras de transformação subsequentes não são executadas no log.

  • e_coutput: Envia o log para o Logstore especificado. As regras de transformação subsequentes continuam sendo executadas no log.

Pode ser usada com outras funções. Para obter mais informações, consulte Agregar dados de log de diferentes Logstores em um único Logstore.

Transformação de eventos em dados de séries temporais

e_to_metric

Converte um log para o formato de séries temporais (Metricstore).

Nota

Após processar os dados no formato de séries temporais, selecione um Metricstore como destino ao salvar os resultados da transformação.

Veja a seguir um exemplo de dados típicos de séries temporais:

__labels__:host#$#myhost
__name__:rt
__time_nano__:1614739608000000000
__value__:123.0

Para obter mais informações, consulte Dados de séries temporais (Metric).

Pode ser usada com outras funções. Para obter mais informações, consulte Converter campos de log em um Logstore em medidas de métricas em um Metricstore.

e_drop

Descarta um log com base em uma condição.

  • Sintaxe

    e_drop(condition=True)

    O identificador fixo DROP é suportado, o que equivale a e_drop().

  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    condition

    Bool

    Não

    Padrão: True. Normalmente, um resultado de função condicional é passado para esse parâmetro.

  • Resposta

    Descarta o log e retorna None se a condição for atendida. Caso contrário, retorna o log original.

  • Exemplos

    • Exemplo 1: Descartar o log se o valor do campo __programe__ for access. Caso contrário, manter o log.

      • Logs brutos

        __programe__: access
        age:  18
        content:  123
        name:  maki
        __programe__: error
        age:  18
        content:  123
        name:  maki
      • Regra de transformação

        e_if(e_search("__programe__==access"), DROP)
      • Resultado

        O log com o campo __programe__ definido como access é descartado. O log com o campo __programe__ definido como error é retido.

        __programe__: error
        age:  18
        content:  123
        name:  maki
    • Exemplo 2: A condição é avaliada como True. O log é descartado.

      • Log bruto

        k1: v1
        k2: v2
        k3: k1
      • Regra de transformação

        e_drop(e_search("k1==v1"))
      • Resultado

        O log é descartado porque a condição k1==v1 é True.

    • Exemplo 3: A condição é avaliada como False. O log é retido.

      • Log bruto

        k1: v1
        k2: v2
        k3: k1
      • Regra de transformação

        e_drop(e_search("not k1==v1"))
      • Resultado

        k1: v1
        k2: v2
        k3: k1
    • Exemplo 4: Nenhuma condição é definida. O valor padrão True é usado e o log é descartado.

      • Log bruto

        k1: v1
        k2: v2
        k3: k1
      • Regra de transformação

        e_drop()
      • Resultado

        O log é descartado.

  • Referências

    Pode ser usada com outras funções. Para obter mais informações, consulte Replicar e distribuir dados.

e_keep

Retém um log com base em uma condição.

  • Sintaxe

    e_keep(condition=True)

    O identificador fixo KEEP é suportado, o que equivale a e_keep().

  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    condition

    Bool

    Não

    Padrão: True. Normalmente, um resultado de função condicional é passado para esse parâmetro.

  • Resposta

    Retorna o log original se a condição for atendida. Descarta o log se a condição não for atendida.

  • Exemplos

    • Exemplo 1: Reter o log se o valor do campo __programe__ for access. Caso contrário, descartar o log.

      • Logs brutos

        __programe__: access
        age:  18
        content:  123
        name:  maki
        __programe__: error
        age:  18
        content:  123
        name:  maki
      • Regra de transformação

        e_keep(e_search("__programe__==access"))
        # Equivalent to
        e_if(e_search("not __programe__==access"), DROP)
        # Equivalent to
        e_if_else(e_search("__programe__==access"), KEEP, DROP)  
      • Resultado

        O log com o campo __programe__ definido como access é retido.

        __programe__: access
        age:  18
        content:  123
        name:  maki
    • Exemplo 2: A condição é avaliada como True. O log é retido.

      • Log bruto

        k1: v1
        k2: v2
        k3: k1
      • Regra de transformação

        e_keep(e_search("k1==v1"))
      • Resultado

        k1: v1
        k2: v2
        k3: k1
    • Exemplo 3: A condição é avaliada como False. O log é descartado.

      • Log bruto

        k1: v1
        k2: v2
        k3: k1
      • Regra de transformação

        e_keep(e_search("not k1==v1"))
      • Resultado

        O log é descartado.

    • Exemplo 4: A condição é False. O log é descartado.

      • Log bruto

        k1: v1
        k2: v2
        k3: k1
      • Regra de transformação

        e_keep(False)
      • Resultado

        O log é descartado.

  • Referências

    Pode ser usada com outras funções. Para obter mais informações, consulte Transformar dados JSON complexos.

e_split

Divide um log em vários logs com base no valor de um campo. Também é possível extrair campos com JMESPath antes da divisão.

  • Sintaxe

    e_split(field_name, sep=',', quote='"', lstrip=True, jmes=None, output=None)

    Regras de divisão:

    1. Se você especificar o parâmetro jmes, o valor do campo do log é convertido em uma lista JSON, e o JMES é usado para extrair valores para a próxima etapa. Se você não especificar o parâmetro jmes, o valor do campo é usado diretamente na próxima etapa.

    2. Se o valor da etapa anterior for uma lista ou uma string no formato de lista JSON, o log será dividido com base nessa lista. Caso contrário, o valor será analisado como um arquivo CSV usando os parâmetros sep, quote, e lstrip. O log será então dividido com base nos valores analisados.

  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    field_name

    String

    Sim

    O nome do campo a ser dividido. Para obter informações sobre como definir nomes de campos especiais, consulte Tipos de eventos.

    sep

    String

    Não

    O separador usado para dividir vários valores.

    quote

    String

    Não

    O caractere de aspas usado para delimitar valores.

    lstrip

    String

    Não

    Se deve remover os espaços à esquerda de cada valor. Padrão: True.

    jmes

    String

    Não

    Converte o valor do campo em um objeto JSON, extrai um valor usando uma expressão JMES e, em seguida, divide o resultado.

    output

    String

    Não

    O nome do campo para os resultados da divisão. Por padrão, o nome do campo original é substituído.

  • Resposta

    Retorna uma lista de logs com os valores dos campos substituídos pelos valores divididos da lista de origem.

  • Exemplos

    • Logs brutos

      __topic__:
      age:  18
      content:  123
      name:  maki
      __topic__:
      age:  18
      content:  123
      name:  maki
    • Regra de transformação

      e_set("__topic__", "V_SENT,V_RECV,A_SENT,A_RECV")
      e_split("__topic__")
    • Resultado

      __topic__:  A_SENT
      age:  18
      content:  123
      name:  maki
      __topic__:  V_RECV
      age:  18
      content:  123
      name:  maki
      ...
  • Referências

    Pode ser usada com outras funções. Para obter mais informações, consulte Transformar dados JSON complexos.

Logstore de saída

Envia um log para um Logstore especificado. Você pode configurar o topic, source e tags para o log de saída.

  • Sintaxe

    e_output(name=None, project=None, logstore=None, topic=None, source=None, tags=None, hash_key_field=None, hash_key=None)
    e_coutput(name=None, project=None, logstore=None, topic=None, source=None, tags=None, hash_key_field=None, hash_key=None)

    No modo de visualização, os logs não são enviados para o Logstore de destino. Em vez disso, são enviados para o Logstore internal-etl-log, um Logstore dedicado que é criado automaticamente no projeto atual quando você visualiza pela primeira vez um job de transformação de dados. Você não pode modificar a configuração nem gravar outros dados nesse Logstore. Este Logstore é gratuito.

  • Parâmetros

    Nota

    Se você configurar os parâmetros name, project e logstore na função e_output ou e_coutput e também configurar um Project de destino e um Logstore de destino no painel Create Data Transformation Job, os parâmetros da função terão precedência. Os detalhes são os seguintes:

    • Se você configurar apenas o parâmetro name na função e_output ou e_coutput, os resultados da transformação serão distribuídos e armazenados no Logstore de destino que corresponde ao nome especificado.

    • Se você configurar apenas os parâmetros project e Logstore na função e_output, os resultados da transformação serão distribuídos e armazenados no Logstore de destino que você especificou na função e_output.

      Se você usar um par de AccessKey para autorização, o par de AccessKey da conta conectada atual será usado durante o processo de transformação.

    • Se você configurar os parâmetros name, project e Logstore na função e_output, os resultados da transformação serão distribuídos e armazenados no Logstore de destino que você especificou na função e_output.

      Se você usar um par de AccessKey para autorização, o par de AccessKey especificado para o nome de destino será usado durante o processo de transformação.

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    name

    String

    Não

    O nome do destino de armazenamento. Padrão: None.

    project

    String

    Não

    O projeto de destino. Já deve existir.

    Logstore

    String

    Não

    O Logstore de destino. Já deve existir.

    topic

    String

    Não

    Define um novo topic para o log.

    source

    String

    Não

    Define um novo source para o log.

    tags

    Dict

    Não

    Define novas tags para o log. Passe as tags em formato de dicionário.

    Nota

    Você não precisa adicionar o prefixo __tag__: às palavras-chave.

    hash_key_field

    String

    Não

    Um nome de campo no log. O job de transformação encaminha o log para um shard específico com base no valor de hash desse campo.

    Nota

    Se o campo especificado não existir no log, o sistema volta ao modo de balanceamento de carga e grava o log aleatoriamente em um shard.

    hash_key

    String

    Não

    Um valor de hash. O job de transformação encaminha o log para um shard específico com base nesse valor.

    Nota

    O parâmetro hash_key_field tem prioridade maior do que este parâmetro. Se o parâmetro hash_key_field já estiver configurado na sintaxe de transformação, este parâmetro não terá efeito.

    • Definir o destino de armazenamento padrão

      Ao usar a função e_output ou e_coutput, você deve configurar um destino de armazenamento padrão no painel Create Data Transformation Job. O Simple Log Service usa o destino de armazenamento rotulado como 1 como padrão. Por exemplo, o job de transformação de dados envia os dados que atendem aos critérios de uma função e_output para os respectivos Logstores de destino target_01, target_02 e target_03. O job envia todos os outros dados não descartados durante a transformação para o Logstore de destino do destino de armazenamento padrão (target0). Na área Storage destination, configure dois destinos de armazenamento. Destino de armazenamento 1: Defina Target name como target0, Target region como China (Hangzhou), Target Project como Project0, Destination Logstore como Logstore0 e Authorization method como default role. Destino de armazenamento 2: Defina Target name como target1, Target region como China (Hangzhou), Target Project como Project1, Destination Logstore como Logstore1 e Authorization method como default role.

    • Configurações avançadas de parâmetros

      Ao usar a função e_output ou e_coutput e o projeto ou Logstore de destino não existir, acesse o painel Create Data Transformation Job. Na seção Advanced Parameter Settings, defina key como config.sls_output.failure_strategy e value como {"drop_when_not_exists":"true"} para ignorar o log. O log ignorado é descartado e reportado como um log de nível de aviso. Se você não configurar as Advanced Parameter Settings, o job de transformação de dados aguardará a criação do projeto e do Logstore de destino antes de executar.

      Aviso

      Ao usar as Advanced Parameter Settings, os logs serão descartados se o projeto ou Logstore de destino não existir. Use este recurso com cautela.

    • Resultados

      • e_output: Envia o log para o Logstore especificado. As regras de transformação subsequentes não são executadas neste log.

      • e_coutput: Envia o log para o Logstore especificado. As regras de transformação subsequentes continuam sendo executadas neste log.

  • Exemplos

    • Exemplo 1: Se o valor do campo k2 corresponder a uma expressão regular, envie o log para target2 e defina o topic como topic1.

      • Log bruto

        __topic__:
        k1: v1
        k2: v2
        x1: v3
        x5: v4
      • Regra de transformação

        A função e_drop() é usada aqui para descartar dados filtrados pela função e_if(). Se você não adicionar essa função, os dados filtrados serão entregues ao destino de armazenamento padrão.

        e_if(e_match("k2", r"\w+"), e_output(name="target2", source="source1", topic="topic1"))
        e_drop()
      • Resultado

        __topic__:  topic1
        k1: v1
        k2: v2
        x1: v3
        x5: v4
    • Exemplo 2: Calcular um hash com base no valor do campo db_version no log. Envie o log para um shard específico do destino de armazenamento com base nesse valor de hash.

      • Logs brutos

        __topic__:
        db_name: db-01
        db_version:5.6
        __topic__:
        db_name: db-02
        db_version:5.7
      • Regra de transformação

        e_output(name="target1", hash_key_field="db_version")
      • Resultado

        # Assume the storage destination target1 has two shards.
        # The range of shard 0 is [00000000000000000000000000000000,80000000000000000000000000000000).
        # The range of shard 1 is [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff).
        # The hash values for db_version values 5.6 and 5.7 are 0ebe1a34e990772a2bad83ce076e0766 and f1867131d82f2256b4521fe34aec2405, respectively.
        # shard 0:
        __topic__:
        db_name: db-01
        db_version:5.6
        # shard 1:
        __topic__:
        db_name: db-02
        db_version:5.7
    • Exemplo 3: Especificar diretamente um valor de hash para enviar o log para um shard específico do destino de armazenamento.

      • Logs brutos

        __topic__:
        db_name: db-01
        db_version:5.6
        __topic__:
        db_name: db-02
        db_version:5.7
      • Regra de transformação

        e_output(name="target1", hash_key="00000000000000000000000000000000")
      • Resultado

        # Assume the storage destination has two shards.
        # The range of shard 0 is [00000000000000000000000000000000,80000000000000000000000000000000).
        # The range of shard 1 is [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff).
        # shard 0:
        __topic__:
        db_name: db-01
        db_version:5.6
        __topic__:
        db_name: db-02
        db_version:5.7
        # shard 1:
        None
  • Referências

    Pode ser usada com outras funções. Para obter mais informações, consulte Agregar dados de log de diferentes Logstores em um único Logstore.

e_to_metric

Converte um log para o formato de séries temporais (Metricstore).

  • Sintaxe

    e_to_metric(names=None, labels=None, time_field='__time__', time_precision='s', ignore_none_names=True, ignore_none_labels=True)
  • Parâmetros

    Nome do parâmetro

    Tipo

    Obrigatório

    Descrição

    names

    String, StringList, or Tuple List

    Sim

    O nome da métrica para os dados de séries temporais. Pode ser uma única string, uma lista de strings ou uma lista de tuplas. Seu valor é o nome do campo de log correspondente.

    • String: Converte um campo de log em um nome de métrica para dados de séries temporais. Contém uma única string, como rt. Um registro de dados de séries temporais contendo __name__:rt é retornado.

    • StringList: Converte campos de log em nomes de métricas para dados de séries temporais. Contém várias strings, como ["rt", "qps"]. Dois registros de dados de séries temporais são retornados, contendo __name__:rt e __name__:qps respectivamente.

    • Tuple List: Converte vários campos de log em nomes de métricas para dados de séries temporais e os renomeia. Contém várias tuplas, como [("rt","max_rt"),("qps", "total_qps")]. O primeiro elemento da tupla é o campo de log original, e o segundo é o campo de nome da métrica para os dados de séries temporais transformados. Dois registros de dados de séries temporais são retornados, contendo __name__:max_rt e __name__:total_qps respectivamente.

    labels

    String, StringList, or Tuple List

    Não

    O campo de rótulos para os dados de séries temporais. Pode ser uma única string, uma lista de strings ou uma lista de tuplas. Seu valor é o nome do campo de log correspondente.

    Nota

    Nas descrições a seguir, host e app são nomes de campos de log, e hostvalue e appvalue são valores de campos de log.

    • String: Converte um campo de log em rótulos para dados de séries temporais. Contém uma única string, como host. Um registro de dados de séries temporais contendo __label__:host#$#hostvalue é retornado.

    • StringList: Converte campos de log em rótulos para dados de séries temporais. Contém várias strings, como ["host", "app"]. Dois registros de dados de séries temporais são retornados, contendo __label__:host#$#hostvalue e __label__:app#$#appvalue respectivamente.

    • Tuple List: Converte vários campos de log em rótulos para dados de séries temporais e os renomeia. Contém várias tuplas, como [("host","hostname"),("app", "appname")]. O primeiro elemento da tupla é o campo de log original, e o segundo é o campo de rótulos para os dados de séries temporais transformados. Dois registros de dados de séries temporais são retornados, contendo __label__:hostname#$#hostvalue e __label__:appname#$#appvalue respectivamente.

    time_field

    String

    Não

    O campo de tempo para os dados de séries temporais. Por padrão, o campo __time__ do log é usado.

    time_precision

    Int

    Não

    A unidade de tempo do campo de timestamp nos logs brutos. Valores válidos: seconds, milliseconds, microseconds e nanoseconds. Padrão: seconds. Por exemplo, time_field="ms" especifica milissegundos como unidade de tempo.

    ignore_none_names

    Boolean

    Não

    Se deve ignorar a conversão quando o campo de log especificado não existir.

    • True (padrão): Ignora a conversão. Os dados não são convertidos para dados de séries temporais.

    • False: Reporta um erro se o campo não existir.

    ignore_none_labels

    Boolean

    Não

    Se deve ignorar a conversão do rótulo quando o campo de log especificado não existir.

    • True (padrão): Ignora a conversão. Os dados não são convertidos para dados de séries temporais.

    • False: Reporta um erro se o campo não existir.

  • Resposta

    Retorna dados de séries temporais.

  • Exemplos

    • Exemplo 1: Converter um log que contém o campo rt para o formato de dados de séries temporais.

      • Log bruto

        __time__: 1614739608
        rt: 123
      • Regra de transformação

        e_to_metric(names="rt")
      • Resultado

        __labels__:
        __name__:rt
        __time_nano__:1614739608000000000
        __value__:123.0
    • Exemplo 2: Converter um log que contém o campo rt para o formato de dados de séries temporais e usar o campo host como um novo rótulo.

      • Log bruto

        __time__: 1614739608
        rt: 123
        host: myhost
      • Regra de transformação

        e_to_metric(names="rt", labels="host")
      • Resultado

        __labels__:host#$#myhost
        __name__:rt
        __time_nano__:1614739608000000000
        __value__:123.0
    • Exemplo 3: Converter um log que contém os campos rt e qps para o formato de dados de séries temporais e usar o campo host como um novo rótulo.

      • Log bruto

        __time__: 1614739608
        rt: 123
        qps: 10
        host: myhost
      • Regra de transformação

        e_to_metric(names=["rt","qps"], labels="host")
      • Resultado

        __labels__:host#$#myhost
        __name__:rt
        __time_nano__:1614739608000000000
        __value__:123.0
        __labels__:host#$#myhost
        __name__:qps
        __time_nano__:1614739608000000000
        __value__:10.0
    • Exemplo 4: Converter um log que contém os campos rt e qps para o formato de dados de séries temporais, substituir os nomes dos campos por max_rt e total_qps e usar o campo host como um novo rótulo.

      • Log bruto

        __time__: 1614739608
        rt: 123
        qps: 10
        host: myhost
      • Regra de transformação

        e_to_metric(names=[("rt","max_rt"),("qps","total_qps")], labels="host")
      • Resultado

        __labels__:host#$#myhost
        __name__:max_rt
        __time_nano__:1614739608000000000
        __value__:123.0
        __labels__:host#$#myhost
        __name__:total_qps
        __time_nano__:1614739608000000000
        __value__:10.0
    • Exemplo 5: Converter um log que contém os campos rt e qps para o formato de dados de séries temporais, substituir os nomes dos campos por max_rt e total_qps e renomear o campo host para hostname para usar como um novo rótulo.

      • Log bruto

        __time__: 1614739608
        rt: 123
        qps: 10
        host: myhost
      • Regra de transformação

        e_to_metric(names=[("rt","max_rt"),("qps","total_qps")], labels=[("host","hostname")])
      • Resultado

        __labels__:hostname#$#myhost
        __name__:max_rt
        __time_nano__:1614739608000000000
        __value__:123.0
        __labels__:hostname#$#myhost
        __name__:total_qps
        __time_nano__:1614739608000000000
        __value__:10.0
    • Exemplo 6: Converter um log que contém os campos remote_user1 e request_length para o formato de dados de séries temporais, substituir os nomes dos campos por remote_user2 e request_length1 e usar o campo status1 como um novo rótulo.

      • Log bruto

        __time__:1652943594
        remote_user:89
        request_length:4264
        request_method:GET
        status:200
      • Regra de transformação

        # The remote_user1 and status1 fields do not exist, so they are ignored and not converted.
        e_to_metric(
            names=[("remote_user1", "remote_user2"), ("request_length", "request_length1")],
            labels="status1",
            ignore_none_names=True,
            ignore_none_labels=True,
        )
      • Resultado

        __labels__:
        __name__:request_length1
        __time_nano__:1652943594000000000
        __value__:4264.0
    • Exemplo 7: Converter um log que contém o campo remote_user para o formato de dados de séries temporais, usar o campo status como um novo rótulo e especificar a unidade de tempo dos dados de log de origem como milissegundos.

      • Log bruto

        __time__:1652943594
        remote_user:89
        request_length:4264
        request_method:GET
        status:200
      • Regra de transformação

        e_to_metric(
            names="remote_user",
            labels="status",
            time_precision="ms",
            ignore_none_names=True,
            ignore_none_labels=True,
        )
      • Resultado

        __labels__:status#$#200
        __name__:remote_user
        __time_nano__:1652943594000000
        __value__:89.0
    • Exemplo 8: Converter um log que contém o campo remote_user para o formato de dados de séries temporais, usar o campo status como um novo rótulo, usar o campo time como o campo de tempo para os dados de séries temporais e especificar a unidade de tempo dos dados de log de origem como nanossegundos.

      • Log bruto

        time:1652943594
        remote_user:89
        request_length:4264
        request_method:GET
        status:200
      • Regra de transformação

        e_to_metric(
            names="remote_user",
            labels="status",
            time_field="time",
            time_precision="ns",
            ignore_none_names=True,
            ignore_none_labels=True,
        )
      • Resultado

        __labels__:status#$#200
        __name__:remote_user
        __time_nano__:1652943594
        __value__:89.0
  • Referências

    Pode ser usada com outras funções. Para obter mais informações, consulte Converter campos de log em um Logstore em medidas de métricas em um Metricstore.