ELK-配置使用 Filebeat

为什么使用 Filebeat

Logstash 是一个 Java 程序,当作为收集日志的 Agent 时,显得太臃肿了。
之前听过一个公司(斗鱼)使用 Logstash 作为日志收集 Agent 时,资源占用好像比业务进程占用还多!   这时我们需要一个轻量级的日志收集 Agent,上面说的那家公司的处理方法是自己写了一个 Agent。
其实我们可以先看看官方是否提供相关的 Agent,现在我的需求是收集特定的日志文件, 官方提供了这样的工具:Filebeat,官方给 Filebeat 的定义就是轻量级的日志收集工具。


Filebeat 是基于原先 logstash-forwarder 的源码改造出来的。
换句话说:Filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。

1. 安装 Filebeat

1.1 准备条件

ELK 环境应该部署好,这在之前的文章已经配置过了。

1.2 安装 Filebeat


# 下载并安装 Filebeat 软件包

curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.3.1-x86_64.rpm
rpm -ivh filebeat-1.3.1-x86_64.rpm

2. 配置 Filebeat


# 本例主要修改 2 部分参数

[root@linux-node2 conf.d]# egrep -v "#|^$" /etc/filebeat/filebeat.yml
filebeat:
  prospectors:
    -
      paths:
        - /var/log/nginx/access_log_json.log		# 定义日志文件的路径,可以使用 Shell GLOB 匹配
      input_type: log
  registry_file: /var/lib/filebeat/registry
output:
  logstash:			# output 处配置输出到 logstash,其实也可以直接输出到 ES,但不能对日志进行额外处理
    hosts: ["192.168.56.11:5044"]
shipper:
logging:
  files:

可以在这样在 “./filebeat -configtest -e” 前台运行 Filebeat 测试配置文件

3. 启动 Filebeat

/etc/init.d/filebeat start

正常启动后,Filebeat 就可以发送日志文件数据到你指定的输出。

4. Logstash 配置 input beats 插件


[root@linux-node1 ~]# cat /etc/logstash/conf.d/filebeat.conf 
input {
  beats {
    port => 5044			# Logstash 开启 5044 端口用于接收上面 Filebeat 发送过来的数据
    type => "logs"
    codec => "json"
  }
}

output {
  redis {
    host => "192.168.56.12"
    port => 6379
    db => 6
    data_type => "list"
    key => "filebeat"
  }
}

这样就完成了 Filebeat 收集日志文件数据并发送到 Logstash 的配置。

Ref

Filebeat - Lightweight Shipper for Log Data
Filebeat Reference
filebeat