服务器日志文件收集方案

Filebeat是一个开源的文本日志收集器,采用go语言开发,它重构了logstash采集器源码,安装在日志产生服务器上来监视日志目录或者特定的日志文件,并把他们发送到logstash、elasticsearch以及kafka上。Filebeat是代替logstash-forwarder的数据采集方案,原因是logstash运行在jvm上,对服务器的资源消耗比较大(Flume也是如此)。正因为Filebeat如此轻量级,因此不要奢望它能在日志收集过程中做更多清洗和转换的工作,它只负责一件事,就是高效可靠的传输日志数据,至于清洗和转换,可以在后续的过程中进行。

Filebeat的优势

  1. 能够读取并转发日志行,如果出现中断,待恢复正常后,从中断前停止的位置开始。
  2. 可以与Logstash和Kibana结合。
  3. 可以在Kuberenates、Docker容器中部署。
  4. 使用背压敏感协议,如果Logstash正忙于处理数据,则会告诉Filebeat减慢读取速度。
  5. 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解析日志

验证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"
        }
    }
}

results matching ""

    No results matching ""