2013-04-11 2 views
1

У меня есть логин, что я пытаюсь найти шаблоны или проанализировать их сходство во времени.Алгоритмический анализ сходств по логарифмическим линиям?

Каждый лаглинь может разбить на:

  1. Timestamp
  2. Модуль/функции
  3. Payload (т.е. фактическое сообщение журнала).

Есть ли алгоритмический подход для нахождения сходства в наборе логарифмов?

Я знаю о таких вещах, как расстояние Левенштейна для сравнения строк, однако я надеялся на более общий подход, который я мог бы использовать для выполнения лог-файла?

Возможно, это не единственное решение для всего этого (хотя, если есть, скажите, пожалуйста!), Но указатели в правильном направлении или места, где я могу найти дополнительную информацию, были бы замечательными.

EDIT - Некоторые примеры типов loglines

11:30:00.028747923 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(21643.5) complexprice(21641.9 - 21645.1) supercomplexprice(21641.9 - 21644.1) 
11:30:00.028882087 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(21643.2) complexprice(21643.2 - 21643.2) supercomplexprice(21643.2 - 21643.2) 
11:30:00.039708519 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(10465.8) complexprice(10465.8 - 10465.8) supercomplexprice(10465.8 - 10465.8) 
11:30:00.039718896 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(10466.5) complexprice(10465.9 - 10467.1) supercomplexprice(10465.9 - 10466.7) 
11:30:00.040049452 [Debug ] [Skywalker] [BuyOrNot] session(server1) animal_type(cats) simpleprice(-0.184) complexprice(-0.184 - -0.184) supercomplexprice(-0.184 - -0.184) 

11:30:00.704976265 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:388, 10456) legParams updated 
11:30:00.704984746 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="386"} Identifier=10455) params(bidPrice=0 askPrice=0) 
11:30:00.704992314 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:386, 10455) legParams updated 
11:30:00.704995811 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="1171"} Identifier=16262) params(bidPrice=0 askPrice=0) 
11:30:00.705002094 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:1171, 16262) legParams updated 
11:30:00.705004666 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="883"} Identifier=10463) params(bidPrice=0 askPrice=0) 
11:30:00.705010516 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:883, 10463) legParams updated 
11:30:00.705012997 [Info ] [Skywalker] [OnCompositeLegVolatileParamsSetMessage] client(f1_ar_cmp_hk_tko_061), composite(wheatbag) composite leg(ID={Market="MARKET" Feedcode="3968"} Identifier=10457) params(bidPrice=0 askPrice=0) 
11:30:00.705018983 [Debug ] [Skywalker] [SetChickenParameter] composite(wheatbag) leg(MARKET:3968, 10457) legParams updated 

Я думал, что я мог бы создать какое-Dict различных регулярных выражений, чтобы соответствовать различным типам логов - то найти переменные точки каждого типа - и использовать какую-то эвристику, которая соответствовала бы тому, насколько различны/похожи друг на друга каждая точка?

Или есть «более умный» способ решить эту проблему?

+1

Самый важный вопрос здесь (который вам нужно ответить, прежде чем мы можем указать вам на какой-либо конкретный подход): как вы определяете сходство? Вероятно, неплохо представить несколько пар строк журнала, которые вы считаете «похожими», а некоторые, которые вы считаете разными. – blubb

ответ

0

logline - это уже довольно структурированная вещь, поэтому вы можете определить различные критерии подобия для разных частей, например. сходство по времени метки может быть таким, как близкие две временные метки или, например, в одно и то же время суток, для модуля/функции, вероятно, будет работать только точное равенство, а сравнение полезной нагрузки сильно зависит от вашего домена.

Смежные вопросы