Converter texto não estruturado em JSON
No IBM® Cloud Logs, é possível usar a regra Análise para converter texto não estruturado em um ou mais campos JSON.
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
Usando grupos capturados nomeados para definir novos campos
A regra de análise usa grupos de capturas denominadas RegEx para definir novos campos.
- Grupos capturados se tornam os campos de log analisados.
- O valor que está associado a cada grupo se torna o valor do campo.
- O RegEx não precisa corresponder ao log inteiro..
- Apenas os grupos de captura nomeados RegEx (os valores dentro do
< >) e o valor que eles capturam fazem parte do log reconstruído.
Configurando uma regra de análise.
Conclua as etapas a seguir para criar um grupo de regras com uma regra de Análise:
-
Clique no ícone Pipeline de dados
> Regras de análise e clique em Novo grupo de regras.
-
Na seção Detalhes, insira Nome do Grupo de Regras e Descrição do Grupo de Regras.
-
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
-
Na seção Regras, selecione Analisar
.
-
Insira um nome.
-
Opcionalmente, insira uma descrição.
-
Selecione um campo de origem. Este é o campo no qual o RegEx é aplicado
-
Selecione um campo de destino. Esse é o campo que será preenchido com os resultados da aplicação da expressão RegEx
-
Insira a Expressão regular (RegEx).
-
Alterne o status para ACTIVE se desejar que a regra seja ativada..
-
-
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.
-
Clique em Criar grupo de regras.
Exemplo de conversões de log
O exemplo a seguir usa um log de erro do tipo Heroku L/H que é enviado do Heroku como um log não estruturado e o converte em log JSON.
O log original é:.
sock=client at=warning code=H27 desc="Client Request Interrupted" method=POST path="/submit/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno=web.1 connect=1ms service=0ms status=499 bytes=0
O RegEx é:.
^(sock=)?(?P<sock>(\S*))\s*at=(?P<severity>\S*)\s*code=(?P<error_code>\S*)\s*desc="(?P<desc>[^"]*)"\s*method=(?P<method>\S*)\s*path="(?P<path>[^"]*)" host=(?P<host>\S*)\s* (request_id=)?(?P<request_id>\S*)\s*fwd="?(?P<fwd>[^"\s]*)"?\s*dyno=(?P<dyno>\S*)\s*connect=(?P<connect>\d*)(ms)?\s*service=(?P<service>\d*)(ms)?\s*status=(?P<status>\d*)\s* bytes=(?P<bytes>\S*)\s*(protocol=)?(?P<protocol>[^"\s]*)$
O log formatado é:
{
"sock": "client",
"severity": "warning",
"error_code": "H27",
"desc": "Client Request Interrupted",
"method": "POST",
"path": "/submit/",
"host": "myapp.herokuapp.com",
"request_id": "",
"fwd": "17.17.17.17",
"dyno": "web.1",
"connect": "1",
"service": "0",
"status": "499",
"bytes": "0",
"protocol": ""
}