Filebeat详细介绍,下载和启动,日志读取和模块设置等,2024年最新2024年大数据开发开发实战


       然后我们在控制台输入hello,就能看到我们会有一个json的输出,是通过读取到我们控制台的内容后输出的,内容如下



{
“@timestamp”: “2023-05-31T22:57:58.700Z”,
“@metadata”: {#元数据信息
“beat”: “filebeat”,
“type”: “_doc”,
“version”: “8.8.1”
},
“log”: {
“offset”: 0,
“file”: {
“path”: “”
}
},
“message”: “hello”,#元数据信息
“input”: {#控制台标准输入
“type”: “stdin”#元数据信息
},
“ecs”: {
“version”: “8.0.0”
},
“host”: {
“name”: “elk-node1”
},
“agent”: {#版本以及主机信息
“id”: “5d5e4b99-8ee3-42f5-aae3-b0492d723730”,
“name”: “elk-node1”,
“type”: “filebeat”,
“version”: “8.8.1”,
“ephemeral_id”: “24b4fd16-5466-4d7e-b4b8-b73d41f77de0”
}
}


### 读取文件


       再次创建一个文件,叫 shengxia-log.yml,然后在文件里添加如下内容



filebeat.inputs:

  • type: log
    enabled: true
    paths:
    • /opt/elk/logs/*.log
      setup.template.settings:
      index.number_of_shards: 3
      output.console:
      pretty: true
      enable: true

添加完成后,我们在到下面目录创建一个日志文件



创建文件夹

mkdir -p /opt/elk/logs

进入文件夹

cd /opt/elk/logs

追加内容

echo “hello world” >> test.log


然后再次启动filebeat



./filebeat -e -c shengxia-log.yml


能够发现,它已经成功加载到了我们的日志文件 test.log


![在这里插入图片描述](https://img-blog.csdnimg.cn/d664d7f496644b86806252b7e8cb8ae9.png)


同时我们还可以继续往文件中追加内容



echo “are you ok ?” >> a.log


追加后,我们再次查看filebeat,也能看到刚刚我们追加的内容


![在这里插入图片描述](https://img-blog.csdnimg.cn/0a5cbe54f29c459aa04d2e8533ee54c8.png)


       可以看出,已经检测到日志文件有更新,立刻就会读取到更新的内容,并且输出到控制台。


### 自定义字段


       当我们的元数据没办法支撑我们的业务时,我们还可以自定义添加一些字段



filebeat.inputs:

  • type: log
    enabled: true
    paths:
    • /opt/elk/logs/*.log
      tags: [“web”, “test”] #添加自定义tag,便于后续的处理
      fields: #添加自定义字段
      from: web-test
      fields_under_root: true #true为添加到根节点,false为添加到子节点中
      setup.template.settings:
      index.number_of_shards: 3
      output.console:
      pretty: true
      enable: true

添加完成后,重启 filebeat



./filebeat -e -c shengxia-log.yml


然后添加新的数据到 test.log中



echo “Today is nice” >> test.log


我们就可以看到字段在原来的基础上,增加了两个


![在这里插入图片描述](https://img-blog.csdnimg.cn/06fb75b8efe44aef882b8a8647f97a1b.png)


#### 输出到ElasticSearch


我们可以通过配置,将修改成如下所示



filebeat.inputs:

  • type: log
    enabled: true
    paths:
    • /opt/elk/logs/*.log
      tags: [“web”, “test”]
      fields:
      from: web-test
      fields_under_root: false
      setup.template.settings:
      index.number_of_shards: 1
      output.elasticsearch:
      hosts: [“192.168.40.150:9200”,“192.168.40.137:9200”,“192.168.40.138:9200”]

启动成功后,我们就能看到它已经成功连接到了es了  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/93053b50c5d24556a79152fa283eabd4.png)


然后我们到刚刚的 logs文件夹向 a.log文件中添加内容



echo “Elastic test” >> test.log


在ES中,我们可以看到,多出了一个 filebeat的索引库


![在这里插入图片描述](https://img-blog.csdnimg.cn/b4db9c72dab34b7197f6577e7d62abe5.png)


然后我们浏览对应的数据,看看是否有插入的数据内容  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0a0ee52c166640f682ae51eaa0407f00.png)


### Filebeat工作原理


       Filebeat主要由下面几个组件组成: harvester、prospector 、input


#### harvester


* 负责读取单个文件的内容
* harvester逐行读取每个文件(一行一行读取),并把这些内容发送到输出
* 每个文件启动一个harvester,并且harvester负责打开和关闭这些文件,这就意味着harvester运行时文件描述符保持着打开的状态。
* 在harvester正在读取文件内容的时候,文件被删除或者重命名了,那么Filebeat就会续读这个文件,这就会造成一个问题,就是只要负责这个文件的harvester没有关闭,那么磁盘空间就不会被释放,默认情况下,Filebeat保存文件打开直到close\_inactive到达


#### prospector


* prospector负责管理harvester并找到所有要读取的文件来源
* 如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester
* Filebeat目前支持两种prospector类型:log和stdin
* Filebeat如何保持文件的状态


	+ Filebeat保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中
	+ 该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
	+ 如果输出(例如ElasticSearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可以用时继续读取文件。
	+ 在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebat时,将使用注册文件的数量来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取
	+ 文件状态记录在data/registry文件中


#### input


* 一个input负责管理harvester,并找到所有要读取的源
* 如果input类型是log,则input查找驱动器上与已定义的log路径匹配的所有文件,并为每个文件启动一个harvester
* 每个input都在自己的Go例程中运行
* 下面的例子配置Filebeat从所有匹配指定的log模式的文件中读取行



filebeat.inputs:

  • type: log
    paths:
    • /var/log/*.log
    • /var/path2/*.log

#### 启动命令



./filebeat -e -c shengxia-es.yml
./filebeat -e -c shengxia-es.yml -d “publish”


#### 参数说明


* -e:输出到标准输出,默认输出到syslog和logs下
* -c:指定配置文件
* -d:输出debug信息


## 部署Nginx


部署教程可以参考这篇博客:[Nginx的安装启动和停止\_]( )


启动完成后,我们通过下面命令,就可以获取到nginx中的内容了



[root@elk-node1 sbin]# tail -f /usr/local/nginx1/logs/access.log
192.168.40.1 - - [01/Jun/2023:05:13:23 +0800] “GET / HTTP/1.1” 200 615 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43”
192.168.40.1 - - [01/Jun/2023:05:13:23 +0800] “GET /favicon.ico HTTP/1.1” 404 555 “http://192.168.40.150:8080/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43”


### 读取Nginx中的配置文件


创建一个 nginx-log.yml配置文件,启动nginx的模块功能



./filebeat modules enable nginx


nginx-log.yml配置文件内容



filebeat.inputs:

  • type: log
    enabled: true
    paths:
    • /usr/local/nginx1/logs/*.log #nginx日志存放路径
      tags: [“nginx”]
      fields_under_root: false
      setup.template.settings:
      index.number_of_shards: 1
      output.elasticsearch:
      hosts: [“192.168.40.150:9200”,“192.168.40.137:9200”,“192.168.40.138:9200”]

       可以看到,在message中已经获取到了nginx的日志,但是,内容并没有经过处理,只是读取到原数据。


![在这里插入图片描述](https://img-blog.csdnimg.cn/dd24e062302f455c9d06125e85ded471.png)


### Module


       要想实现日志数据的读取以及处理都是自己手动配置的,其实,在Filebeat中,有大量的Module,可以简化我们的配置,直接就可以使用,如下:  
 查看模块列表



./filebeat modules list


       你可以看到,内置了很多的module,但是都没有启用,如果需要启用需要进行`enable`操作:



#启动
./filebeat modules enable nginx
#禁用
./filebeat modules disable nginx


### nginx module 配置


我们到下面的目录,就能看到module的配置了



进入到module目录

cd modules.d/
#查看文件
vim nginx.yml


得到的文件内容如下所示




**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/af627f44155f44b4ea36d0104fcebb69.png)
![img](https://img-blog.csdnimg.cn/img_convert/622292b28a80e39df9362b1ae90fb7ac.png)
![img](https://img-blog.csdnimg.cn/img_convert/26d6b1781e3e3c23289767aeb855f747.png)
![img](https://img-blog.csdnimg.cn/img_convert/5817e3b75a8b9761b236326ed8264403.png)
![img](https://img-blog.csdnimg.cn/img_convert/a35d22bde19f92a5b0acbbed2ab1a381.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
![img](https://img-blog.csdnimg.cn/img_convert/99f723ff59dce3cfe12044a6dc9a5aab.png)

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

)]
[外链图片转存中...(img-rYBooedF-1712960851958)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
[外链图片转存中...(img-7SpDap2e-1712960851958)]

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值