自制單機(jī)日志解決方案 5. Talog 的應(yīng)用(V.Talog.Server 的功能介紹)
在本項(xiàng)目立項(xiàng)之時(shí),我的目標(biāo)就是做一個(gè)單機(jī)日志解決方案,不僅要有日志存儲(chǔ)、查詢功能,還要能記錄 PageView、Metrics。前面介紹的內(nèi)容只是說(shuō)明了日志存儲(chǔ)、查詢是如何運(yùn)作的,并還未達(dá)到最終的目標(biāo),而 V.Talog.Server 就是基于 Talog 開發(fā)的最終項(xiàng)目成品。
V.Talog.Server
V.Talog.Server 的目標(biāo)是希望做成一個(gè)接口平臺(tái),通過(guò)調(diào)用接口來(lái)保存日志、記錄 PageView、記錄 Metrics,同時(shí)還能集成一個(gè)后臺(tái)管理頁(yè)面,以供查詢數(shù)據(jù)。
目前 V.Talog.Server 具有以下幾個(gè)功能:
監(jiān)聽本地日志文件,該功能適用于將 Talog 與其他服務(wù)部署在同一臺(tái)機(jī)器的情況
日志索引、日志查詢
記錄、查看 PageView
記錄、查看 Metrics
監(jiān)聽本地日志文件
考慮到用戶可能已經(jīng)有一些服務(wù)日志存儲(chǔ)在本地文件中,因此 V.Talog.Server 添加了一個(gè)監(jiān)聽本地日志文件的功能。要啟用該功能,只需要在 appsettings.json 文件中添加以下配置。
Path 代表需要監(jiān)聽的目錄;Filter 用于篩選出想要監(jiān)聽的文件,本質(zhì)上為正則表達(dá)式,例如以上配置只監(jiān)聽了 access.log、error.log 兩個(gè)文件,如果想要監(jiān)聽所有文件可以配置.*
;Tags 用于配置日志所對(duì)應(yīng)的標(biāo)簽;Type 用于標(biāo)識(shí)日志為單行或者多行,0 代表單行日志,1 代表多行日志;還有個(gè) Head 字段,該字段用于指定多行日志的自定義頭。
對(duì)于新加入監(jiān)聽列表的文件,V.Talog.Server 會(huì)將整個(gè)文件的日志都進(jìn)行一次索引,并且記錄下文件的末尾位置。當(dāng)文件有發(fā)生變化時(shí),V.Talog.Server 會(huì)從之前記錄的位置繼續(xù)讀取日志,而不會(huì)從頭開始讀取,就算程序中斷了也是如此,因?yàn)?V.Talog.Server 會(huì)將每個(gè)文件的已讀位置記錄在文件中。
日志索引、日志查詢
V.Talog.Server 作為一個(gè)日志解決方案,提供了 API 接口以供其他程序上傳日志,也提供了一個(gè)后臺(tái)管理頁(yè)面,以供用戶在遇到問(wèn)題時(shí),可以快速查看日志。
POST /log/index
日志索引接口
POST /log/search?page=1&perPage=10
日志查詢接口,支持分頁(yè),page 從 1 開始
后臺(tái)頁(yè)面查詢?nèi)罩?/h1>

記錄、查看 PageView
PageView 也是同樣的,提供一個(gè)上傳數(shù)據(jù)的 API 接口,以及一個(gè)后臺(tái)查看頁(yè)面。
GET /metric/pg/add?index=xxx&page=xxx&user=xxx
Page View 接口,index、page 都是必傳參數(shù),user 非必傳,user 用于統(tǒng)計(jì) UV
后臺(tái)頁(yè)面查看 PageView

記錄、查看 Metrics
GET /metric/add?index=xxx&name=xxx&value=xxx
指標(biāo)接口,name 為指標(biāo)名稱(如 cpu、memory),value 為指標(biāo)值
后臺(tái)頁(yè)面查看 Metrics

最后
本文列舉了 V.Talog.Server 的功能,功能較少但是對(duì)于我個(gè)人來(lái)說(shuō)已經(jīng)夠用了,我一開始也提到過(guò),我是在看到了其他項(xiàng)目功能特別簡(jiǎn)潔,才萌生自己做一個(gè)簡(jiǎn)易的日志解決方案。若是像 elasticsearch 那種功能強(qiáng)大的項(xiàng)目,我肯定是做不來(lái)分毫的。下一篇文章將會(huì)介紹一下 V.Talog.Server 的搭建過(guò)程。