服务器日志文件收集方案
Filebeat是一个开源的文本日志收集器,采用go语言开发,它重构了logstash采集器源码,安装在日志产生服务器上来监视日志目录或者特定的日志文件,并把他们发送到logstash、elasticsearch以及kafka上。Filebeat是代替logstash-forwarder的数据采集方案,原因是logstash运行在jvm上,对服务器的资源消耗比较大(Flume也是如此)。正因为Filebeat如此轻量级,因此不要奢望它能在日志收集过程中做更多清洗和转换的工作,它只负责一件事,就是高效可靠的传输日志数据,至于清洗和转换,可以在后续的过程中进行。
Filebeat的优势
- 能够读取并转发日志行,如果出现中断,待恢复正常后,从中断前停止的位置开始。
- 可以与Logstash和Kibana结合。
- 可以在Kuberenates、Docker容器中部署。
- 使用背压敏感协议,如果Logstash正忙于处理数据,则会告诉Filebeat减慢读取速度。
- Kibana实现可视化监控。
使用Logstash解析日志
输入
input {
kafka{
bootstrap_servers => ["127.0.0.1:9092"]
group_id => "logstash"
auto_offset_reset => "smallest"
consumer_threads => 5
decorate_events => "true"
topics => ["filebeat"]
type => "log"
}
}
过滤
filter {
grok {
match => {"message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] %{LOGLEVEL:level} (?<info>([\s\S]*))"}
}
}
使用grok解析日志
输出
output {
if [level] == "INFO" {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "info"
timeout => 300
#user => "elastic"
#password => "changeme"
}
}
if [level] == "WARN" {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "warn"
timeout => 300
#user => "elastic"
#password => "changeme"
}
}
}