欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

我的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时间排序的标志在记录的时间栏旁边有小图标,然后直接输入时模糊查询,输入带引号的时精确查询。