常用的日志收集系统有Syslog-ng,Scribe,Flume,当然还有ELK的LogStash.而目前互联网公司最长用的时Scribe和Flume,Scibe是Facebook开源的,但是现在已经不维护,所以不推荐使用。

Scribe

Scribe是Facebook开源的日志收集系统,在facebook内部已经得到大量的应用。Scribe是基于一个非阻断C++服务的实现。它能够从各种日志源上收集日志,存储到一个中阳存储系统。

三个角色:

  • 日志服务器
    • 为了收集日志,每一台日志服务器上都会部署一个scribe客户端,它包含两个模块agent 和 local_server
    • Agent是以tail的方式读取本地目录下的日志文件,并将数据写到本地的Local_server
    • local_server通过zookeeper定位到Center_server
  • 中心服务器
    • 中心服务器作用就是把散落在各个机器的日志统一收集起来
    • Center_server和Local_server一样,只是配置不同,通过thrift进行通信
    • center_server收到数据后,根据配置将各个category的数据发向不同的方向,比如写到HDFS或者发到Kafka等
  • 存储服务器
    • 最终存储日志的地方
    • 供计算框架以及搜索引擎框架计算使用

LogStash

Logstash是ELK中的一个工具,在ELK中起到的作用是对日志进行收集、分析、过滤。