Todos os produtos
Search
Central de documentação

Simple Log Service:Funções de extração de valores

Última atualização: Jul 03, 2026

Este tópico descreve a sintaxe e os parâmetros das funções de extração de valores, além de apresentar exemplos de uso.

Funções

Categoria

Função

Descrição

Extração baseada em expressões regulares

e_regex

Extrai o valor de um campo com base em uma expressão regular e o atribui a outros campos.

Esta função pode ser combinada com outras. Para mais informações, consulte Analisar logs de erro Java.

Extração baseada em objetos JSON

e_json

Opera em objetos JSON dentro de um campo especificado. Configure os parâmetros para expandir dados JSON, extrair dados JSON usando a expressão JMESPath ou expandir os dados JSON extraídos.

Esta função pode ser combinada com outras. Para mais informações, consulte Transformar dados JSON complexos.

Extração por delimitadores

e_csv, e_psv e e_tsv

Extrai vários campos de um campo especificado usando um delimitador definido e nomes de campos predefinidos.

  • e_csv: usa vírgula (,) como delimitador padrão.

  • e_psv: usa barra vertical (|) como delimitador padrão.

  • e_tsv: usa tabulação (\t) como delimitador padrão.

Esta função pode ser combinada com outras. Para mais informações, consulte Analisar logs formatados em CSV.

Extração de pares chave-valor

e_kv

Extrai pares chave-valor de vários campos de entrada usando aspas especificadas.

Esta função pode ser combinada com outras. Para mais informações, consulte Extrair pares chave-valor dinâmicos de uma string.

e_kv_delimit

Extrai pares chave-valor dos campos de entrada usando um delimitador especificado.

Extração baseada no protocolo syslog

e_syslogrfc

Calcula os valores dos campos facility e severity e retorna o valor do campo facilitylabel, que indica informações de nível. O cálculo baseia-se no valor do campo priority e no protocolo syslog especificado.

Esta função pode ser combinada com outras. Para mais informações, consulte Analisar dados no formato Syslog padrão.

Extração baseada em regras específicas

e_anchor

Extrai strings seguindo as regras definidas em anchor_rules.

e_regex

A função e_regex extrai o valor de um campo com base em uma expressão regular e o atribui a outros campos.

  • e_regex(key,Regular expression,fields_info,mode="fill-auto",pack_json=None)
  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    key

    Arbitrário

    Sim

    Nome do campo de entrada. Se o campo especificado não existir, nenhuma operação será executada. Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos.

    Expressão regular

    String

    Sim

    Expressão regular usada para extrair o valor do campo. Há suporte para expressões regulares contendo grupos de captura e grupos sem captura.

    Nota

    Em alguns cenários, usam-se expressões regulares com grupos sem captura. Um grupo sem captura usa um prefixo composto por um ponto de interrogação e dois pontos (?:). Exemplo: \w+@\w+\.\w(?:\.\cn)?. Para mais informações sobre grupos sem captura, consulte Grupos sem captura.

    fields_info

    String/ List/ Dict

    Não

    Nomes dos campos aos quais o valor extraído será atribuído. Se você não definir grupos de captura nomeados na expressão regular, configure este parâmetro.

    mode

    String

    Não

    Modo de sobrescrita de campos. Valor padrão: fill-auto. Para conhecer outros valores deste parâmetro, consulte Verificação de extração de campo e modos de sobrescrita.

    pack_json

    String

    Não

    Campo onde os campos especificados por fields_info serão agrupados. Valor padrão: None, indicando que nenhum campo será agrupado.

  • Retorna um log contendo novos valores de campo.

    • Exemplo 1: Extrair de um campo um valor correspondente à expressão regular especificada.

      • Log bruto:

        msg: 192.168.0.1 http://... 127.0.0.0
      • Regra de transformação:

        # Extract the first IP address from the msg field.  
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
      • Resultado:

        msg: 192.168.0.1 http://... 127.0.0.0
        ip: 192.168.0.1
    • Exemplo 2: Extrair vários valores de um campo que correspondam à expressão regular definida.

      • Log bruto:

        msg: 192.168.0.1 http://... 127.0.0.0
      • Regra de transformação:

        # Extract two IP addresses from the msg field and assign one IP address to server_ip and the other IP address to client_ip. 
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",["server_ip","client_ip"])
      • Resultado:

        msg: 192.168.0.1 http://... 127.0.0.0
        server_ip: 192.168.0.1
        client_ip: 127.0.0.0
    • Exemplo 3: Usar um grupo de captura para extrair vários valores correspondentes à expressão regular de um campo.

      • Log bruto:

        content: start sys version: deficience, err: 2
      • Regra de transformação:

        # Extract the values for version and error from the content field by including a capturing group in the regular expression. 
        e_regex("content",r"start sys version: (\w+),\s*err: (\d+)",["version","error"])
      • Resultado:

        content: start sys version: deficience, err: 2
        error: 2
        version: deficience
    • Exemplo 4: Usar um grupo de captura nomeado para extrair vários valores de um campo.

      • Log bruto:

        content:  start sys version: deficience, err: 2
      • Regra de transformação:

        e_regex("content",r"start sys version: (?P<version>\w+),\s*err: (?P<error>\d+)")
      • Resultado:

        content:  start sys version: deficience, err: 2
        error:  2
        version:  deficience
    • Exemplo 5: Usar um grupo de captura na expressão regular especificada para extrair o valor do campo dict, gerar dinamicamente um nome de campo para esse valor e reformatá-lo.

      • Log bruto:

        dict: verify:123
      • Regra de transformação:

        e_regex("dict",r"(\w+):(\d+)",{r"k_\1": r"v_\2"})
      • Resultado:

        dict: verify:123
        k_verify: v_123
    • Exemplo 6: Extrair um valor correspondente à expressão regular de um campo e agrupar o resultado no campo name.

      • Log bruto:

        msg: 192.168.0.1 http://... 127.0.0.0
      • Regra de transformação:

        e_regex("msg", r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", "ip", pack_json="name")
      • Resultado:

        msg:192.168.0.1 http://... 127.0.0.0
        name:{"ip": "192.168.0.1"}
    • Exemplo 7: Usar a expressão regular especificada para extrair o valor do campo dict, gerar dinamicamente um nome de campo e reformatar o valor, agrupando depois o resultado no campo name.

      • Log bruto:

        dict: x:123, y:456, z:789
      • Regra de transformação:

        e_regex("dict", r"(\w+):(\d+)", {r"k_\1": r"v_\2"}, pack_json="name")
      • Resultado:

        dict:x:123, y:456, z:789
        name:{"k_x": "v_123", "k_y": "v_456", "k_z": "v_789"}
    • Exemplo 8: Usar um grupo de captura para extrair vários valores correspondentes à expressão regular e agrupar o resultado no campo name.

      • Log bruto:

        content: start sys version: deficience, err: 2
      • Regra de transformação:

        e_regex( "content", r"start sys version: (\w+),\s*err: (\d+)", ["version", "error"],pack_json="name")
      • Resultado:

        content:start sys version: deficience, err: 2
        name:{"version": "deficience", "error": "2"}
  • Referências

    Esta função pode ser combinada com outras. Para mais informações, consulte Analisar logs de erro Java.

e_json

A função e_json opera em objetos JSON dentro de um campo especificado. Configure os parâmetros para expandir dados JSON, extrair dados via expressão JMESPath ou expandir os dados JSON já extraídos.

  • e_json(key, expand=None, depth=100, prefix="__", suffix="__", fmt="simple", sep=".", 
         expand_array=True, fmt_array="{parent}_{index}", 
         include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*",  
         exclude_node="", include_path="", exclude_path="",
         jmes="", output="", jmes_ignore_none=False, mode='fill-auto'
    )
    Nota

    Se você usar a função e_json para analisar uma string que não segue a sintaxe JSON, a função não realizará a análise e retornará a string original.

  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    key

    String

    Sim

    Nome do campo de entrada. Se o campo especificado não existir, nenhuma operação será realizada. Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos.

    expand

    Boolean

    Não

    Define se o campo de entrada deve ser expandido.

    • Se o parâmetro jmes não for configurado, o valor True será usado por padrão para o parâmetro expand. O valor True indica que o campo de entrada será expandido.

    • Se você configurar o parâmetro jmes, o valor False será aplicado por padrão ao parâmetro expand. O valor False indica que o campo de entrada não será expandido.

    depth

    Number

    Não

    Profundidade até a qual a função expande o campo de entrada. Valores válidos: 1 a 2000. Valor padrão: 100. O valor 1 significa que apenas o primeiro nível do campo será expandido.

    prefix

    String

    Não

    Prefixo a ser adicionado a um campo expandido.

    suffix

    String

    Não

    Sufixo a ser adicionado a um campo expandido.

    fmt

    String

    Não

    Método de formatação de um campo expandido. Valores válidos:

    • simple: Usa o nome do nó atual como nome do campo. Este é o valor padrão. O formato é {prefix}{current}{suffix}.

    • full: Combina o nome do nó atual com os nomes de todos os nós pai para formar o nome do campo. O formato é {parent_list_str}{sep}{prefix}{current}{suffix}. O delimitador é definido pelo parâmetro sep. O delimitador padrão é o ponto (.).

    • parent: Combina o nome do nó atual com o nome do nó pai mais próximo para formar o nome do campo. O formato é {parent}{sep}{prefix}{current}{suffix}. O delimitador é definido pelo parâmetro sep. O delimitador padrão é o ponto (.).

    • root: Combina o nome do nó atual com o nome do nó raiz para formar o nome do campo. O formato é {parent_list[0]}{sep}{prefix}{current}{suffix}. O delimitador é definido pelo parâmetro sep. O delimitador padrão é o ponto (.).

    sep

    String

    Não

    Delimitador usado para separar nós pai e filho durante a formatação de dados pela função. Ao definir o parâmetro fmt como full, parent ou root, configure obrigatoriamente este parâmetro. Valor padrão: ..

    expand_array

    Boolean

    Não

    Define se o campo de entrada deve ser expandido em um array. Valor padrão: True, indicando que o campo de entrada será expandido em um array.

    fmt_array

    String

    Não

    Método de formatação usado para expandir o campo de entrada em um array. O formato é {parent_rlist[0]}_{index}. Também é possível usar até cinco dos seguintes placeholders para expandir o campo de entrada: parent_list, current, sep, prefix e suffix.

    include_node

    String/ Number

    Não

    Lista de permissões de nomes de nós usada para filtragem. Por padrão, nomes de nós contendo dígitos, letras, underscores (_), períodos (.) e hífens (-) são expandidos automaticamente.

    exclude_node

    String

    Não

    Lista de bloqueios de nomes de nós usada para filtragem.

    include_path

    String

    Não

    Lista de permissões de caminhos de nós usada para filtragem.

    exclude_path

    String

    Não

    Lista de bloqueios de caminhos de nós usada para filtragem.

    jmes

    String

    Não

    Expressão JMESPath usada para converter valores de campo em objetos JSON e extrair um valor específico.

    output

    String

    Não

    Nome do campo retornado para o valor extraído através da expressão JMESPath.

    jmes_ignore_none

    Boolean

    Não

    Define se um campo deve ser ignorado caso seu valor não possa ser extraído pela expressão JMESPath. Valor padrão: True, indicando que o campo é ignorado quando a extração falha. Se você definir False para o parâmetro jmes_ignore_none, uma string vazia será retornada nessa situação.

    mode

    String

    Não

    Modo de sobrescrita de campos. Valor padrão: fill-auto. Para conhecer outros valores deste parâmetro, consulte Verificação de extração de campo e modos de sobrescrita.

    • Expansão e filtragem de campos JSON

      • Quando uma lista de permissões de nomes de nós é especificada, apenas os nomes incluídos nela são retornados. Por exemplo, e_json("json_data_filed", ...., include_node=r'key\d+') define uma lista de permissões de nomes de nós via expressão regular.

      • Ao especificar uma lista de bloqueios de nomes de nós, apenas os nomes incluídos nela deixam de ser retornados. Por exemplo, e_json("json_data_filed", ...., exclude_node=r'key\d+') define uma lista de bloqueios de nomes de nós via expressão regular.

      • As expressões regulares include_path e exclue_path servem para corresponder caminhos de nós desde o início. Pontos (.) separam os caminhos que correspondem às expressões regulares.

    • Filtragem baseada em JMESPath

      Expressões JMESPath permitem selecionar e computar dados.

      • Selecionar uma lista de atributos de elementos de um caminho JSON específico: e_json(..., jmes="cve.vendors[*].product",output="product").

      • Concatenar atributos de elementos de um caminho JSON específico usando vírgulas (,): e_json(..., jmes="join(',', cve.vendors[*].name)",output="vendors").

      • Calcular o valor máximo de cada atributo para cada elemento em um caminho JSON específico: e_json(..., jmes="max(words[*].score)",output="hot_word").

      • Retornar uma string vazia se um caminho JSON especificado não existir ou estiver vazio: e_json(..., jmes="max(words[*].score)",output="hot_word", jmes_ignore_none=False).

    • parent_list e parent_rlist

      Os exemplos abaixo mostram como utilizar parent_list e parent_rlist:

      Log bruto:

      data: { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
      • parent_list ordena os nós pai da esquerda para a direita.

        e_json("data", fmt='{parent_list[0]}-{parent_list[1]}#{current}')

        Resultado:

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        data-k2#k3:200
        data-k2#k5:300
      • parent_rlist ordena os nós pai da direita para a esquerda.

        e_json("data", fmt='{parent_rlist[0]}-{parent_rlist[1]}#{current}')

        Resultado:

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        k2-data#k3:200
        k4-k2#k5:300
  • Retorna um log contendo novos valores de campo.

    • Exemplo 1: Expandir um campo.

      • Log bruto:

        data: {"k1": 100, "k2": 200}
      • Regra de transformação:

        e_json("data",depth=1)
      • Resultado:

        data: {"k1": 100, "k2": 200}
        k1: 100
        k2: 200
    • Exemplo 2: Adicionar prefixo e sufixo a um campo expandido.

      • Log bruto:

        data: {"k1": 100, "k2": 200}
      • Regra de transformação:

        e_json("data", prefix="data_", suffix="_end")
      • Resultado:

        data: {"k1": 100, "k2": 200}
        data_k1_end: 100
        data_k2_end: 200
    • Exemplo 3: Expandir um campo em diferentes formatos.

      • Log bruto:

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • Expandir um campo no formato full.

        e_json("data", fmt='full')
         data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
         data.k1: 100
         data.k2.k3: 200
         data.k2.k4.k5: 300
      • Expandir um campo no formato parent.

        e_json("data", fmt='parent')
         data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
         data.k1: 100
         k2.k3: 200
         k4.k5: 3000
      • Expandir um campo no formato root.

        e_json("data", fmt='root')
         data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
         data.k1: 100
         data.k3: 200
         data.k5: 300
    • Exemplo 4: Configurar os parâmetros sep, prefix e suffix para extrair dados JSON.

      • Log bruto:

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • Regra de transformação:

        e_json("data", fmt='parent', sep="@", prefix="__", suffix="__")
      • Resultado:

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data@__k1__: 100
        k2@__k3__: 200
        k4@__k5__: 300
    • Exemplo 5: Configurar o parâmetro fmt_array para extrair dados JSON como um array.

      • Log bruto:

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
      • Regra de transformação:

        e_json("people", fmt='parent', fmt_array="{parent_rlist[0]}-{index}")
      • Resultado:

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
        people-0.name: xm
        people-0.sex: boy
        people-1.name: xz
        people-1.sex: boy
        people-2.name: xt
        people-2.sex: girl
    • Exemplo 6: Extrair um objeto JSON usando a expressão JMESPath.

      • Log bruto:

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
      • Regra de transformação:

        e_json("data", jmes='foo', output='jmes_output0')
        e_json("data", jmes='foo.bar', output='jmes_output1')
        e_json("data", jmes='people[0].last', output='jmes_output2')
        e_json("data", jmes='people[*].first', output='jmes_output3')
      • Resultado:

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
        jmes_output0: {"bar": "baz"}
        jmes_output1: baz
        jmes_output2: d
        jmes_output3: ["james", "jacob"]
  • Referências

    Esta função pode ser combinada com outras. Para mais informações, consulte Transformar dados JSON complexos.

e_csv, e_psv e e_tsv

As funções e_csv, e_psv e e_tsv extraem vários campos de um campo de entrada especificado, usando um delimitador definido e nomes de campos predefinidos.

  • e_csv: usa vírgula (,) como delimitador padrão.

  • e_psv: usa barra vertical (|) como delimitador padrão.

  • e_tsv: usa tabulação (\t) como delimitador padrão.

  • e_csv(Input field name, Output field list, sep=",", quote='"', restrict=True, mode="fill-auto")
    e_psv(Input field name, Output field list, sep="|", quote='"', restrict=True, mode="fill-auto")
    e_tsv(Input field name, Output field list, sep="\t", quote='"', restrict=True, mode="fill-auto")
  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    Nome do campo de entrada

    Arbitrário

    Sim

    Nome do campo de entrada. Se o campo especificado não existir, nenhuma operação será executada. Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos.

    Lista de campos de saída

    Arbitrário

    Sim

    Nomes dos campos retornados após a separação do valor do campo de entrada pelo delimitador especificado.

    Os nomes dos campos podem estar em uma lista de strings. Exemplo: ["error", "message", "result"].

    Caso os nomes dos campos não contenham vírgulas (,), use vírgulas como delimitadores para separar a string. Exemplo: "error, message, result".

    Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos.

    sep

    String

    Não

    Delimitador usado para separar o valor do campo de entrada. Especifique um único caractere como delimitador.

    quote

    String

    Não

    Aspas usadas para envolver um valor. Se um valor contiver um delimitador, configure este parâmetro.

    restrict

    Boolean

    Não

    Define se o modo restrito deve ser ativado. Valor padrão: False, indicando que o modo restrito está desativado. Se a quantidade de valores separados pelo delimitador no campo de entrada diferir da quantidade de nomes de campos de saída, a operação executada pela função variará conforme o modo.

    • Com o modo restrito ativado, a função não executa operações.

    • Com o modo restrito desativado, a função corresponde os campos especificados aos valores e atribui valores específicos aos campos.

    mode

    String

    Não

    Modo de sobrescrita de campos. Valor padrão: fill-auto. Para conhecer outros valores deste parâmetro, consulte Verificação de extração de campo e modos de sobrescrita.

  • Retorna um log contendo novos valores de campo.

  • Neste exemplo, usa-se a função e_csv. As funções e_psv e e_tsv funcionam de maneira semelhante à função e_csv.

    • Log bruto:

      content: 192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-
    • Regra de transformação:

      e_csv("content", "remote_addr, time_local,host,request,status,request_time,body_bytes_sent,upstream_addr,upstream_status, upstream_response_time,http_referer,http_x_forwarded_for,http_user_agent,session_id,guid")
    • Resultado:

      content:  192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36,-,-
        body_bytes_sent:  6404
      guid:  -
      host:  example.aliyundoc.com
      http_referer:  https://image.developer.aliyundoc.com/s?q=%E8%9B%8B%E8%8A%B1%E9%BE%99%E9%A1%BB%E9%9D%A2%E7%9A%84%E5%81%9A%E6%B3%95&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei
      http_user_agent:  Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36
      http_x_forwarded_for:  -
      remote_addr:  192.168.0.100
      request:  GET /zf/11874.html HTTP/1.1
      request_time:  0.077
      session_id:  -
      status:  200
      time_local:  10/Jun/2019:11:32:16 +0800
      topic:  syslog-forwarder
      upstream_addr:  192.168.0.100:8001
      upstream_response_time:  0.060
      upstream_status:  200
  • Referências

    Esta função pode ser combinada com outras. Para mais informações, consulte Analisar logs formatados em CSV.

e_kv

A função e_kv extrai pares chave-valor de vários campos de entrada usando aspas especificadas.

  • e_kv(Input field name or input field list, sep="=", quote='"', escape=False, prefix="", suffix="", mode="fill-auto")
  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    Nome do campo de entrada ou lista de campos de entrada

    String ou lista de strings

    Sim

    Nome do campo de entrada ou nomes de vários campos de entrada. Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos.

    sep

    String

    Não

    Delimitador usado para separar uma chave e seu valor em uma expressão regular. Valor padrão: =. É possível especificar um ou mais caracteres como delimitador.

    Nota

    Grupos sem captura são permitidos em expressões regulares, mas grupos de captura não. Para mais informações sobre agrupamento, consulte Agrupamento.

    quote

    String

    Não

    Aspas usadas para envolver um valor. Valor padrão: ".

    Nota

    Recomenda-se configurar o parâmetro quote para envolver valores extraídos de pares chave-valor dinâmicos. Exemplos: a="abc" e b="xyz". Sem a configuração do parâmetro quote, os valores extraídos poderão conter apenas os seguintes caracteres: letras, dígitos, underscores (_), hífens (-), pontos (.), sinais de porcentagem (%) e tis (~). Por exemplo, é possível extrair a: ab12_-.%~ e b: 123 de a=ab12_-.%~|abc b=123.

    escape

    Boolean

    Não

    Define se caracteres de escape devem ser extraídos do valor do campo de entrada. Valor padrão: False, indicando que caracteres de escape não são extraídos. Por exemplo, o valor abc\ do campo key é extraído da expressão key="abc\"xyz" por padrão. Se o parâmetro escape for definido como True, o valor extraído será abc"xyz.

    prefix

    String

    Não

    Prefixo adicionado a um campo extraído.

    suffix

    String

    Não

    Sufixo adicionado a um campo extraído.

    mode

    String

    Não

    Modo de sobrescrita de campos. Valor padrão: fill-auto. Para conhecer outros valores deste parâmetro, consulte Verificação de extração de campo e modos de sobrescrita.

  • Retorna um log contendo novos valores de campo.

    • Exemplo 1: Extrair pares chave-valor usando o delimitador padrão =.

      • Log bruto:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        Nota

        Se o log bruto for request_uri: a1=1&a2=&a3=3 e o valor de a2 estiver vazio, a função e_kv() não conseguirá extrair o valor de a2. Use a função e_regex() para extrair o valor de a2. Exemplo: e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"},mode="overwrite").

      • Regra de transformação:

        e_kv("http_refer")
      • Resultado:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        q: asd
        a: 1
        b: 2
    • Exemplo 2: Adicionar prefixo e sufixo aos campos extraídos.

      • Log bruto:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
      • Regra de transformação:

        e_kv(
            "http_refer",
            sep="=",
            quote='"',
            escape=False,
            prefix="data_",
            suffix="_end",
            mode="fill-auto",
        )
      • Resultado:

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        data_q_end: asd
        data_a_end: 1
        data_b_end: 2
    • Exemplo 3: Extrair pares chave-valor do campo content2 e extrair caracteres de escape usando o parâmetro escape.

      • Log bruto:

        content2: k1:"v1\"abc", k2:"v2", k3: "v3"
      • Regra de transformação:

        e_kv("content2", sep=":", escape=True)
      • Resultado:

        content2:  k1:"v1\"abc", k2:"v2", k3: "v3"
        k1: v1"abc
        k2: v2
        k3: v3
  • Referências

    Esta função pode ser combinada com outras. Para mais informações, consulte Extrair pares chave-valor dinâmicos de uma string.

e_kv_delimit

A função e_kv_delimit extrai pares chave-valor dos campos de entrada usando um delimitador especificado.

  • e_kv_delimit(Input field name or input field list, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    Nome do campo de entrada ou lista de campos de entrada

    String ou lista de strings

    Sim

    Nome do campo de entrada ou nomes de vários campos de entrada. Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos.

    pair_sep

    String

    Não

    Expressão regular usada para separar pares chave-valor. Valor padrão: \s. Também é possível especificar \s\w ou abc\s.

    Nota

    Para usar uma string na separação de pares chave-valor, recomenda-se utilizar str_replace ou regex_replace para converter a string em caracteres. Em seguida, utilize a função e_kv_delimit especificando esses caracteres como valor do parâmetro pair_sep para separar os pares chave-valor.

    kv_sep

    String

    Não

    Expressão regular usada para separar pares chave-valor. Valor padrão: =. A expressão regular pode conter um ou mais caracteres.

    Nota

    Grupos sem captura são permitidos em expressões regulares, mas grupos de captura não. Para mais informações sobre agrupamento, consulte Agrupamento.

    prefix

    String

    Não

    Prefixo adicionado a um campo extraído.

    suffix

    String

    Não

    Sufixo adicionado a um campo extraído.

    mode

    String

    Não

    Modo de sobrescrita de campos. Valor padrão: fill-auto. Para conhecer outros valores deste parâmetro, consulte Verificação de extração de campo e modos de sobrescrita.

  • Retorna um log contendo novos valores de campo.

    • Exemplo 1: Extrair pares chave-valor usando o delimitador padrão =.

      • Log bruto:

        data: i=c1 k1=v1 k2=v2 k3=v3
        Nota

        Se o log bruto for request_uri: a1=1&a2=&a3=3 e o valor de a2 estiver vazio, a função e_kv_delimit() não conseguirá extrair o valor de a2. Use a função e_regex() para extrair o valor de a2. Exemplo: e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite").

      • Regra de transformação:

        e_kv_delimit("data")
      • Resultado:

        data: i=c1 k1=v1 k2=v2 k3=v3
        i: c1
        k2: v2
        k1: v1
        k3: v3
    • Exemplo 2: Extrair pares chave-valor usando os delimitadores &?.

      • Log bruto:

        data: k1=v1&k2=v2?k3=v3
      • Regra de transformação:

        e_kv_delimit("data",pair_sep=r"&?")
      • Resultado:

        data: k1=v1&k2=v2?k3=v3
        k2: v2
        k1: v1
        k3: v3
    • Exemplo 3: Extrair pares chave-valor usando uma expressão regular.

      • Log bruto:

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

        e_kv_delimit("data", kv_sep=r"(?:=|:)")
      • Resultado:

        data: k1=v1 k2:v2 k3=v3
        k2: v2
        k1: v1
        k3: v3

e_syslogrfc

A função e_syslogrfc calcula os valores dos campos facility e severity e retorna o valor do campo facilitylabel, que indica informações de nível. O cálculo baseia-se no valor do campo priority e no protocolo syslog especificado.

  • e_syslogrfc(key, rfc, fields_info=None, mode='overwrite')
  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    key

    Arbitrário

    Sim

    Nome do campo de entrada. Insira um campo que indique priority.

    rfc

    String

    Sim

    Protocolo syslog utilizado. Os protocolos syslog são definidos em RFC. Valores válidos: SYSLOGRFC3164 e SYSLOGRFC5424.

    fields_info

    Dict

    Não

    key indica o nome do campo de entrada e value indica o nome do novo campo. Os seguintes campos podem ser renomeados. Os novos nomes podem ser modificados. {"_severity_":"sev","_facility_":"fac","_severitylabel_":"sevlabel","_facilitylabel_":"faclabel"}

    mode

    String

    Não

    Modo de sobrescrita de campos. Valor padrão: overwrite. Para conhecer outros valores deste parâmetro, consulte Verificação de extração de campo e modos de sobrescrita.

  • Retorna um log contendo novos campos e valores.

    • Exemplo 1: Extrair os valores dos campos facility e severity e retornar informações de nível com base no protocolo syslog definido na RFC 5424.

      • Log bruto:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
      • Regra de transformação:

        e_syslogrfc("_priority_","SYSLOGRFC5424")
      • Resultado:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
        _facility_: 1
        _severity_: 5
        _severitylabel_: Notice: normal but significant condition
        _facilitylabel_: user-level messages
    • Exemplo 2: Extrair os valores dos campos facility e severity e retornar informações de nível com base no protocolo syslog definido na RFC 5424. Em seguida, renomeie os campos configurando o parâmetro fields_info.

      • Log bruto:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
      • Regra de transformação:

        e_syslogrfc(
            "_priority_",
            "SYSLOGRFC5424",
            {
                "_facility_": "fac",
                "_severity_": "sev",
                "_facilitylabel_": "_facility_label_",
                "_severitylabel_": "_severity_label_",
            },
        )
      • Resultado:

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
        _facility_: 1
        _severity_: 5
        _severity_label_: Notice: normal but significant condition
        _facility_label_: user-level messages
  • Referências

    Esta função pode ser combinada com outras. Para mais informações, consulte Analisar dados no formato Syslog padrão.

e_anchor

A função e_anchor extrai strings seguindo as regras definidas em anchor_rules.

  • e_anchor(key,anchor_rules,fields,restrict=False,mode="overwrite")
  • Parâmetro

    Tipo

    Obrigatório

    Descrição

    key

    Arbitrário

    Sim

    Nome do campo.

    anchor_rules

    String

    Sim

    Regras usadas para extrair strings. Exemplos: User = ; Severity = ;,. Asteriscos (*) indicam o conteúdo a ser extraído.

    Por padrão, um espaço é inserido antes de Value nos logs exibidos no formato Key : Value no console do Log Service. Ao configurar o parâmetro anchor_rules, remova o espaço padrão. e_anchor

    Nota

    Ao especificar o campo de entrada, não utilize asteriscos (*) como prefixos ou sufixos.

    fields

    Arbitrário

    Sim

    Nomes dos campos de saída cujos valores são extraídos do valor do campo de entrada. Os nomes dos campos podem estar em uma lista de strings. Exemplo: ["user", "job", "result"]. Caso os nomes dos campos não contenham vírgulas (,), use vírgulas para separar a string. Exemplo: "user, job, result". Para mais detalhes sobre como especificar nomes de campos especiais, consulte Tipos de eventos. Nomes de campos especiais podem conter caracteres especiais, exceto asteriscos (*).

    Use um asterisco () para pular um campo. Por exemplo, apenas user e result são extraídos de "user,,result". Para mais informações, consulte o Exemplo 10.

    restrict

    Boolean

    Não

    Define se o modo restrito deve ser ativado. Valor padrão: False, indicando que o modo restrito está desativado. Se a quantidade de valores extraídos do campo de entrada diferir da quantidade de nomes de campos de saída, a operação executada pela função variará conforme o modo.

    • Com o modo restrito ativado, a função não executa operações.

    • Com o modo restrito desativado, a função corresponde os campos especificados aos valores e atribui valores específicos aos campos.

    mode

    String

    Não

    Valor padrão: overwrite. Para mais informações, consulte Verificação de extração de campo e modos de sobrescrita.

  • Retorna os dados extraídos.

    • Exemplo 1: Extrair valores de campos especificados de um log.

      • Log bruto:

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
      • Regra de transformação:

        e_anchor("content","User=*: severity=*:",["user_field","severity_field"])
      • Resultado:

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
        user_field : jsmith@example.com
        severity_field : warning
    • Exemplo 2: Extrair vários valores no formato de array JSON.

      • Log bruto:

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
      • Regra de transformação:

        e_anchor("content",'name_list":*,"university":*},', ["name_list","universities"])
      • Resultado:

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
        name_list : ["Twiss","Evan","Wind","like"]
        universities : ["UCL","Stanford University","CMU"]
    • Exemplo 3: Extrair um log contendo caracteres especiais.

      • Log bruto:

        content : (+2019) June 24 "I am iron man"
      • Regra de transformação:

        e_anchor("content", "(+*) * \"*\"",["Year","Date","Msg"])
      • Resultado:

        content : (+2019) June 24 "I am iron man"
        Year : 2019
        Date : June 24
        Msg : I am iron man
    • Exemplo 4: Extrair um log contendo o caractere de controle \x09.

      • Log bruto:

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
      • Regra de transformação:

        e_anchor("content", "\x09\x09\x09*/55.0 */537.36",["Google", "Apple"])
      • Resultado:

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
        Google : Chrome
        Apple : Safari
    • Exemplo 5: Extrair o campo content que contém caracteres especiais. To...Subject, que vem após MESSAGE:, representa o conteúdo real do campo content.

      • Log bruto:

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
      • Regra de transformação:

        e_anchor("content","* INFO *: \n    To: *\n    Subject: *",["time","message","email","subject"])
      • Resultado:

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
        
        time : 12:08:10,651
        message : sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE
        email : example@aliyun.com
        subject : New line Breaks in Message
    • Exemplo 6: Extrair o campo content que contém caracteres especiais e retornar o valor sem exibir o caractere de controle \t.

      • Log bruto:

        content :   I'm tabbed in
      • Regra de transformação:

        e_anchor("content","\tI'm * in","word")
        # You can also use the following transformation rule to copy the value of the content field. Remove the default space from the value.
        e_anchor("content","    I'm * in","word")
      • Resultado:

        content :   I'm tabbed in
        word : tabbed
    • Exemplo 7: Extrair o campo content que contém caracteres especiais e retornar o valor exibindo o caractere de controle \t.

      • Log bruto:

        content : \tI'm tabbed in
      • Regra de transformação:

        e_anchor("content","\tI'm * in","word")
        # You can also use the following transformation rule:
        e_anchor("content","    I'm * in","word")
      • Resultado:

        content : \tI'm tabbed in
        word : tabbed
    • Exemplo 8: Extrair logs no modo restrito.

      • Log bruto:

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Regra de transformação:

        e_anchor("content","I * to * having",["v_word", "n_word","asd"],restrict=True)
      • Resultado:

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
    • Exemplo 9: Extrair logs no modo não restrito.

      • Log bruto:

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Regra de transformação:

        e_anchor("content","love * fight with my * and",["test1","test2","test13"],restrict=False)
      • Resultado:

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
        test1 : having snowball
        test2 : friends
    • Exemplo 10: Extrair o valor de um campo e atribuir o valor extraído a outro campo.

      • Log bruto:

        content: Could you compare the severity of natural disasters to man-made disasters
      • Regra de transformação:

        e_anchor('content', 'compare the * of natural disasters to man-made *', 'n-word,*')
      • Resultado:

        content : Could you compare the severity of natural disasters to man-made disasters
        n-word : severity