A DSL do Simple Log Service (SLS) baseia-se em Python e oferece mais de 200 funções integradas para simplificar tarefas de transformação de dados. Este tópico descreve os modos de linguagem, as categorias de funções e os princípios de execução da DSL.
Modos de linguagem
A DSL do SLS é compatível com Python. No modo padrão, funciona como um subconjunto do Python. Exceto pelas estruturas de dados e expressões básicas, todas as outras regras de sintaxe são implementadas por meio de funções.
Categoria | Sintaxe Python | Modo padrão |
Estrutura de dados | Número, string e booleano | Compatível. Strings que começam ou terminam com |
Tupla, lista, conjunto e dicionário | Compatível. A estrutura | |
Objeto | Somente estruturas de dados estendidas integradas, como objetos table e datetime, são compatíveis. | |
Sintaxe básica | Operadores como adição (+), subtração (-), multiplicação (×) e divisão (/) | Use diretamente no código apenas operadores de comparação, como |
Comentários | Compatível. | |
Atribuição de variáveis | Não compatível. Realize a atribuição por meio da invocação de uma função. | |
Pré-requisitos | Compatível. Funções: e_if, e_if_else e e_switch. | |
Loops | Compatível indiretamente. Use funções integradas aninhadas para implementar loops. As funções de exemplo abaixo mostram como percorrer os elementos de um array: | |
Função | Funções integradas padrão do Python | Não compatível. Em vez disso, use as mais de 200 funções integradas fornecidas pela DSL do SLS. |
Chamadas de função | Compatível. Chamadas de função que usam desempacotamento de parâmetros não são compatíveis. | |
Funções definidas pelo usuário, como def ou lambda | Não compatível. No entanto, o sistema oferece mais de 200 funções globais de operação e expressão que você pode chamar em qualquer combinação. | |
Módulo | Importação e uso da biblioteca padrão do Python | Não compatível. |
Criação de threads e processos | Não compatível. | |
Importação de bibliotecas de terceiros | Não compatível. | |
Conexão de rede externa ou chamada de comando externo | Inclui conectores de recursos integrados. |
Categorias de funções
No modo padrão, a DSL do SLS executa todas as operações por meio de chamadas de função. A DSL fornece mais de 200 funções integradas, divididas em funções de processamento global e funções de expressão.
-
Funções de processamento global
Essas funções recebem, processam e retornam logs. Use apenas funções de processamento global para construir cada etapa de uma regra de transformação.
-
Funções de expressão
Funções de uso geral que aceitam parâmetros específicos. Combine-as e passe-as como parâmetros para uma função de operação global para definir lógicas mais flexíveis.
A tabela a seguir compara as capacidades dos dois tipos de função.
|
Tipo de função |
Etapas gerais |
Recebimento |
Retorno |
Modificação de log |
Chamadas combinadas |
|
Operações e funções globais |
Compatível |
Logs recebidos automaticamente |
Zero a múltiplos logs |
Compatível na maioria dos casos |
Compatível |
|
Funções de expressão |
Não compatível |
Apenas algumas funções permitem processamento direto de logs. |
Estruturas de dados específicas |
Não compatível |
Compatível |
Funções de processamento global
Funções destinadas a receber e retornar logs.
Coloque apenas uma função de processamento global na primeira linha de cada etapa.
Uma regra de transformação na DSL do SLS usa a seguinte sintaxe:
GlobalFunction1(..parameters....)
GlobalFunction2(..parameters....)
GlobalFunction3(..parameters....)
GlobalFunction4(..parameters....)
As funções de processamento global dividem-se em duas categorias:
Classificação funcional | Descrição | Exemplo |
Funções de controle de fluxo | Gerenciam o fluxo do processo, recebem logs e invocam condicionalmente outras funções para processá-los. |
|
Funções de processamento de eventos | Transformam logs e retornam de zero a múltiplos logs. | Exemplos de funções incluem:
|
Lógica de transformação:
-
Processamento básico
O recurso de transformação de dados lê dados do Logstore de origem em streaming. Cada log é passado como um dicionário para a regra de transformação. O sistema processa os dados do log sequencialmente, conforme as funções definidas na regra. Por fim, o resultado da transformação é enviado ao Logstore de destino.
NotaTodos os campos e valores de um log são enviados como strings. Por exemplo, o log bruto
{"__time__": "1234567", "__topic__": "", "k1": "test"}é processado pela funçãoe_set("f1", 200). Essa função adiciona o campof1com o valor 200. Após o processamento, o log torna-se{"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. Nesse log, tanto o campof1quanto o valor 200 são strings.As funções de processamento de eventos especificadas em uma regra de transformação são chamadas em sequência. Cada função recebe um log, processa-o e retorna o log processado.
Por exemplo, a função
e_set("type", "test")adiciona o campotypecom o valor test a um log. A próxima função recebe e processa esse log modificado. -
Avaliação de condições
-
e_if: A função e_if permite adicionar expressões condicionais para processar logs. Caso um log não atenda à condição especificada, a operação correspondente será ignorada. A função e_if implementa a lógica
if.Por exemplo, a função
e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result"))verifica se o valor do campostatusé 200. Se verdadeiro, a função extrai o camporesultdo campodatausando a expressão regular especificada. Caso contrário, nenhuma operação será realizada. e_if_else: Esta função opera de maneira semelhante à operaçãoif_else.
-
-
Término do processamento
-
Uma etapa em uma regra de transformação pode não retornar nenhum log, indicando que o log foi excluído.
Por exemplo, a função
e_if(str_islower(v("result")), e_drop())verifica se o valor do camporesulté uma string em letras minúsculas. Se verdadeiro, o log será descartado e as etapas subsequentes não serão executadas para esse log. O sistema passa a processar automaticamente o próximo log. -
Escrever um log em um Logstore de destino encerra o processamento. Por exemplo, se a função
e_outputgravar um log em um Logstore de destino e o excluir, as etapas subsequentes não serão executadas para esse log.NotaA função
e_coutputcopia o log de saída e continua o processamento das etapas subsequentes.
-
-
Divisão paralela:
Uma etapa em uma regra de transformação pode retornar múltiplos logs, indicando que o log foi dividido.
Por exemplo, a função
e_split(data)divide um log em dois com base no valor do campodata. Se o valor do campodatafor"abc, xyz", o log será dividido em dois. Em um deles, o valor do campodataserá abc. No outro, o valor será xyz.Os logs gerados após a divisão são processados nas etapas subsequentes.
Para mais informações, consulte Global operation functions.
Funções de expressão
Além das funções de processamento global, a DSL do SLS oferece 200 funções de expressão que aceitam parâmetros específicos e retornam valores específicos. Chame uma função de expressão ou uma combinação delas dentro de uma função de processamento global. A sintaxe é a seguinte:
Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)
As funções de expressão dividem-se em quatro categorias:
|
Classificação funcional |
Descrição |
Exemplo |
|
Funções de verificação de eventos |
Recebem logs, extraem ou recuperam informações específicas e retornam esses dados sem modificar os logs. |
A função |
|
Funções de recursos |
Conectam-se a recursos locais ou externos, usam configurações de parâmetros específicos e retornam dados como dicionários ou tabelas. |
Funções de recursos OSS, RDS e Logstore. |
|
Funções de controle |
Executam operações lógicas em expressões. Usam parâmetros específicos, aplicam controle condicional e invocam outras funções de expressão para retornar resultados. |
|
|
Outras funções de expressão |
Aceitam valores fixos ou resultados de outras chamadas de função e retornam valores específicos. |
Funções de string, data e hora, e conversão de tipos. |
Para mais informações, consulte Expression functions.