ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

linux-tutorial 实战:Elastic 技术栈 Filebeat 日志采集器安装、配置与原理全解

linux-tutorial 实战:Elastic 技术栈 Filebeat 日志采集器安装、配置与原理全解 linux-tutorial 实战Elastic 技术栈 Filebeat 日志采集器安装、配置与原理全解【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial导读本文以本仓库 docs/linux/soft/elastic/elastic-beats.md 为主线系统讲解 Elastic 技术栈中的数据中转代理 Beats重点为 Filebeat——从四种主流 Beats 类型的选型、Filebeat 的轻量级设计思想到 tar 包安装、filebeat.yml核心配置项、启动命令、预构建模块再到 harvester / prospector / 注册表文件三层工作原理。同时结合仓库内 codes/linux/soft/elk/ 下的真实配置与一键脚本给出可直接落地的 ELK 日志采集实战方案。读完本文你将能够独立完成 Filebeat 的安装部署、日志接入直连 Elasticsearch 或经 Logstash 中转、多行日志处理、模块化采集与仪表板加载。一、Beats 是什么安装在服务器上的数据中转代理Beats 是 Elastic 公司提供的安装在服务器上的数据中转代理data shipper。它的定位是单一用途、轻量级的采集端负责从各业务服务器采集数据并将数据直接传输到 Elasticsearch或传输到 Logstash由 Logstash 做进一步加工后再写入 Elasticsearch。在 Elastic 技术栈的整体架构中数据流向通常为业务服务器日志 → BeatsFilebeat → Logstash可选负责解析/过滤 → Elasticsearch存储/检索 → Kibana可视化Beats 并不是 ELK 架构中不可或缺的一环可参考 docs/linux/soft/elastic/elastic-quickstart.md 中的架构说明但当采集端数量众多、采集类型复杂时引入 Beats 可以大幅降低 Logstash 与 Elasticsearch 的负载并简化日志收集的部署方式。Beats 的常见类型Beats 有多种类型可以根据实际应用需要选择合适的类型。常用类型如下类型用途Packetbeat网络数据包分析器提供应用程序服务器之间交换的事务信息网络协议级监控Filebeat从服务器上读取并发送日志文件Metricbeat服务器监视代理程序定期从服务器上运行的操作系统和服务收集指标CPU、内存等Winlogbeat提供 Windows 事件日志采集说明社区还提供了更多 Beats 类型即 community-beats可覆盖数据库、消息队列、安全等更多场景。鉴于实际工作中主要应用 Filebeat后续内容仅深入介绍 Filebeat。Filebeat 的作用相比 LogstashFilebeat 更加轻量化专为日志文件采集而设计。其核心特性断点续传有状态读取在任何环境下应用程序都有停机的可能性。Filebeat 读取并转发日志行时如果中断则会记住所有事件恢复联机状态时所在的位置恢复后从上次记录点继续读取避免重复或丢失。内置通用模块Filebeat 带有内部模块auditd、Apache、Nginx、System 和 MySQL可通过一个指定命令来简化通用日志格式的收集、解析和可视化。背压保护不使管道超负荷Filebeat 向 Logstash 传输数据时如果 Logstash 忙于处理数据会通知 Filebeat 放慢读取速度一旦拥塞得到解决Filebeat 将恢复到原来的速度并继续传播。这一机制有效避免采集端压垮处理端。二、安装 Filebeat2.1 tar 包安装通用方式Unix / Linux 系统建议使用 tar 包方式安装因为比较通用不依赖发行版包管理器wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.1.1-linux-x86_64.tar.gz tar -zxf filebeat-6.1.1-linux-x86_64.tar.gz解压后即得到filebeat-6.1.1-linux-x86_64目录其中的可执行文件filebeat与默认配置文件filebeat.yml即为我们操作的对象。2.2 仓库内的一键安装脚本仓库提供了两个可直接参考的安装脚本codes/linux/soft/elk/install_filebeat.shfilebeat 5.6.1 / 6.1.3 / 6.3.2 版本选择式安装脚本。脚本会以 root 权限完成下载源码包 → 解压到/usr/local/→ 建立软链接ln -s /usr/local/filebeat-version /usr/local/filebeat→ 写入环境变量/etc/profile.d/filebeat.sh→ 并自动生成一个最简配置文件filebeat.prospectors: - input_type: log paths: - /var/log/*.log output.logstash: hosts: [127.0.0.1:5044]codes/linux/soft/elk/install-elk.sh一键式安装 ELK 全套组件elasticsearch / logstash / kibana / filebeat版本统一为 6.1.1的脚本。其中installFilebeat()函数从官方 artifacts 地址下载 filebeat 压缩包并解压replaceFilebeatConfig()则下载 codes/linux/soft/elk/config/filebeat.yml 并用当前设备 IP 替换其中的127.0.0.1占位地址。注意ELK 三件套 Beats 建议统一版本避免因版本不一致导致组件间通讯异常详见 docs/linux/soft/elastic/elastic-quickstart.md 的安装提示。三、配置文件 filebeat.yml3.1 配置文件位置与格式filebeat.yml是 filebeat 的配置文件配置文件的路径会因为你安装方式的不同而变化tar 包解压目录、rpm/deb 安装路径/etc/filebeat/等。请以实际安装方式为准。Beat 全系列产品的配置文件都基于YAML格式Filebeat 自然也不例外。YAML 采用缩进表达层级配置时务必注意缩进一致性不要混用 Tab 与空格。filebeat.yml 部分配置示例多行日志合并场景filebeat: prospectors: - type: log paths: - /var/log/*.log multiline: pattern: ^[ match: after3.2 仓库内完整配置示例解读仓库中的 codes/linux/soft/elk/config/filebeat.yml 是一份带详尽注释的实战配置文件覆盖了上述文档中所有关键配置项可直接作为模板。其中值得重点关注的增强配置包括prospector 级别过滤filebeat.prospectors: - type: log enabled: true paths: - /home/zp/log/*.log # 排除匹配正则的行如排除 DEBUG 日志 #exclude_lines: [^DBG] # 仅收集匹配正则的行如只收集 ERROR 与 WARN #include_lines: [^ERR, ^WARN] # 排除匹配正则的文件如排除 .gz 压缩文件 #exclude_files: [.gz$]多行日志multiline用于处理跨多行的日志常见于 Java 堆栈异常Stack Trace。multiline.pattern指定需要匹配的正则multiline.negate决定是否对模式取反默认 falsemultiline.match: after表示匹配成功后将其后不匹配的行合并到该事件中Logstash 中after等价于previousbefore等价于nextmultiline.pattern: ^\[ multiline.negate: false multiline.match: after自定义字段与标签fields与tags会随事件一起输出便于后续按服务、环境维度过滤。该示例中配置了fields.profile: development。模块目录配置filebeat.config.modules通过 glob 模式${path.config}/modules.d/*.yml加载模块配置并支持热加载reload.enabled: true。日志级别logging.selectors: [*]配合 debug 级别可输出 publish、beat 等组件的详细日志便于排查采集问题。提示Filebeat 软件包通常会附带一份filebeat.reference.yml全量配置参考文件包含所有受支持选项及注释配置时可对照查阅。四、重要配置项详解4.1 filebeat.prospectors文件监视器用于指定需要关注的文件。每个-开头的是一个 prospector可同时定义多个 prospector 以适配不同路径、不同类型、不同多行规则的文件。示例filebeat.prospectors: - type: log enabled: true paths: - /var/log/*.logtype指定采集类型日志采集为logenabled: true启用该 prospectorpaths支持 glob 通配符可配置多个路径。若想为一个 prospector 配置多条路径可直接追加列表项例如filebeat.prospectors: - type: log paths: - /var/log/*.log - /var/path2/*.log4.2 output.elasticsearch直接输出到 Elasticsearch如果希望使用 filebeat 直接向 Elasticsearch 输出数据配置output.elasticsearchoutput.elasticsearch: hosts: [192.168.1.42:9200]hosts为 Elasticsearch 节点地址数组可配置多个节点实现负载与容错。若 Elasticsearch 开启认证还需配置username/password。4.3 output.logstash经 Logstash 中转输出如果希望 filebeat 先向 Logstash 输出数据由 Logstash 加工后再向 Elasticsearch 输出则配置output.logstashoutput.logstash: hosts: [127.0.0.1:5044]推荐相比直接向 Elasticsearch 输出个人更推荐向 Logstash 输出。因为 Logstash 与 Filebeat 一起工作时具备背压机制——Logstash 繁忙时会通知 Filebeat 放慢读取速度拥塞缓解后 Filebeat 自动恢复原速从而减少管道超负荷的风险。同时 Logstash 还能承担 grok 解析、字段清理等加工职责参见 docs/linux/soft/elastic/elastic-logstash.md。除了 filebeat 侧还需要在 Logstash 的配置文件如logstash.conf中指定beats input 插件监听与 filebeat.yml 中相同端口示例为 5044input { beats { port 5044 # 此端口需要与 filebeat.yml 中的端口相同 } } # The filter part of this file is commented out to indicate that it is # optional. # filter { # # } output { elasticsearch { hosts localhost:9200 manage_template false index %{[metadata][beat]}-%{[metadata][version]}-%{YYYY.MM.dd} document_type %{[metadata][type]} } }其中输出索引index使用[metadata]中携带的 beat 名称、版本与日期动态生成形如filebeat-6.1.1-2026.09.16实现按天分索引。仓库内另一份 codes/linux/soft/elk/config/logstash.conf 展示了 tcp input端口 9251、json_linescodec直接写入 Elasticsearch 的写法可对比理解 input 插件beats / tcp / file 等的差异。4.4 setup.kibanaKibana 连接配置如果打算使用 Filebeat 提供的 Kibana 仪表板需要配置setup.kibana用于 Filebeat 与 Kibana 交互加载仪表板、索引模式等setup.kibana: host: localhost:56014.5 setup.template.settings索引模板设置在 Elasticsearch 中**索引模板index template**用于定义索引的设置settings和映射mapping决定字段如何被分析、以何种类型存储。在 Filebeat 中setup.template.settings用于配置索引模板。Filebeat 推荐的索引模板文件由 Filebeat 软件包安装。如果接受 filebeat.yml 配置文件中的默认配置Filebeat 在成功连接到 Elasticsearch 后会自动加载模板。你也可以通过配置模板加载选项来禁用自动模板加载或加载自己的模板还可以设置选项来更改索引和索引模板的名称。仓库示例配置中给出setup.template.settings: index.number_of_shards: 3 #index.codec: best_compression #_source.enabled: false这里将新索引的主分片数number_of_shards设为 3index.codec: best_compression可开启更优的压缩比以 CPU 换取存储空间。说明如无必要使用 Filebeat 配置文件中的默认索引模板即可。4.6 setup.dashboardsKibana 仪表板加载Filebeat 附带了示例 Kibana 仪表板。使用前需要先创建索引模式filebeat-*并将仪表板加载到 Kibana。有两种方式运行setup命令或在filebeat.yml配置文件中开启仪表板加载开关。在filebeat.yml中启用仪表板加载setup.dashboards.enabled: true仓库配置示例 codes/linux/soft/elk/config/filebeat.yml 中即启用了该选项并指出从 Beats 6.0.0 起仪表板通过Kibana API加载因此必须配合上一节的setup.kibana配置一起使用。五、Filebeat 命令filebeat 提供了一系列命令来完成各种功能。执行命令的统一方式./filebeat COMMAND说明命令行参数没有必要一一掌握因为绝大部分功能都可以通过配置来完成且通过命令行指定功能要求每次输入同样参数不利于固化启动方式。最重要的命令是启动命令run。示例指定配置文件、以前台方式运行并开启publish组件的调试日志./filebeat run -e -c filebeat.yml -d publish ./filebeat -e -c filebeat.yml -d publish # run 可以省略各参数含义参数含义run启动 filebeat默认命令可省略-e日志输出到 stderr前台运行时可实时看到日志-c file指定配置文件路径-d selectors启用指定组件的调试日志publish表示查看事件发布环节日志仓库中的 codes/linux/soft/elk/boot-elk.sh 给出了生产环境常用的后台守护启动方式nohup ${FILEBEAT_PATH}/filebeat -e -c ${FILEBEAT_PATH}/filebeat.yml -d publish ${FILEBEAT_PATH}/nohup.out 21 脚本通过appfilebeat operstart|stop两个参数控制stop时使用ps -ef | grep找到进程并 kill。这与 Logstash 的 nohup 守护方式一致可对照 docs/linux/soft/elastic/elastic-logstash.md 的小技巧章节。六、Filebeat 模块Filebeat 提供了一套预构建模块让你可以快速实施和部署日志监视解决方案并附带示例仪表板和数据可视化。这些模块支持常见的日志格式例如 Nginx、Apache2、MySQL、System 等省去了手写正则解析的繁琐工作。运行模块的步骤步骤一配置 elasticsearch 和 kibana在 filebeat.yml 中配置输出与 Kibana 连接username/password是可选的不需要认证则不填output.elasticsearch: hosts: [myEShost:9200] username: elastic password: elastic setup.kibana: host: mykibanahost:5601 username: elastic password: elastic步骤二初始化环境执行setup命令filebeat 会加载推荐索引模板并在配置了 dashboards 时加载仪表板./filebeat setup -e步骤三指定模块启动执行下面命令指定希望加载的模块此处为 system、nginx、mysql 三个模块./filebeat -e --modules system,nginx,mysql提示模块的启用状态也可通过modules.d/目录下的*.yml配置持久化并由filebeat.config.modules统一加载与热更新见仓库配置示例 codes/linux/soft/elk/config/filebeat.yml。七、Filebeat 工作原理Filebeat 有两个主要组件harvester与prospector配合**注册表文件registry file**共同保障日志的有序、完整采集。7.1 harvester收割器harvester 负责读取一个文件的内容。它会逐行读取文件内容并将内容发送到输出目的地。每个被监视的文件对应一个 harvesterharvester 负责管理文件的打开、读取与关闭包括文件轮转场景。7.2 prospector探测器prospector 负责管理 harvester 并找到所有需要读取的文件源。例如类型是log时prospector 就会遍历指定路径下的所有匹配要求的文件并为每个文件启动一个 harvester。filebeat.prospectors: - type: log paths: - /var/log/*.log - /var/path2/*.log7.3 注册表文件与状态管理Filebeat 保持每个文件的状态并经常刷新注册表文件中的磁盘状态。状态用于记住 harvester 正在读取的最后偏移量offset并确保发送所有日志行——这正是断点续传能力的来源进程重启、网络中断后Filebeat 依据注册表恢复读取位置。至少一次投递at-least-onceFilebeat 将每个事件的传递状态存储在注册表文件中保证事件至少传递一次到配置的输出没有数据丢失在极端场景下可能重复投递但不会丢失。八、延伸阅读Elastic 技术栈入门指南了解 ELK 整体架构、Elasticsearch / Logstash / Kibana 安装与数据流向Elastic 技术栈之 Logstash 基础Logstash 的 input / filter / output / codec 插件体系及文件采集实战Elastic 技术栈总览ELK 技术栈概念与资源汇总codes/linux/soft/elk/config/filebeat.yml带全量注释的 filebeat 实战配置模板codes/linux/soft/elk/boot-elk.shelasticsearch / logstash / kibana / filebeat 统一启停脚本codes/linux/soft/elk/install_filebeat.sh 与 codes/linux/soft/elk/install-elk.shfilebeat 及 ELK 全家桶的一键安装脚本【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表