十二赞日志收集与报警系统一览
先快速介紹一下十二贊的日志收集系統(tǒng):十二贊的日志收集系統(tǒng),分為兩塊,一塊是線上系統(tǒng)的各種報(bào)錯(cuò)、異常的日志收集,主要是各種線上代碼運(yùn)行期間產(chǎn)生,我們稱之為log-collect,一塊是用戶行為操作的日志收集,主要是由各個(gè)業(yè)務(wù)系統(tǒng)根據(jù)用戶的行為來上報(bào),比如用戶A訪問了xx頁(yè)面,用戶B收藏了某某商品等,我們稱之為eventdb。
基于這兩塊的日志收集,我們實(shí)現(xiàn)了一些自己非常自豪的特性。比如,基于log-collect,我們做到了能夠主動(dòng)去發(fā)現(xiàn)問題,搶在大多數(shù)客戶發(fā)現(xiàn)異常之前,就把問題處理掉,從而做到不斷地提高Saas系統(tǒng)的可用率和穩(wěn)定性;基于eventdb,我們能做到非常完善的行為收集,將我們的返利模塊、分銷模塊的準(zhǔn)確度、實(shí)時(shí)性大幅度提高。
下面我們介紹一下系統(tǒng)的架構(gòu)。
從需求上,我們認(rèn)為log-collect是為了及時(shí)發(fā)現(xiàn)問題,并馬上解決掉。但是這些日志,在我們解決掉問題之后,是不需要再保留這個(gè)日志的。比如,舉個(gè)例子,用戶注冊(cè)的時(shí)候,可能輸了一個(gè)12012345678的號(hào)碼,這個(gè)號(hào)碼是不對(duì)的,導(dǎo)致我們的驗(yàn)證短信發(fā)不出去,短信模塊就會(huì)報(bào)錯(cuò)。我們的log-collect會(huì)收集到這條報(bào)錯(cuò)日志,馬上告警。開發(fā)同學(xué)收到告警通知時(shí),就馬上去處理這個(gè)問題,用戶輸入120這個(gè)號(hào)段時(shí),提示用戶該號(hào)段是不被支持的,以后就再也不需要處理這個(gè)了,因?yàn)檫@條告警日志,我們是不存的,只存檔15天就丟棄掉。
但是對(duì)于eventdb,我們的目標(biāo)是為了對(duì)這些數(shù)據(jù)做分析,這些行為一般會(huì)跟財(cái)務(wù)相關(guān),比如用戶A通過用戶B分享的鏈接進(jìn)到了系統(tǒng),5分鐘之后有戶A購(gòu)買了商品付款了200元,2天后用戶A退掉了其中的80元。這些數(shù)據(jù),會(huì)影響到商家給用戶B結(jié)算cps款項(xiàng)。類似這些數(shù)據(jù),我們是永久存儲(chǔ)的,不會(huì)拋棄。同時(shí),這類數(shù)據(jù),我們是要在保證準(zhǔn)確性的基礎(chǔ)上不斷提高實(shí)時(shí)性的。所以對(duì)這類數(shù)據(jù),我們有兩條線來處理,一條是在線實(shí)時(shí),一條是離線的一個(gè)小時(shí)跑一次數(shù)據(jù)的。
log-Collect
基于這種差異,我們?cè)诩軜?gòu)上也有不同。下面是log-collect的架構(gòu)圖:
https://ylpicture.oss-cn-beij...
我們每一臺(tái)服務(wù)端機(jī)器上都有一個(gè)live tail,實(shí)時(shí)監(jiān)控日志文件,一旦日志文件有新的寫入,就立刻發(fā)送到http的一個(gè)日志網(wǎng)關(guān)。這個(gè)網(wǎng)關(guān)就立刻把這條件日志推送給一個(gè)廣播服務(wù)器,并寫入到一個(gè)數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)會(huì)清掉7天之前的數(shù)據(jù)。)這個(gè)數(shù)據(jù)丟給廣播服務(wù)器了之后,會(huì)在特定的頻道進(jìn)行廣播。我寫了一些客戶端,訂閱廣播,根據(jù)日志內(nèi)容的不同,將日志發(fā)給倍洽上不同的告警頻道。(關(guān)于bearychat/中文名倍洽,大家可以自行去其官網(wǎng)上了解)。手機(jī)上裝了倍洽,就可以隨時(shí)接受告警通知了:
https://ylpicture.oss-cn-beij...
eventDB
下圖是eventDB的架構(gòu)圖:
https://ylpicture.oss-cn-beij...
與log-collect相同的,收到新的行為事件后,網(wǎng)關(guān)也會(huì)在一個(gè)特定的頻道進(jìn)行廣播。不同的有兩點(diǎn),一點(diǎn)是另一條鏈路先把行為事件寫入到阿里云的oss存儲(chǔ)起來,然后寫了crontab每小時(shí)、每天定期從oss文件里導(dǎo)入到eventDB這個(gè)數(shù)據(jù)庫(kù);另一點(diǎn)是廣播客戶端工作的事情也變成了實(shí)時(shí)寫入到eventDB這個(gè)數(shù)據(jù)庫(kù)。
在事件收集上,也不一樣,log-collect是在所有的服務(wù)器上部署了LiveTail來從日志文件中讀取,而eventDB是需要各個(gè)業(yè)務(wù)系統(tǒng)自己向日志網(wǎng)關(guān)來匯報(bào)事件的。
存入數(shù)據(jù)庫(kù)之后,后續(xù)就是再對(duì)這些數(shù)據(jù)進(jìn)行分析,查找用戶的來源渠道,計(jì)算傭金等等操作了。
【原文鏈接】
總結(jié)
以上是生活随笔為你收集整理的十二赞日志收集与报警系统一览的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net面试集合
- 下一篇: 深入理解Java的三种工厂模式