Análise do arquivo de log: extraindo parte de informações da parte de valor

10

Estou tentando criar um conjunto de dados em vários arquivos de log de um de nossos produtos.

Os diferentes arquivos de log têm seu próprio layout e conteúdo; Eu os agrupei com sucesso, apenas um passo restante ...

De fato, as "mensagens" do log são as melhores informações. Não tenho a lista abrangente de todas essas mensagens, e é uma má idéia codificar com base nelas porque essa lista pode mudar todos os dias.

O que eu gostaria de fazer é separar o texto de identificação do texto de valor (por exemplo: "Arquivo carregado XXX" se torna (identificação: "Arquivo carregado", valor: "XXX")). Infelizmente, este exemplo é simples e, no mundo real, existem layouts diferentes e, às vezes, vários valores.

Eu estava pensando em usar kernels de string, mas é destinado a clustering ... e o cluster não é aplicável aqui (não sei o número de tipos diferentes de mensagens e, apesar de tudo, seria demais).

Você tem alguma ideia?

Obrigado pela ajuda.

PS: Para quem programa, isso pode ser mais fácil de entender. Digamos que o código contenha como logs printf ("blabla% s", "xxx") -> eu gostaria de ter "blabla" e "xxx" separados

Michael Hooreman
fonte
Você pode fornecer uma seleção representativa de exemplos que demonstram a variedade de itens que o algoritmo precisará analisar?
Emre
2
Existem centenas de maneiras de fazer isso. Dê uma idéia de quais ferramentas ou idioma você precisa fazer isso. Existe um aspecto de ciência de dados nisso? parece apenas análise de log.
Sean Owen

Respostas:

3

Que tal considerar cada string como um rastreamento de processo e aplicar o algoritmo alfa? Isso forneceria um gráfico e os nós com um grande número de bordas provavelmente apontariam para valores.

Você pode marcar esses nós e, para cada nova sequência, analisar / percorrer o gráfico até chegar a essas áreas.

Juan Leni
fonte
Muito obrigado. Eu não conhecia algoritmos alfa. Vou verificar nessa direção.
precisa
2

Isso não parece um problema de ciência de dados. No entanto, existem ferramentas muito boas para fazer exatamente isso, checkout: logstash, flume e fluentd. Na verdade, se você quiser filtrar de maneira rápida e "inteligente", faça o check-out do Kibana dos caras do ElastichSearch ( http://www.elasticsearch.org/overview/kibana ). Essas ferramentas são suficientes para resolver seu problema de maneira muito eficiente.

Javierfdr
fonte
Meu pensamento é que a extração de recursos faz parte da ciência de dados. Bem, é apenas uma opinião ;-) Mais sério, não estou falando de arquivos de log padrão fáceis, mas de arquivos personalizados de um software muito específico. Então, isso é realmente extrair informações do contexto «frases»
Michael Hooreman
1

Se você está simplesmente tentando separar informações textuais e numéricas, existe uma solução baseada em expressões regulares ou mesmo na divisão de cadeias.

Você pode até encontrar algo como encontrar o primeiro caractere numérico e dividir o texto ao meio antes disso.

Com expressões regulares, você pode combinar todos os caracteres numéricos que se seguem. O padrão seria ([0-9]+)com uma bandeira global. Combinaria com todos os grupos de números e você poderá fazer o que quiser com eles posteriormente.

O Regex Tester é bom para brincar com essas coisas.

LauriK
fonte
Obrigado Laurik. Infelizmente, não apenas números, e também não sei quais serão as mensagens futuras. Então, eu realmente preciso de IA.
Michael Hooreman