常用的日志收集系統(tǒng)有Syslog-ng,Scribe,F(xiàn)lume,當然還有ELK的LogStash.而目前互聯(lián)網(wǎng)公司最長用的時Scribe和Flume,Scibe是Facebook開源的,但是現(xiàn)在已經(jīng)不維護,所以不推薦使用。

Scribe

Scribe是Facebook開源的日志收集系統(tǒng),在facebook內(nèi)部已經(jīng)得到大量的應用。Scribe是基于一個非阻斷C++服務的實現(xiàn)。它能夠從各種日志源上收集日志,存儲到一個中陽存儲系統(tǒng)。

三個角色:

  • 日志服務器
    • 為了收集日志,每一臺日志服務器上都會部署一個scribe客戶端,它包含兩個模塊agent 和 local_server
    • Agent是以tail的方式讀取本地目錄下的日志文件,并將數(shù)據(jù)寫到本地的Local_server
    • local_server通過zookeeper定位到Center_server
  • 中心服務器
    • 中心服務器作用就是把散落在各個機器的日志統(tǒng)一收集起來
    • Center_server和Local_server一樣,只是配置不同,通過thrift進行通信
    • center_server收到數(shù)據(jù)后,根據(jù)配置將各個category的數(shù)據(jù)發(fā)向不同的方向,比如寫到HDFS或者發(fā)到Kafka等
  • 存儲服務器
    • 最終存儲日志的地方
    • 供計算框架以及搜索引擎框架計算使用

LogStash

Logstash是ELK中的一個工具,在ELK中起到的作用是對日志進行收集、分析、過濾。