1 继续安装ELK
上文已经安装了ELK三大件中的两个软件elasticsearch和kibana。 在此基础上,在同一个机器上再安装logstash, 完成三大件的安装。
-
(非root用户)登录linux,下载最新的logstash安装包 下载地址https://www.elastic.co/cn/downloads/elasticsearch 。然后解压即可
cd /home/zyplanke/elk curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.8.3.tar.gz tar -xvf logstash-6.8.3.tar.gz
2 安装filebeat
filebeat通常与日志源服务器放同一台机器上。因此我们在另一台跑业务(有业务日志)的Linux机器上安装filebeat。
如果是收集业务系统的日志,确保filebeat对日志文件具有读权限。
-
登录业务系统(通常可使用业务系统的用户)载最新的filebeat安装包 下载地址https://www.elastic.co/cn/downloads/elasticsearch
cd /home/zyplanke/elk curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.3-linux-x86_64.tar.gz tar -xvf filebeat-6.8.3-linux-x86_64.tar.gz
3 配置日志文件采集
filebeat从日志源采集日志数据,通过网络发给logstash,logstash将数据进行处理后发给elasticsearch。
前面已经将elasticsearch和kibana,下面分别配置filebeat和logstash。
3.1 配置filebeat
编辑filebeat.yml, 内容如下
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
fields:
logcategory: oslog
#output.elasticsearch: 由于我们filebeat不直接发给elasticsearch,所有注释本配置。
# hosts: ["localhost:9200"]
output.logstash:
hosts: ["192.168.43.201:5044"]
上面的filebeat配置:
- input表示,filebeat从指定的目录和文件作为采集的日志源(路径和文件名支持星号模糊匹配。 注意必须有被采集文件的读权限)。必须enabled为true,否则不生效。 可以配置多个input。
- 而fields是自己定义的字段(并赋值),方便后续处理。
- output表示,filebeat将采集的日志(加上fileds、tag及其他属性)后,将起传输到logstash
3.2 配置logstash
在config目录中,以复制logstash-sample.conf样例文件,得到文件logstash_file.conf。
编辑config/logstash_file.conf,内容如下
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://192.168.43.201:9200"]
index => "%{[fields][logcategory]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
上面logstash_file.conf配置的:
- input:logstash从filebeat接收数据的本地端口。
- filter(可选):进行转换改变
- output:logstash结果传输到哪里(这里定义为传输到elasticsearch,若elasticsearch集群有多个节点则hosts内容应多个)。同时配置了索引名。注意这里使用了filebeat自定义字段。
3.3 启动
- 启动logstash。
./logstash -f ../config/logstash_file.conf
启动需要多等一小会。
- 启动filebeat。 ./filebeat -e -c 配置文件名 -e输出到标准输出,默认输出到syslog和logs下 -c 指定配置文件
./filebeat -e -c filebeat.yml
默认filebeat会在当前目录创建data目录,里面存放了每个采集文件的名字和坐标(偏移量),这样可以在filebeat重启后支持断点续传。
如果希望filebeat全部重新传输,则可以把filebeat下整个data目录删除(可能在elasticsearch中也要删除。),让filebeat觉得从来都没有传输过。
附:为了便于filebeat的启停管理,写了一个名为:run_filebeat.sh的Shell脚本供使用
##################################################################################
# desc: FileBeat运行管理脚本
###################################################################################
CURR_PWD=`pwd -P`
Usage()
{
echo "*******************************************************"
echo " Usage: "
echo