filebeat读取本地文件到ELK简单配置
前言
阅读本文前请确保已经部署ELK,本文是基于window server
如未部署请参考window环境下搭建简单ELK日志收集
相比较之前用logback + redis + elk 收集日志的方式,filebeat的方式可以减少对系统的耦合性,不会对运行的系统造成干扰。
依赖组件filebeat-5.6.14-windows-x86_64
官网下载地址 最新版本6.6
filebeat官方下载
5.6到6.6 跨度太大,如果elk使用6.X的版本需要注意下参数配置,有些参数在6.X的版本已经取消了
- 配置filebeat
下载下来之后解压,修改配置文件 filebeat.yml
配置文件里面其实已经有详细的说明,5.X跟6.X的版本不太一样,不过测试的时候发现5.X的配置在6.X的filebeat也能用,只是启动会提示你该参数已经过时,建议更换。
首先需要定义输入源和输出源
输入源那边定义文件夹地址,支持读取单个文件或者是多个文件,输出可以输出到redis、logstash和es
可以参考官网的配置:filebeat配置
filebeat.prospectors:
# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- c:\programdata\elasticsearch\logs\*.log
# Optional additional fields. These field can be freely picked
# to add additional information to the crawled log files for filtering
# 这边这个自已定参数名,例如这边定义了个type名字叫service-debug
# 在logstash那边可以用这个type参数作为es的索引名称
fields:
type: service-debug
# level: debug
# review: 1
##-------------------------- es output ------------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
##-------------------------- logstash output -----------------------------
output.logstash:
# The Logstash hosts
hosts: ["127.0.0.1:5044"]
如果需要通过redis输出,只需要把输出配置改成用redis
output.redis:
hosts: ["127.0.0.1"]
port: 6379
#password: "test"
db: 2
timeout: 5
key: "service-debug"
- 修改logstash配置
如果是filebeat直接输出logstash,配置如下,如果是通过redis,请参考上面文章
input{
beats {
port => 5044
}
}
filter {
}
output {
if [fields][type]=="service-debug" {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "service-debug-%{+YYYY.MM.dd}"
}
}
stdout{}
}
配置完成后启动filebeat,启动参数 filebeat.exe -e -c filebeat.yml
启动完成后,当日志文件有发生变化时候,filebeat会把相关日志输出到logstash
END
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。