Por que não estou vendo resultados de minhas pesquisas em Insights prioritários?

Ao pesquisar em IBM® Cloud Logs usando Insights prioritários, não estou vendo os resultados esperados retornados. Sei que os campos que estou procurando em meus registros existem, mas o IBM Cloud Logs parece não encontrá-los com minhas pesquisas.

A pesquisa de valores de campo não retorna os resultados esperados.

O problema geralmente está relacionado a uma exceção de mapeamento.

Uma exceção de mapeamento pode ocorrer se novos campos de registro forem ingeridos com nomes de campo que foram ingeridos anteriormente por IBM Cloud Logs, mas que têm um tipo de valor diferente. Quando o IBM Cloud Logs indexa os dados ingeridos, ele tenta mapear os campos para um dos seguintes tipos:

  • String
  • Numeric
  • Object
  • Array

Se, por exemplo, o campo user tiver sido ingerido e o primeiro valor recebido for "username", IBM Cloud Logs criará um índice do tipo string para o campo user:

"user": “username”`

Se, mais tarde, um novo registro for ingerido, ele também terá um campo chamado "user" (usuário), formatado assim:

"user": {
  “email”: “username@yourcompany.com”,
  ”login”: “username”`
}

Uma exceção de mapeamento é criada em IBM Cloud Logs. Qualquer pesquisa em Insights prioritários que procure um campo chamado user deverá ter um valor string com base no primeiro registro ingerido com um campo user.

Qualquer pesquisa em Insights prioritários que procure um user com o tipo array (user.email ou user.login) não retornará nenhum resultado devido à exceção de mapeamento.

Você pode determinar se há exceções de mapeamento usando a interface do usuário IBM Cloud Logs.

Para identificar exceções de mapeamento, conclua as etapas a seguir:

  1. Verifique se há um ícone ao lado da contagem de registros na interface do usuário IBM Cloud Logs:

    Icone de mapeamento de exceções
    Icone de mapeamento de exceções

    Ao passar o mouse sobre o ícone, será exibido o número de registros com exceções de mapeamento nos resultados da consulta no período selecionado.

  2. Para identificar os logs específicos que não foram indexados corretamente, ative a opção Show Mapping errors:

    Seleção de como mostrar erros de mapeamento. Clique em Configurações e depois em Mostrar erros de mapeamento.
    Seleção de como mostrar erros de mapeamento

  3. Depois de ativar essa opção, atualize seu navegador.

    Um ponto de exclamação será exibido nos campos que têm exceções de mapeamento e não foram indexados.

    Registro de campos com exceções de mapeamento
    Registro de campos com exceções de mapeamento

    Outra maneira de identificar rapidamente quais campos têm uma exceção de mapeamento é executar a consulta: _exists_: coralogix.failed_reason

    Consulta para mostrar exceções de mapeamento
    Consulta para mostrar exceções de mapeamento.

    Essa consulta retornará apenas as linhas de registro que têm uma exceção de mapeamento para o período de tempo selecionado.

Há duas maneiras de resolver exceções de mapeamento:

  • Opção 1: Pesquisar sem indexação.

    Se você não encontrar um campo ao fazer a consulta devido a exceções de mapeamento, poderá pesquisar em All Logs em vez de Priority Insights. Ao pesquisar em All Logs, as exceções de indexação e mapeamento são ignoradas pela pesquisa.

  • Opção 2: Corrigir registros de log na ingestão.

    É possível corrigir novos registros de log que estão sendo ingeridos com os mesmos nomes de campo, mas com tipos de dados diferentes.

    1. Crie uma expressão RegEx para substituir o nome do campo pelo sufixo apropriado. Por exemplo:

      field_obj
      Se IBM Cloud Logs estiver esperando uma cadeia de caracteres, mas encontrou um objeto:
      • Expressão regular: ("field"\s*:\s*{)
      • Substituir por: "field_obj":{
      field_arr
      Se IBM Cloud Logs estiver esperando uma string, mas encontrou uma matriz:
      • Expressão regular: ("field"\s*:\s*[)
      • Substituir por: "field_arr":[
      field_str
      Se IBM Cloud Logs estiver esperando um objeto, mas encontrou uma cadeia de caracteres:
      • Expressão regular: ("field"\s*:\s*")
      • Substituir por: "field_str":"
    2. Crie uma regra de substituição para corrigir novos registros usando o RegEx.