亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

日志切割咨詢

@麥可同學

我日志是按小時切割了,日志文件名前綴都一樣后綴是按日期小時區分的,在代碼里 讀取模塊,應該怎么實現這部分邏輯,求老師給個詳細的思路方案,多謝。

正在回答

2 回答

1,這個問題其實我在最后一節課有提到,如果產生了新的日志文件,你需要再讀取模塊里檢查當前文件的inode是否改變,有變化就重新打開文件句柄即可。

2,可以考慮先將日志做統一搜集,比如都發送到隊列中或者落地,然后讀取模塊消費這些數據,有很多開源的解決方案,flume?,scribe什么的。如果日志量巨大,只用于監控的話,這樣做的成本比較高,可以使用prometheus這類拉取模式的解決方案。

0 回復 有任何疑惑可以回復我~
#1

manny 提問者

檢查當前文件的inode是否改變,inode 是怎么判斷的,請老師詳細點嗎,給點提示。
2018-05-01 回復 有任何疑惑可以回復我~
#2

麥可同學 回復 manny 提問者

打開文件后,先獲取文件的inode,后續 err == io.EOF,也就是文件讀取到末尾的時候,檢查inode,是否變化,有變化則重新打開文件句柄。至于inode,可以使用syscall.Stat來獲取
2018-05-01 回復 有任何疑惑可以回復我~
#3

manny 提問者 回復 麥可同學

我明白了,就是文件一直處于打開狀態(文件內容一直不停的增加)但是inode 是不變的,如果inode變了,就說明,文件已經沒有變化了,inode就變了,這時 可以重新打開下一下小時的日志文件了。
2018-05-01 回復 有任何疑惑可以回復我~
#4

麥可同學 回復 manny 提問者

對,沒錯
2018-05-01 回復 有任何疑惑可以回復我~
#5

manny 提問者 回復 麥可同學

謝謝 @麥可同學 耐心的解答
2018-05-01 回復 有任何疑惑可以回復我~
#6

更來 回復 manny 提問者

fghvccd
2018-05-02 回復 有任何疑惑可以回復我~
#7

更來 回復 更來

好多好多話好多好多話
2018-05-02 回復 有任何疑惑可以回復我~
查看4條回復

我再問個問題,我想實現,程序在A服務器運行,而游戲日志在B服務器上,我想從A機器上直接實時的遠程讀取B服務器上的日志,請給個詳細思路方案,非常感謝。

0 回復 有任何疑惑可以回復我~
#1

軌跡盒moc

你需要寫一個傳輸服務,將B服務器上的日志先傳輸給A服務器的監控服務中。 或者可以借助 Kafka作為日志消息隊列,B => Kafka => A
2018-05-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Go并發編程案例解析
  • 參與學習       15263    人
  • 解答問題       56    個

課程帶你通過一個真實的線上日志監控系統學習Golang以及并發的編程思想。

進入課程

日志切割咨詢

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號