Corrigindo dados do log usando uma regra Substituir

No IBM® Cloud Logs, é possível usar a regra Substituir para mudar a estrutura de log, reparar logs formatados incorretamente, mudar a severidade do log ou mascarar informações.

Antes de Iniciar

As regras de análise são organizadas dentro de Grupos de Regras Cada grupo tem um nome e um conjunto de regras com um relacionamento lógico entre eles.. Os logs são processados de acordo com a ordem do grupo de regras (do início ao fim) Eles são então processados pela ordem de regras dentro do grupo de regras e de acordo com os operadores lógicos entre eles (AND/OR). As regras ajudam a processar, analisar e reestruturar dados do log para preparar o monitoramento e a análise. Para obter mais informações, consulte Trabalhando com grupos da regra

Configurando uma regra de substituição

Conclua as etapas a seguir:

  1. Clique no ícone Pipeline de dados ícone Pipeline de dados > Regras de análise e clique em Novo grupo de regras.

  2. Na seção Detalhes, insira Nome do Grupo de Regras e Descrição do Grupo de Regras.

  3. Na seção Correspondente de regra, configure os aplicativos, subsistemas e gravidades que definem os logs nos quais aplicar as regras que estão incluídas no grupo de regras

  4. Na seção Regras, selecione Substituir ícone Substituir regra de análise.

    1. Insira um nome.

    2. Opcionalmente, insira uma descrição.

    3. Selecione um campo de origem. Este é o campo no qual o RegEx é aplicado

    4. Selecione um campo de destino. Esse é o campo que será preenchido com os resultados da aplicação da expressão RegEx

    5. Insira a Expressão regular (RegEx).

    6. Insira uma sequência de substituição que substituirá o RegExcorrespondente..

    7. Alterne o status para ACTIVE se desejar que a regra seja ativada..

  5. Inclua grupos de regras adicionais clicando em Incluir regra e selecionando o tipo de regra desejado.. Alterne AND/OR para selecionar como deseja que as regras adicionais sejam processadas.

  6. Clique em Criar grupo de regras.

Exemplo: reparando um log JSON formatado incorretamente

Um caso de uso comum para uma regra de substituição é reparar os logs JSON formatados incorretamente

No exemplo a seguir, os logs JSON são enviados com um prefixo de data que quebra o formato JSON e os transforma em logs não estruturados..

RegEx identifica a subsequência e remove a sequência incorreta no log.

O log original é:.

2020-08-07 {“status”:”OK”, “user”:John Smith”, “ops”:”J1”}

O RegEx:

.*{

A sequência para substituir o resultado da avaliação da expressão RegEx é:

{

O log resultante:.

{"status":"OK", "user":"John Smith", "ops":"J1"}

Exemplo: reconstruindo um log com campos aninhados

O exemplo a seguir mostra como usar uma regra de substituição para reconstruir um log com campos aninhados.. Campos aninhados são uma restrição nas regras de extração e análise.

O log original:

{"ops":"G1","user":"John Smith-2125 Sierra Ventura Dr.-Sunnyvale-CA-94054","status":"305"}

O RegEx:

(.*user"):"([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)",([^$]*)

Cada um dos parênteses representa um grupo de captura que pode ser endereçado por $n n=1..7

A sequência de substituição:

$1:{"name":"$2","address":"$3","city":"$4","state":"$5","zip":"$6"},$7

O log resultante;

{
   "ops":"G1",
   "User":{
      "name":"John Smith",
      "address":"2125 Sierra Ventura Dr.",
      "city":"Sunnyvale",
      "state":"CA",
      "Zip":"94054"
   },
   "status":"305"
}

Exemplo: Transformando o campo JSON em sequência (escapado) em um objeto.

A regra inner_json é uma regra de substituição especial que usa um valor de campo em um log JSON que inclui em sequência (escape) JSON e transformá-lo em um objeto.

No exemplo a seguir, o log original é::

{
 "server":"opa",
 "IBC":"45ML",
 "thread":"1201",
 "message":"{\"first_name\":\"John\", \"last_name\":\"Smith\", \"userID\":\"AB12345\", \"duration\":45}"
}

A mensagem de campo tem um valor de cadeia que é um JSON legal de escape.

Nossa regra de substituição especial altera o nome do campo do nome original "message" para "inner_json":

O RegEx:

“message”\s*:\s*”{\s*\\”

Esse RegEx identifica uma mensagem de nome de campo com o início do JSON escapado.

A sequência de substituição é:

“inner_json”:”{\”

Este exemplo substitui apenas o nome de campo e nada mais.

O log resultante:.

{
   "server":"opa",
   "inner_json":{
     "first_name":"John" ,
     "last_name":"Smith" ,
     "userID":"AB12345" ,
     "duration":45
  }
}