Linux安装ELK--Filebeat
一、Filebeat安装
1、Filebeat概述
Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。
以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。
(个人理解,filebeat是一个轻量级的logstash,当你需要收集信息的机器配置或资源并不是特别多时,使用filebeat来收集日志。日常使用中,filebeat十分稳定,笔者没遇到过宕机。)
2、Filebeat安装
直接到ELK官网下载安装filebeat:https://www.elastic.co/cn/products(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora, mac for OS X, and win for Windows).
Linux下直接下载RPM包安装即可,Windows下可下载压缩包解压进行配置。
以下以windows客户端为例:
- 在官网下载filebeat-6.1.0-windows-x86_64.zip 文件进行解压
- 配置filebeat
filebeat的配置文件主要为filebeat.yml文件,对于大多数的基本filebeat配置:
1 filebeat.prospectors: 2 3 - type: log 4 5 enabled: true 6 paths: 7 8 - /var/log/*.log 9 #- C:\inetpub\logs\LogFiles\W3SVC3\*.log
在这个例子中,探测器会收集/var/log/*.log的所有匹配文件,这意味这filebeat会收集所有的/var/log下以.log结尾的文件,此处还支持Golang Glob支持的所有模式。
在预定义级别的子目录中获取所有文件,可以使用这个配置:/var/log/*/*.log,这会找到/var/log下所有子目录中所有的以.log结尾的文件。但它并不会找到/var/log文件夹下的以.log结尾的文件。现在它还不能递归的在所有子目录中获取所有的日志文件。
如果你设置输出到elasticsearch中,那么你需要在filebeat的配置文件中设置elasticsearch的IP地址与端口。
1 #-------------------------- Elasticsearch output ------------------------------ 2 output.elasticsearch: 3 hosts: ["localhost:9200"]
如果你设置输出到logstash中,那么你需要在filebeat的配置文件中设置logstash的IP地址与端口。
1 #----------------------------- Logstash output -------------------------------- 2 output.logstash: 3 hosts: ["localhost:5044"]
配置好后,即可启动filebeat,若要测试你的配置文件,切换到你安装好的filebeat的可执行文件的目录,然后在命令行运行以下选项:./filebeat -configtest -e ,确保您的配置文件在默认配置文件目录下。
Windows下启动filebeat,需要在cmd中执行install-service-filebeat.ps1文件,将其加入到Windows服务中:
现在,filebeat已经准备好读取你的日志文件并发送到你定义的输出中了。
- Filebeat区别不同的日志源
当一台服务器上有多个日志需要抓取时,如何区分抓取的日志源呢,可以通过在配置文件filebeat.yml中添加document_type来实现:
1 filebeat.prospectors: 2 3 # Each - is a prospector. Most options can be set at the prospector level, so 4 # you can use different prospectors for various configurations. 5 - type: log 6 enabled: true 7 paths: 8 - /home/thinkgamer/test/*.log 9 document_type: test_log 10 11 - type: log 12 enabled: true 13 paths: 14 - /var/log/*.log 15 document_type: auth_log
这里得document_type 就是对应filter中对应的log的type,在logstash的解析文件中可以这样写
1 input { 2 beats { 3 port => 5044 4 } 5 } 6 7 filter { 8 if [type] == 'auth_log'{ 9 } 10 else if [type] == 'test_log'{ 11 } 12 } 13 14 output { 15 elasticsearch { 16 hosts => ["http://localhost:9200"] 17 index =>"%{type}-%{+YYYY.MM.dd}" 18 } 19 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!