As funções de controle de fluxo determinam como as operações de transformação de dados são executadas com base em condições. Use essas funções para compor operações sequenciais, aplicar lógica condicional e encaminhar logs para diferentes destinos.
Funções
|
Função |
Descrição |
|
Combina várias operações em uma sequência.
Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos. |
|
|
Avalia condições e executa as operações correspondentes. Suporta vários pares de condição-operação.
Esta regra de transformação é equivalente ao seguinte código Python:
Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos. |
|
|
Avalia uma condição e executa uma de duas operações com base no resultado.
Esta regra de transformação é equivalente ao seguinte código Python:
|
|
|
Avalia vários pares de condição-operação em sequência, semelhante a uma cadeia if-elif-else.
Esta regra de transformação é equivalente ao seguinte código Python:
Suporta combinação com outras funções. Para mais informações, consulte Distribuir dados para vários Logstores de destino. |
e_compose
Combina várias operações em um pipeline sequencial.
-
Sintaxe
e_compose(Operation 1, Operation 2, ...) -
Parâmetros
Nome do parâmetro
Tipo
Obrigatório
Descrição
Operation 1
Função de processamento global
Sim
Uma ou mais funções de processamento global.
Operation 2
Função de processamento global
Não
Uma ou mais funções de processamento global.
-
Retorno
Retorna o log após a execução de todas as operações.
-
Exemplos
Se o valor do campo content for 123, exclua os campos age e name e renomeie o campo content para ctx.
-
Log original
content: 123 age: 23 name: twiss -
Regra de transformação
e_if( e_search("content==123"), e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")), ) -
Resultado
ctx: 123
-
-
Referências
Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos.
e_if
Avalia condições e executa as operações correspondentes.
-
Sintaxe
e_if(Condition, Operation) e_if(Condition 1, Operation 1, Condition 2, Operation 2, ...)NotaEspecifique os parâmetros
ConditioneOperationem pares. -
Parâmetros
Nome do parâmetro
Tipo
Obrigatório
Descrição
Condition
Arbitrário
Sim
Uma expressão ou uma combinação de expressões. Resultados não booleanos são avaliados quanto à veracidade.
Operation
Função de processamento global
Sim
Uma ou mais funções de processamento global.
-
Retorno
Retorna o log após a execução das operações.
-
Exemplos
-
Exemplo 1: Corresponder a um valor de campo e executar uma operação.
Se o valor do campo result for failed ou failure, defina o campo __topic__ como
login_failed_event.e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event")) -
Exemplo 2: Extrair dados com base em um valor de campo.
Se o campo request_body existir e não estiver vazio, use a função e_json para expandir o valor do campo request_body em vários campos.
e_if(v("request_body"), e_json("request_body")) -
Exemplo 3: Executar uma avaliação avançada.
Se o valor do campo valid for failed em minúsculas, descarte o log.
e_if(op_eq(str_lower(v("valid")), "failed"), DROP) -
Exemplo 4: Avaliar várias condições em sequência.
e_if(True, e_set("__topic__", "default_login"), e_match("valid", "failed"), e_set("__topic__", "login_failed_event") )
-
-
Referências
Suporta combinação com outras funções. Para mais informações, consulte Transformar dados JSON complexos.
e_if_else
Avalia uma condição e executa uma de duas operações com base no resultado.
-
Sintaxe
e_if_else(Condition, Operation if true, Operation if false) -
Parâmetros
Nome do parâmetro
Tipo
Obrigatório
Descrição
Condition
Arbitrário
Sim
Uma expressão ou uma combinação de expressões. Resultados não booleanos são avaliados quanto à veracidade.
Operation if true
Função de processamento global
Sim
Uma ou mais funções de processamento global.
Operation if false
Função de processamento global
Sim
Uma ou mais funções de processamento global.
-
Retorno
Retorna o resultado da operação que corresponde à condição avaliada.
-
Exemplos
Se o valor do campo result for ok ou pass, ou se o valor do campo status for 200, mantenha o log. Caso contrário, descarte o log.
-
Log original
result: ok status: 400result: Pass status: 200result: failure status: 500 -
Regra de transformação
e_if_else( op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP ) -
Resultado: Os dois primeiros logs são mantidos e o terceiro log é descartado.
result: ok status: 400result: Pass status: 200
-
e_switch
Avalia vários pares de condição-operação em sequência, semelhante a uma cadeia if-elif-else.
-
Sintaxe
e_switch(Condition 1, Operation 1, ..., default=None)NotaEspecifique os parâmetros
ConditioneOperationem pares. -
Parâmetros
Nome do parâmetro
Tipo
Obrigatório
Descrição
Condition
Arbitrário
Sim
Uma expressão ou uma combinação de expressões. Resultados não booleanos são avaliados quanto à veracidade.
Operation
Função de processamento global
Sim
Uma ou mais funções de processamento global.
default
Função de processamento global
Não
Uma ou mais funções de processamento global. Executada quando nenhuma condição é atendida.
-
Retorno
Retorna o log após a execução da operação correspondente.
-
Exemplos
-
Se o valor do campo content for 123, defina o campo __topic__ como Number. Se o valor do campo data for 123, defina o campo __topic__ como PRO.
-
Log original
__topic__: age: 18 content: 123 name: maki data: 342__topic__: age: 18 content: 23 name: maki data: 123 -
Regra de transformação
e_switch( e_search("content==123"), e_set("__topic__", "Number", mode="overwrite"), e_search("data==123"), e_set("__topic__", "PRO", mode="overwrite"), ) -
Resultado
__topic__: Number age: 18 content: 123 name: maki data: 342__topic__: PRO age: 18 content: 23 name: maki data: 123
-
-
Combine e_switch com e_output para encaminhar logs que correspondem a regras específicas para diferentes Logstores. Defina
default=e_drop()para descartar logs que não correspondem a nenhuma regra. Se o parâmetrodefaultnão for definido, os logs sem correspondência serão entregues ao primeiro Logstore configurado.-
Log original
__topic__: sas-log-dns test: aliyun __topic__: aegis-log-network test:ecs __topic__: local-dns test:sls __topic__: aegis-log-login test: sls -
Regra de transformação
e_switch(e_match("__topic__","sas-log-dns"),e_output(name="target1"), e_match("__topic__","sas-log-process"),e_output(name="target2"), e_match("__topic__","local-dns"),e_output(name="target3"), e_match("__topic__","aegis-log-network"),e_output(name="target4"), e_match("__topic__","aegis-log-login"),e_output(name="target5"), default=e_drop())
-
-
-
Referências
Suporta combinação com outras funções. Para mais informações, consulte Distribuir dados para vários Logstores de destino.