一些系统运行时生成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
19input {
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,好处有性能提升,容灾增强,流量控制等。