Todos os produtos
Search
Central de documentação

Simple Log Service:Instruções para transformação de dados (nova versão)

Última atualização: Jul 03, 2026

Conheça o uso e os exemplos das instruções de transformação de dados (nova versão).

pack-fields

Agrupa vários campos em um novo campo como uma string serializada em JSON, adequada para cenários de transmissão estruturada, como a criação de corpos de solicitação de API.

Importante
  • Por padrão, campos que não são do tipo Varchar não são processados. Isso inclui os campos __time__ e __time_ns_part__.

  • Por padrão, os dados de origem não são mantidos.

Sintaxe

| pack-fields -keep -ltrim -include=<include> -exclude=<exclude> as <output>

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

output

String

Sim

O nome do campo de saída após o agrupamento. O valor do campo está no formato JSON.

include

RegExp

Não

A configuração de lista de permissões. Os campos que correspondem à expressão regular são agrupados. O valor padrão é ".*", que corresponde a todos os campos. Para obter mais informações, consulte Expressões regulares.

exclude

RegExp

Não

A configuração de lista de bloqueios, que tem precedência sobre a lista de permissões. Os campos que correspondem à expressão regular não são agrupados. O valor padrão é vazio, o que significa que nenhuma correspondência é realizada. Para obter mais informações, consulte Expressões regulares.

ltrim

String

Não

Remove o prefixo do nome do campo de saída.

keep

Bool

Não

Especifica se os dados de origem devem ser mantidos após o agrupamento.

True: mantém os dados de origem agrupados na saída.

False (padrão): não mantém os dados de origem agrupados na saída.

Exemplos

  • Exemplo 1: agrupe todos os campos de log no campo test. Por padrão, os campos originais agrupados são excluídos.

    • Instrução SPL

      * | pack-fields -include='\w+' as test
    • Dados de entrada

      test1:123
      test2:456
      test3:789
    • Saída

      test:{"test1": "123", "test2": "456", "test3": "789"}
  • Exemplo 2: agrupe todos os campos de log no campo test sem excluir os campos originais agrupados.

    • Instrução SPL

      * | pack-fields -keep -include='\w+' as test
    • Dados de entrada

      test1:123
      test2:456
      test3:789
    • Saída

      test:{"test1": "123", "test2": "456", "test3": "789"}
      test1:123
      test2:456
      test3:789
  • Exemplo 3: agrupe os campos test e abcd no campo content e mantenha os campos originais.

    • Instrução SPL

      * | pack-fields -keep -include='\w+' as content
    • Dados de entrada

      abcd@#%:123
      test:456
      abcd:789
    • Saída

      abcd:789
      abcd@#%:123
      content:{"test": "456", "abcd": "789"}
      test:456
  • Exemplo 4: agrupe todos os campos, exceto os campos test e abcd, no campo content e exclua os campos originais agrupados.

    • Instrução SPL

      * | pack-fields -exclude='\w+' as content
    • Dados de entrada

      abcd@#%:123
      test:456
      abcd:789
    • Saída

      abcd:789
      content:{"abcd@#%": "123"}
      test:456
  • Exemplo 5: extraia todos os pares chave-valor que correspondem à expressão regular especificada de um valor de campo e agrupe-os no campo name.

    • Instrução SPL

      * | parse-kv -prefix='k_' -regexp dict, '(\w+):(\w+)' | pack-fields -include='k_.*' -ltrim = 'k_' as name
    • Dados de entrada

      dict: x:123, y:456, z:789
    • Saída

      dict:x:123, y:456, z:789
      name:{"x": "123", "y": "456", "z": "789"}

log-to-metric

Transforma logs no formato necessário para armazenar dados de séries temporais.

Importante
  • Por padrão, dados de log que não atendem aos requisitos de Métrica são ignorados.

  • A unidade de tempo do campo de timestamp nos dados de log brutos é detectada automaticamente. As unidades compatíveis incluem segundos, milissegundos, microssegundos e nanossegundos.

  • A gravação baseada em hash é usada por padrão.

Sintaxe

| log-to-metric -wildcard -format -names=<names> -labels=<labels> -time_field=<time_field> -buckets=<buckets>

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

wildcard

Bool

Não

Especifica se a correspondência por curinga deve ser ativada para os nomes de campo especificados por names e labels.

Por padrão, a correspondência exata de campos é usada. Para ativar a correspondência por curinga, adicione este parâmetro.

format

Bool

Não

Especifica se a formatação automática deve ser ativada.

Por padrão, essa opção está desativada e dados de rótulo inválidos são ignorados durante a transformação.

Se ativada, os dados de rótulo inválidos são formatados. Os valores de rótulo não podem conter caracteres como "|", "#" ou "$". Se contiverem, esses caracteres são substituídos por sublinhados (_).

names

FieldList

Sim

Uma lista de campos de log usada para gerar pontos de dados de métrica correspondentes.

Se um campo nos dados de entrada corresponder a pelo menos um dos nomes de campo ou padrões de curinga especificados, um ponto de dados de métrica será gerado para esse campo. O nome da métrica é o nome do campo e o valor da métrica é o valor do campo.

Por exemplo, ["mem","mem:pct"] gera dois pontos de dados chamados mem e mem:pct.

Importante
  • O nome do campo de entrada deve corresponder à expressão regular [a-zA-Z_:][a-zA-Z0-9_:]*. Caso contrário, nenhum ponto de dados será gerado para o campo.

  • O valor do campo de entrada deve atender a um dos seguintes requisitos. Caso contrário, nenhum ponto de dados será gerado para o campo:

    • O campo é de tipo numérico: TINYINT, SMALLINT, INTEGER, BIGINT, HUGEINT, REAL ou DOUBLE.

    • O campo é de tipo texto VARCHAR e seu valor pode ser convertido em um tipo DOUBLE válido.

Para obter o formato de dados de séries temporais, consulte Dados de séries temporais (métrica).

labels

FieldList

Não

Uma lista de campos de log usada para construir as informações de rótulo de série temporal correspondentes.

Se um campo nos dados de entrada corresponder a pelo menos um dos nomes de campo ou padrões de curinga especificados, o campo será adicionado aos rótulos do ponto de dados. O nome do rótulo é o nome do campo e o valor do rótulo é o valor do campo.

Por exemplo, ["host","ip"] adiciona dois rótulos de série temporal, host e ip, com seus valores de campo originais.

Importante
  • O nome do campo de entrada deve corresponder à expressão regular [a-zA-Z_][a-zA-Z0-9_]*. Caso contrário, o rótulo do ponto de dados gerado não incluirá este campo.

  • O valor do campo de entrada não pode conter uma BARRA VERTICAL (|). Caso contrário, o rótulo do ponto de dados gerado não incluirá este campo.

  • O campo de entrada deve ser do tipo texto VARCHAR. Caso contrário, o rótulo correspondente não será gerado.

Para obter o formato de dados de séries temporais, consulte Dados de séries temporais (métrica).

time_field

String

Não

O campo de tempo para os dados de série temporal. Por padrão, o campo __time__ do log é usado como campo de tempo para os dados de série temporal.

Importante

O campo de entrada deve ser um timestamp. O tipo de dados correspondente deve ser BIGINT ou VARCHAR. Se o campo for do tipo texto VARCHAR, seu valor deve ser conversível em um tipo BIGINT válido.

buckets

Integer

Não

O valor padrão é 32. Defina este parâmetro como o número de shards de destino. Ele ajusta o intervalo de hash para otimizar o desempenho de gravação do operador log-to-metric. Este parâmetro controla o número de buckets de hash, o que afeta a distribuição de dados e o desempenho de consulta no metricstore.

Exemplos

  • Exemplo 1: transforme um log que contém o campo rt no formato de dados de série temporal.

    • Instrução SPL

      * | log-to-metric -names='["rt"]'
    • Dados de entrada

      __time__: 1614739608
      rt: 123
    • Saída

      __labels__:
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemplo 2: transforme um log que contém o campo rt no formato de dados de série temporal e use o campo host como um novo rótulo.

    • Instrução SPL

      * | log-to-metric -names='["rt"]' -labels='["host"]'
    • Dados de entrada

      __time__: 1614739608
      rt: 123
      host: myhost
    • Saída

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemplo 3: transforme um log com os campos rt e qps no formato de dados de série temporal e use o campo host como rótulo.

    • Instrução SPL

      * | log-to-metric -names='["rt", "qps"]' -labels='["host"]'
    • Dados de entrada

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost
    • Saída

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:qps
      __time_nano__:1614739608
      __value__:10

  • Exemplo 4: use correspondência por curinga para transformar um log que contém os campos rt1 e rt2 no formato de dados de série temporal e use o campo host como um novo rótulo.

    • Instrução SPL

      * | log-to-metric -wildcard -names='["rt*"]' -labels='["host"]'
    • Dados de entrada

      __time__: 1614739608
      rt1: 123
      rt2: 10
      host: myhost
    • Saída

      __labels__:host#$#myhost
      __name__:rt1
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:rt2
      __time_nano__:1614739608
      __value__:10
  • Exemplo 5: transforme um log que contém os campos rt e qps no formato de dados de série temporal, use o campo host como um novo rótulo e formate automaticamente o valor do novo rótulo.

    • Instrução SPL

      * | log-to-metric -format -names='["rt", "qps"]' -labels='["host"]'
    • Dados de entrada

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost1|myhost2
    • Saída

      __labels__:host#$#myhost1_myhost2
      __name__:rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost1_myhost2
      __name__:qps
      __time_nano__:1614739608
      __value__:10
  • Exemplo 6: transforme um log que contém os campos rt e qps no formato de dados de série temporal. Substitua os nomes dos campos por max_rt e total_qps e use o campo host como um novo rótulo.

    • Instrução SPL

      * | project-rename max_rt = rt, total_qps = qps| log-to-metric -names='["max_rt", "total_qps"]' -labels='["host"]'
    • Dados de entrada

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost
    • Saída

      __labels__:host#$#myhost
      __name__:max_rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:host#$#myhost
      __name__:total_qps
      __time_nano__:1614739608
      __value__:10
  • Exemplo 7: transforme um log que contém os campos rt e qps no formato de dados de série temporal. Os campos são renomeados para max_rt e total_qps, e o campo host é renomeado para hostname para servir como um novo rótulo.

    • Instrução SPL

      * | project-rename max_rt = rt, total_qps = qps, hostname=host| log-to-metric -names='["max_rt", "total_qps"]' -labels='["hostname"]'
    • Dados de entrada

      __time__: 1614739608
      rt: 123
      qps: 10
      host: myhost
    • Saída

      __labels__:hostname#$#myhost
      __name__:max_rt
      __time_nano__:1614739608
      __value__:123
      
      __labels__:hostname#$#myhost
      __name__:total_qps
      __time_nano__:1614739608
      __value__:10
  • Exemplo 8: transforme um log que contém o campo remote_user no formato de dados de série temporal. Use o campo status como um novo rótulo e o campo time como o timestamp para os dados de série temporal.

    • Instrução SPL

      * | log-to-metric -names='["remote_user"]' -labels='["status"]' -time_field='time'
    • Dados de entrada

      time:1652943594
      remote_user:89
      request_length:4264
      request_method:GET
      status:200
    • Saída

      __labels__:status#$#200
      __name__:remote_user
      __time_nano__:1652943594
      __value__:89

metric-to-metric

Transforma ainda mais os dados de série temporal existentes ao adicionar, modificar ou remover rótulos.

Importante
  • O nome do campo de entrada deve corresponder à expressão regular [a-zA-Z_][a-zA-Z0-9_]*. Caso contrário, o rótulo do ponto de série temporal gerado não incluirá este campo.

  • Se os três parâmetros de opção contiverem o mesmo campo, a prioridade será a seguinte: add_labels > del_labels > rename_labels.

Para obter mais informações sobre o formato de dados de série temporal de saída, consulte Dados de séries temporais (métrica).

Sintaxe

| metric-to-metric -format -add_labels=<add_labels> -del_labels=<del_labels> -rename_labels=<rename_labels> -buckets=<buckets>

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

add_labels

Array

Não

Uma lista de campos de rótulo a serem adicionados. Usada para construir novas informações de rótulo de série temporal.

Adiciona os dados brutos aos rótulos do ponto de série temporal. Apenas o tipo VARCHAR é compatível.

Por exemplo, se os dados brutos forem {"host":"http://www.xxx.com", "ip":"127.0.0.1"} e você inserir ["host", "ip"], |host#$#http://www.xxx.com|ip#$#127.0.0.1 será adicionado aos rótulos originais. Se os rótulos originais já contiverem um campo host, seu valor será sobrescrito.

del_labels

Array

Não

Uma lista de campos de rótulo a serem removidos. Usada para construir novas informações de rótulo de série temporal.

Se um nome de campo na entrada corresponder a um nome de campo nos rótulos originais, o campo correspondente será excluído dos rótulos originais.

Por exemplo, se o valor do rótulo original for host#$#http://www.xxx.com|ip#$#127.0.0.1, inserir ["ip"] especifica a exclusão de um rótulo de série temporal e atualiza o rótulo original para host#$#http://www.xxx.com. Se o rótulo original contiver o campo ip, nenhuma ação será executada.

rename_labels

Map

Não

Uma lista de campos de rótulo a serem renomeados. Usada para construir novas informações de rótulo de série temporal.

Atualiza os rótulos do ponto de série temporal original com base nas informações do mapa. A chave é o nome do campo original e o valor é o novo nome do campo.

Por exemplo, {"host":"host_new", "ip":"ip_new"} renomeia "host" para "host_new" e "ip" para "ip_new". Se os rótulos originais não contiverem o campo correspondente, nenhuma operação será realizada.

format

Bool

Não

Especifica se a formatação automática deve ser ativada. Por padrão, essa opção está desativada e dados inválidos são ignorados durante a transformação.

Se ativada:

  • Os __labels__ são ordenados.

  • O LabelKey e o LabelValue são formatados.

    • LabelKey: deve corresponder à expressão regular "[a-zA-Z_][a-zA-Z0-9_]". Caracteres inválidos são substituídos por um espaço (" ").

    • LabelValue: não pode conter caracteres como "|", "#" ou "$". Se contiver, esses caracteres são substituídos por um sublinhado (_).

  • Rótulos em __labels__ com uma string vazia como LabelValue são descartados. No entanto, a entrada de dados é mantida.

  • Rótulos duplicados no campo __labels__ são removidos. O rótulo com o primeiro LabelValue em ordem lexicográfica é mantido.

buckets

Integer

Não

O valor padrão é 32. Defina este parâmetro como o número de shards de destino. Ele ajusta o intervalo de hash para otimizar o desempenho de gravação do operador metric-to-metric. Este parâmetro controla o número de buckets de hash, o que afeta a distribuição de dados e o desempenho de consulta no metricstore.

Exemplos

  • Exemplo 1: adicione um rótulo.

    • Instrução SPL

      * | extend qps = '10'|metric-to-metric -add_labels='["qps"]'
    • Dados de entrada

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Saída

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemplo 2: remova um rótulo.

    • Instrução SPL

      * | metric-to-metric -del_labels='["qps"]'
    • Dados de entrada

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Saída

      __labels__:host#$#myhost
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemplo 3: renomeie um rótulo.

    • Instrução SPL

      * | metric-to-metric -rename_labels='{"host":"etl_host"}'
    • Dados de entrada

      __labels__:host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Saída

      __labels__:etl_host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123
  • Exemplo 4: formate dados inválidos.

    • Instrução SPL

      * | metric-to-metric -format
    • Dados de entrada

      __labels__:host#$#myhost|qps#$#10|asda$cc#$#j|ob|schema#$#|#$#|#$#xxxx
      __name__:rt
      __time_nano__:1614739608
      __value__:123
    • Saída

      __labels__:asda_cc#$#j|host#$#myhost|qps#$#10
      __name__:rt
      __time_nano__:1614739608
      __value__:123