一些系统运行时生成log文件,搭建一套系统,完成从log file中获取数据,并收集到一个统一的数据中心。

ELK

elasticsearch、logstash、kibana。曾经使用过elastic技术栈,现在看来它发展挺快的,但是这次实际使用发现,它的性能表现不太好。

logstash

logstash负责对数据进行格式化处理,类似产品有fluentd。

  • 配置简单,流水线式的配置。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    input {
    beats{
    port => 5644
    }
    }
    filter {
    grok {
    match => {
    "message" => ["%{PARAMS_APACHELOG}", "%{NO_PARAMS_APACHELOG}"]
    }
    remove_field => ["host", "timestamp", "httpversion", "@version"]
    }
    }
    output {
    elasticsearch {
    hosts => ["elastic:9200"]
    index => "logstash-test-%{type}-%{host}"
    }
    }
  • grok是一个常用且强大的处理工具,可以提取timestamp,拆分信息等。

Beats

Beats是elastic recommend 的工作方式。数据流向:Beats => logstash => elasticsearch。目前已经有了很多种类的beat,一般来说,beat放在客户端,logstash放在服务端。

  • 尝试中发现,filebeat给logstash发送消息,性能并不高。
  • 虽然beat比较轻量级,但实际上它的功能也很强大,比如filebeat还具有regex match, field filter(processor)。

Kafka

最终在Beat和Logstash之间加了一层Kafka,好处有性能提升,容灾增强,流量控制等。