我的filebeat之旅
程序员文章站
2022-05-26 15:15:03
...
一.怎么接触到filebeat?它干嘛的?
在做分布式日志收集elk的时候,使用logstash来采集日志。由于logstash可以对文件进行过滤。所以会比较重,而我的服务器只有两三台,感觉已经不必要使用logstash进行缓存或者过滤。甚至有人建议filebeat发送到logstash然后再给es,其实都可以,或者其中加kafka、redis等这些都是比较大型的项目才会用到。
filebeat的本质是使用tail -f 来监控路径下的文件变化,然后通过网络协议传输到目标(es、logstash等)上。设计比较简单,虽然功能单一,但是稳定高效。我这里使用之直接发送到我的es上。
二.讲一讲我的项目环境
三台服务器:A、B、C,es单独搭建在服务器D上。现在在A、B、C上都搭建filebeat,然后将日志送给D。这里还需要提一下版本问题:最好是filebeat的版本和es对应,我这里选的都是7.6.2
三.开始搭建filebeat
1.下载需要的版本
2.安装解压
3.我这里新建了一个配置文件(myconf.yml)。
发现网络上找到的好多配置都是不完整的,所以全部分享下我的配置。然后由于filebeat自动生成的es索引格式是"filebeat-版本-日期-序号",我想要改成自定义的索引所以加了改造。
filebeat.inputs:
- type: log
enabled: true
# 日志地址(本机)。*表示匹配任意
paths:
- /app/logs/pavin/*/*.log
# 以json格式进行传输
json.keys_under_root: true
json.overwrite_keys: true
output.elasticsearch:
# es的地址
hosts: ["10.204.???.???:9200"]
# 自定义es的索引名称。后面的变量表示会根据日期来进行创建
index: "pavin-log-%{+YYYY.MM.dd}"
#以下配置禁用filebeat-version-yyyy.mm.dd-xxxx来做索引,而用我们自己的
#取个名字
setup.template.name: "pavin-log"
#这是指定分析索引为-开头的所有
setup.template.pattern: "pavin-log-*"
#禁用自定义模板
setup.template.enabled: false
#覆盖原来的模板
setup.template.overwrite: true
#停用ilm 这一步很重要
setup.ilm.enabled: false
4.启动filebeat(在启动脚本的路径下)
nohup ./filebeat -e -c myconf.yml &
5.稍等一会观察是否启动成功。(还可以查看nohup.out的启动日志)
ps -ef|grep filebeat
四.kibana使用这个filebeat的日志
kibana新为这个索引创建模型,然后就可以在检索里面选中然后操作了。kibana时间排序的标志在记录的时间栏旁边有小图标,然后直接输入时模糊查询,输入带引号的时精确查询。
上一篇: 自定义List分页工具类
下一篇: vim常用参数