Logstash 是一个 Java 程序,当作为收集日志的 Agent 时,显得太臃肿了。这时需要一个轻量级的日志收集 Agent,其实可以先看看官方是否提供相关的 Agent,现在的需求是收集特定的日志文件, 官方提供了这样的工具:Filebeat,官方给 Filebeat 的定义就是轻量级的日志收集工具。
Filebeat 是基于原先 logstash-forwarder 的源码改造出来的。换句话说:Filebeat 就是新版的 logstash-forwarder,也会是 ELK Stack 在 shipper 端的第一选择。
0x02:安装 Filebeat
2.1 准备条件
- ELK简介
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:Logstash(收集)、Elasticsearch(存储 搜索)、Kibana(展示)。将这三个组合起来的技术称之为 ELKStack,所以说 ELKStack 指的是 Elasticsearch、Logstash、Kibana 技术栈的结合。
关于 Elastic Stack 的快速安装最新文档请参考官网的安装文档Installing the Elastic Stack,总结得比较完整。
代码语言:javascript复制https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
- ELK 快速安装
安装 Elasticsearch
Elasticsearch 首先需要 Java 环境,所以需要提前安装好 JDK,可以直接使用 yum 安装。也可以从 Oracle 官网下载 JDK 进行安装。开始之前要确保 JDK 正常安装并且环境变量也配置正确。
代码语言:javascript复制# 0. 安装 JDK
[root@linux-node1 ~]# yum install java
[root@linux-node1 ~]# java -version
openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b13)
OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)
# 1. 下载安装 GPG Key
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# 2. 配置 yum 仓库
vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
# 3. 安装
yum install elasticsearch -y
安装 Logstash
与安装 Elasticsearch 一样,在开始部署 Logstash 之前也需要你的环境中正确的安装的 JDK。
代码语言:javascript复制# 0. 安装 JDK
[root@linux-node1 ~]# yum install java
[root@linux-node1 ~]# java -version
openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b13)
OpenJDK 64-Bit Server VM (build 25.101-b13, mixed mode)
# 1. 下载安装 GPG Key
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# 2. 配置 yum 仓库
vim /etc/yum.repos.d/logstash.repo
[logstash-2.3]
name=Logstash repository for 2.3.x packages
baseurl=https://packages.elastic.co/logstash/2.3/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
# 3. 安装
yum install logstash -y
安装 Kibana
Kibana 是为 Elasticsearch 设计的开源分析和可视化平台。 你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互。 你可以很容易实现高级的数据分析和可视化,以图表的形式展现出来。
代码语言:javascript复制# 1. 下载安装 GPG Key
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# 2. 配置 yum 仓库
vim /etc/yum.repos.d/kibana.repo
[kibana-4.5]
name=Kibana repository for 4.5.x packages
baseurl=http://packages.elastic.co/kibana/4.5/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
# 3. 安装
yum install kibana -y
小技巧:yum install *.rpm 会验证依赖。 当 yum 下载安装软件包比较慢时,可以用其他快速下载工具下载对应的软件包,然后再安装。
使用 Cobbler 创建 ELKStack 仓库
生产环境一般不能使用外网的 YUM 仓库,可以使用 Cobbler 来创建自己的 yum 仓库。
代码语言:javascript复制[root@linux-node1 ~]# cobbler repo add --name=elasticsearch-2.x --mirror=https://packages.elastic.co/elasticsearch/2.x/centos --arch=x86_64 --breed=yum
[root@linux-node1 ~]# cobbler repo add --name=logstash-2.3 --mirror=https://packages.elastic.co/logstash/2.3/centos --arch=x86_64 --breed=yum
[root@linux-node1 ~]# cobbler repo add --name=kibana-4.5 --mirror=http://packages.elastic.co/kibana/4.5/centos --arch=x86_64 --breed=yum
[root@linux-node1 ~]# cobbler reposync
2.2 安装 Filebeat
代码语言:javascript复制# 下载并安装 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
0x03:配置 Filebeat
代码语言:javascript复制# 本例主要修改 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 测试配置文件
0x04: 启动 Filebeat
代码语言:javascript复制/etc/init.d/filebeat start
正常启动后,Filebeat 就可以发送日志文件数据到你指定的输出。
0x05:Logstash 配置 input beats 插件
代码语言:javascript复制[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 的配置。
代码语言:javascript复制souce: http://jaminzhang.github.io/