日誌分析的模式發現功能實現(2)

上一篇,介紹了splunk里的模式功能,以及如何使用ELK做一個簡單的模擬。

在日誌分析這個領域,除了splunk和ELK,還有很多其他的玩家。那麼後續也要說說其他玩家在這方面的處理。

sumologic

sumologic是美國最大的日誌分析雲服務商。模式發現(sumo語境中叫logreduce)及其後續擴展(sumo語境中叫anomalies)功能,也是sumologic最大的亮點。下圖是其模式發現功能的截圖:

可以發現這個界面上的信息和操作,和splunk差別是很大的:

  1. 高亮標識的,不是單個keyword,而是諸如****,$DATE,$URL一類的signature。
  2. 有明確的Score,據稱用的是KL散度。
  3. 提供了對單個模式進行晉級或降級的標記。
  4. 還提供了對單個模式進行細分,或者對多個模式進行歸併的操作。

這個歸併的操作,非常的靈活,用戶可以自己滑鼠劃選,指定應該把哪些內容歸併成signature:

註:除了功能上的區別,還有一個技術上的區別,sumologic支持對所有搜索結果進行logreduce,而splunk會對過多的搜索結果進行截斷,只返回有限數據的pattern。

這些不同中,我最讚賞的是signature設計對比keyword的優勢!

我們都知道,日誌其實是由程序代碼中的各種logger列印出來的。比如這段:

public void setTemperature(Integer temperature) {n oldT = t;n t = temperature;n logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);n if(temperature.intValue() > 50) {n logger.info("Temperature has risen above 50 degrees.");n }n }n

這段程序執行幾億遍,日誌的實際含義也就是這麼兩條代碼。那麼我們追本溯源,希望看到的日誌模式,應該也就是這麼兩行文本。以signature的設計思路,我們看到的日誌模式會是這樣:

$DATE DEBUG Temperature set to *. Old temperature was *.n$DATE INFO Temperature has risen above 50 degrees.n

多麼的一目了然和漂亮!

當然,從更高層級來說,這兩行代碼,都是同一個方法里的,那麼和其他方法、其他類的日誌相比,它兩又可以歸併成更高一些的模式:

$DATE * Temperature *****.n

至於默認給用戶返回哪種模式,這是另一個問題。

sumologic對這個問題的回答之一,就是用戶標記操作。默認的模式評分在0-10之間。而用戶如果點過晉級的模式,以後固定就是最高的10分,點過降級的模式,以後固定就是最低的0分。

此外,sumologic還會自動分析被你點過降級的那些日誌模式。比如說,如果他們共同含有database單詞,那麼以後還有database單詞的日誌,它歸屬的signature評分自動會被降低。(這裡隱藏有一步,它是怎麼確定這個database單詞的?我猜測可以類比splunk的event pattern功能,其中有一個內部的findkeywords指令。不過splunk找到的keyword只是簡單的保存為eventtype,沒有sumologic這種label回饋給機器學習演算法的過程。)

還有一個細節:晉級和降級是以用戶操作為單位的,不同用戶登錄上來,可能因為自己過去的操作歷史看到不同的結果。而細分是以租戶整體為單位的,不同用戶登陸上來,看到的都會是細分完的。


sumologic的模式發現功能,和所有其他廠商相比,更進一步的地方是:並沒有停步在發現並展示模式。還擴展出來了後續的anomalies一整套邏輯。可以說,sumologic是唯一一家擁有完整迴環的文本異常檢測的AIOps公司。

整套思路大致如下:

  1. 預定義查詢範圍,在該範圍內,對最近6小時的日誌進行logreduce;
  2. 對比較罕見的signature,會存入一個獨立的sumologic_anomaly_events索引中待查,也意味著可以對這個索引做告警;
  3. 其中新發現的signature,記錄為unlabel_event_xxxx,提供給用戶進行模式命名、級別設定,還可以填寫處理意見(當然也可以在這裡進行晉級降級細分等操作進行反饋);
  4. 對已經label的signature,按照過去設計的級別,做一個同時間軸的泳道圖展示,這樣可以有一個很醒目的時間相關性的觀感;
  5. 可以對某一時刻的anomalies整體狀態做快照備用。

這一套下來,就串聯了異常檢測、告警、根因分析、事後報告等一大連串智能運維功能。

不過話說回來,為啥聽起來這麼厲害的功能,卻沒有其他人跟進,或者說大多數人並不知道呢——因為文本異常畢竟是少見的,指標異常、海量指標異常,才是目前大多數IT團隊亟待解決的難題!

可以說:sumologic是做了一把屠龍刀……


推薦閱讀:

Topic Model Series [2]: 向Bayesian轉變
用戶超1億的語言學習App - Duolingo
10686 一次 CTC-RNN 調參經歷
什麼是自編碼 Autoencoder
集成學習(Ensemble Learning)

TAG:日志分析 | 机器学习 |