O recurso de transformação de dados usa grupos de consumidores para consumir dados de log e aplica regras de transformação para transformar esses dados. Há mais de 200 funções integradas disponíveis para orquestrar regras de transformação. Este tópico descreve como ocorre o agendamento do consumo de dados de log durante a transformação de dados e como funciona o motor de regras dessa transformação.
Conceitos básicos de agendamento
O recurso de transformação de dados do Simple Log Service usa um grupo de consumidores para consumir dados de log do Logstore source no modo de streaming, transforma cada entrada de log com base na regra de transformação especificada e grava os dados transformados em um ou mais Logstores de destino.

Scheduling mechanism
Para cada regra de transformação, o agendador de transformação de dados inicia uma ou mais instâncias em execução. Cada instância em execução atua como um consumidor para consumir dados de um ou mais shards do Logstore source. O agendador determina o número de instâncias em execução simultânea com base nos recursos de memória e CPU que essas instâncias utilizam. O número máximo de instâncias em execução que o agendador pode iniciar equivale ao número de shards no Logstore source.
Running instance
As instâncias em execução leem os dados de log source dos shards alocados a elas com base nas suas configurações. O recurso transforma os dados com base na regra de transformação e os grava em um ou mais Logstores de destino. É possível configure regras de transformação para enriquecer os dados de log com recursos externos. Com base no mecanismo de grupos de consumidores, as instâncias em execução registram checkpoints de consumo de dados nos shards. Esses checkpoints são úteis caso ocorra uma interrupção inesperada no consumo. Após o fim da interrupção, as instâncias em execução podem continuar a consumir dados a partir do último checkpoint.
Task termination
Por padrão, caso você não defina a hora de término de uma tarefa de transformação, as instâncias em execução continuam ativas e a tarefa não para.
Caso você defina a hora de término de uma tarefa de transformação, as instâncias em execução consomem dados de log até essa hora. Quando a tarefa atinge a hora de término, as instâncias finalizam a execução e a tarefa para.
Por padrão, se você interromper e reiniciar uma tarefa, as instâncias em execução continuam a consumir dados a partir do último checkpoint registrado.
Conceitos básicos do motor de regras: operações básicas
Use as funções integradas escritas na linguagem específica de domínio (DSL) do Simple Log Service para orquestrar regras de transformação. Cada função representa uma etapa de transformação. O motor de regras chama as funções de uma regra de transformação em sequência. Por exemplo, a regra de transformação a seguir usa quatro funções. Essas funções correspondem a quatro etapas de transformação de dados:
e_set("log_type", "access_log")
e_drop_fields("__action")
e_if(e_search("ret: pass"), e_set("result", "pass"))
e_if(e_search("ret: unknown"), DROP)The following figure shows the transformation logic.
Basic logic
O motor de regras chama cada função definida na regra em sequência. Cada função processa e modifica cada entrada de log e retorna uma entrada de log transformada.
Por exemplo, a função
e_set("log_type", "access_log")adiciona o campo log_type a cada entrada de log. O valor desse campo éaccess_log. Em seguida, a próxima função recebe cada entrada de log transformada que contém o campolog_type.Conditional expressions
É possível definir condições nas etapas. Se uma entrada de log não atender a uma condição em uma etapa, o motor ignora essa etapa para a respectiva entrada.
Por exemplo, a função
e_if(e_search("ret: pass"), e_set("result", "pass"))verifica primeiro se o valor do camporetem uma entrada de log contém pass. Caso contrário, o motor ignora essa etapa para a entrada de log. Se a condição for atendida, a função define o valor do camporesultna entrada de log como pass.Transformation termination
Se uma função não retornar uma entrada de log transformada, o sistema descarta a entrada de log.
Por exemplo, a função
e_if(e_search("ret: unknown"), DROP)descarta uma entrada de log na qual o valor do camporeté unknown. Após descartar a entrada de log, o motor de regras não chama mais as funções subsequentes para transformar essa entrada e começa a transformar a próxima entrada de log.
Conceitos básicos do motor de regras: saída, duplicação e divisão de dados
O motor de regras também oferece suporte à saída, duplicação e divisão de logs. Por exemplo, a regra de transformação a seguir usa quatro funções. Essas funções correspondem a quatro etapas de transformação de dados:
e_coutput("archive_Logstore") )
e_split("log_type")
e_if(e_search("log_type: alert"), e_output("alert_Logstore") )
e_set("result", "pass")O exemplo a seguir mostra uma entrada de log de amostra a ser transformada:
log_type: access,alert
content: admin login to database.The following figure shows the transformation logic.
Log output
A saída de log funciona como uma forma especial de interromper a transformação de uma entrada de log. Conforme mostrado na figura anterior, se o valor do campo
log_typeem uma entrada de log for alert, o motor chama a funçãoe_output("alert_Logstore")na etapa 3 para gravar a entrada de log no Logstore de destino especificado. Em seguida, o sistema descarta a entrada de log e não chama a função subsequente.Log duplication and output
A função
e_coutputduplica uma entrada de log e grava a entrada duplicada em um ou mais Logstores de destino. Depois disso, o motor de regras continua a chamar as funções subsequentes para transformar a entrada de log. Conforme mostrado na figura anterior, o sistema grava as entradas de log duplicadas na etapa 1 no Logstore de destino chamadoarchive_Logstore.Log splitting
Se os valores do campo
log_typeem uma entrada de log forem access e alert, o motor chama a funçãoe_split("log_type")na etapa 2 para dividir a entrada de log em duas entradas. As duas entradas de log são idênticas, exceto pelo valor do campolog_type. O valor desse campo é access em uma entrada de log e alert na outra.As funções subsequentes transformam as entradas de log geradas após a divisão.