上一篇【第51篇】Kibana Dashboard构建与共享——从数据到洞察下一篇【第53篇】用ELK Stack构建集约化日志管理平台——从收集到分析摘要Elastic Stack也称ELK Stack由Elasticsearch、Logstash、Kibana和Beats四大组件构成提供从数据采集、传输、存储、分析到可视化的全链路解决方案。本文从架构视角系统梳理各组件在整体体系中的职责定位详解Beats家族七大数据采集器的功能特点与适用场景Filebeat文件日志、Metricbeat系统指标、Packetbeat网络数据、Winlogbeat Windows日志、Auditbeat安全审计、Heartbeat健康检查、Functionbeat无服务器数据。重点分析Logstash与Beats的职责划分原则——Beats负责轻量采集、Logstash负责复杂过滤与转换。最后梳理三种典型架构演进路径帮助读者根据业务规模选择最合适的部署方案。关键词Elastic StackELKLogstashBeatsFilebeat日志采集架构设计一、Elastic Stack四大组件职责分工1.1 组件定位概览Elastic Stack是一个完整的数据处理流水线四个组件各司其职组件角色定位核心任务类比Elasticsearch心脏数据存储、全文搜索、聚合分析数据库 搜索引擎Logstash消化系统数据采集、清洗、转换、格式化ETL工具Beats感官触角轻量级数据采集与转发数据采集代理Kibana眼睛和仪表盘数据可视化、交互探索、管理界面BI工具 管理后台1.2 数据流转路径数据源 → Beats → Logstash → Elasticsearch → Kibana (采集) (清洗转换) (存储索引) (可视化) 简化路径轻量场景 数据源 → Beats → Elasticsearch → Kibana 加强路径高并发场景 数据源 → Beats → Kafka → Logstash → Elasticsearch → Kibana1.3 各组件的技术特征特征ElasticsearchLogstashBeatsKibana开发语言JavaJRuby (Ruby on JVM)GoNode.js资源消耗高需要JVM堆内存高需要JVM极低Go编译单文件中Node.js运行时部署方式集群部署单节点或集群每台服务器部署单节点可多实例横向扩展天然支持需配合消息队列天然支持负载均衡配置复杂度高中高低中二、日志管理的挑战在深入Elastic Stack各组件之前有必要理解现代IT环境中日志管理面临的核心挑战——这也是ELK诞生的背景。2.1 日志管理的四大挑战挑战维度具体表现传统方案痛点来源多样性系统日志、应用日志、数据库日志、网络设备日志等需要不同的解析方案无法统一管理格式不统一JSON、纯文本、二进制、自定义格式grep/awk/sed的正则规则难以维护数据量庞大淘宝日活PB级日志单机存储和检索无法满足检索困难跨服务器、跨时间段查询SSH登录每台机器逐个查看效率极低2.2 ELK的应对策略挑战ELK解决方案涉及组件来源多样性统一采集代理Beats家族Filebeat、Metricbeat、Winlogbeat等格式不统一管道化解析与规范化Logstash Pipeline Grok数据量庞大分布式存储与并行检索Elasticsearch集群检索困难集中化全文检索Elasticsearch Kibana Discover三、Beats家族详细介绍Beats是Elastic公司开发的一系列轻量级数据采集器每个Beats负责采集特定类型的数据部署在需要采集数据的服务器上。3.1 Beats家族总览名称采集目标数据协议典型输出适用场景Filebeat文件/日志逐行读取日志内容及元数据应用日志、Nginx日志、SyslogMetricbeat系统和服务指标周期性采集CPU、内存、磁盘、网络等服务器监控、服务状态监控Packetbeat网络数据包实时抓包网络请求/响应信息应用性能监控APMWinlogbeatWindows事件日志事件订阅Windows事件日志Windows服务器监控Auditbeat审计数据内核级监控文件变更、进程活动安全审计、合规检查Heartbeat服务可用性主动探测ICMP/TCP/HTTP状态服务健康检查、Uptime监控Functionbeat无服务器数据云函数触发云服务日志AWS Lambda等Serverless场景3.2 Filebeat——文件日志采集Filebeat是最常用的Beats负责监控文件变化并将新增的日志行发送到指定目的地。# filebeat.yml 基础配置filebeat.inputs:-type:logenabled:truepaths:-/var/log/nginx/access.log-/var/log/nginx/error.logfields:app:nginxenv:productionfields_under_root:falseoutput.elasticsearch:hosts:[http://es-node-01:9200,http://es-node-02:9200]index:nginx-logs-%{yyyy.MM.dd}Filebeat工作原理1. Harvester (收割机) 打开文件逐行读取 2. Spooler (缓冲器) 聚合事件并批量发送 3. Registrar (注册器) 记录已读取的文件偏移量防止重启后重复读取 4. Output 将事件发送到ES、Logstash、Kafka等目标3.3 Metricbeat——系统指标采集Metricbeat定期采集操作系统和常用服务的性能指标。# metricbeat.yml 配置示例metricbeat.modules:-module:systemperiod:10smetricsets:-cpu-load-memory-network-process-disk-filesystemprocess.include_top_n:by_cpu:5by_memory:5-module:nginxperiod:10smetricsets:-stubstatushosts:[http://localhost:80]server_status_path:nginx_statusoutput.elasticsearch:hosts:[http://localhost:9200]index:metricbeat-%{yyyy.MM.dd}3.4 各Beats适用场景深度图谱服务器环境 Beats 部署指南: ┌─────────────────────────────────────────────────────────────┐ │ Linux 服务器 │ │ ├── Filebeat: 采集应用日志、系统日志、容器日志 │ │ ├── Metricbeat: 采集CPU、内存、磁盘、网络指标 │ │ ├── Auditbeat: 文件完整性监控、用户行为审计 │ │ └── Heartbeat: 定期探测对外服务的可用性 │ ├─────────────────────────────────────────────────────────────┤ │ Windows 服务器 │ │ ├── Winlogbeat: 采集Windows事件日志 │ │ ├── Filebeat: 采集IIS日志、应用程序日志 │ │ ├── Metricbeat: Windows性能计数器 │ │ └── Auditbeat: 安全审计日志 │ ├─────────────────────────────────────────────────────────────┤ │ 网络设备/中间件 │ │ ├── Packetbeat: 抓取网络流量分析协议性能 │ │ └── Filebeat: 采集设备转发的Syslog │ ├─────────────────────────────────────────────────────────────┤ │ 云环境 │ │ ├── Functionbeat: 采集Lambda/Cloud Functions日志 │ │ └── Filebeat Metricbeat: EC2/VM 实例级监控 │ └─────────────────────────────────────────────────────────────┘四、Logstash与Beats的职责划分4.1 分工原则在Elastic Stack早期Logstash承担了数据采集和处理双重职责。随着Beats家族的成熟架构演变为Beats采集 Logstash处理的分工模式。维度BeatsLogstash资源占用极低几十MB内存较高JVM需500MB堆数据采集专注此职责不再作为首选采集方案数据解析基础字段提取Grok正则、JSON解析、CSV解析等数据转换基础处理字段重命名、类型转换、富化GeoIP、UserAgent多源聚合单实例采集单一类型接收多Beats多源数据统一处理输出路由单一输出目标条件判断路由到不同ES索引/集群4.2 职责边界判断表决策流程 数据是否只需要简单采集转发 ├── 是 → 使用 Beats 直传 ES └── 否 → 需要哪些处理 ├── 需要复杂正则解析Grok → 使用 Logstash ├── 需要数据库查询富化 → 使用 Logstash ├── 需要条件路由到多个目标 → 使用 Logstash ├── 需要字段重命名和类型转换 → Logstash/Pipeline └── 只需要基础字段提取 → Filebeat processors4.3 Logstash Pipeline基本结构# logstash.conf - 基础Pipeline结构input{beats{port5044host0.0.0.0}}filter{# Grok解析grok{match{message%{COMBINEDAPACHELOG}}}# 字段转换mutate{convert{bytesinteger}remove_field[version,host]}# GeoIP富化geoip{sourceclientip}}output{elasticsearch{hosts[http://localhost:9200]indexweb-logs-%{YYYY.MM.dd}}}五、架构演进路径随着业务规模的增长ELK的部署架构也需要相应调整。以下是三种典型的架构模式及其适用场景。5.1 架构一Beats → ES 直传入门级适用于日志量小、格式简单的小规模场景。架构图 ┌─────────┐ ┌──────────────────┐ ┌─────────┐ │ Filebeat │────→│ Elasticsearch │────→│ Kibana │ │(app服务器)│ │ (单节点/小集群) │ │ │ └─────────┘ └──────────────────┘ └─────────┘ 特点: - 架构最简单部署成本最低 - 适合日志量 10GB/天的场景 - 不支持复杂的日志解析和富化 - ES压力直接来自采集端5.2 架构二Beats → Logstash → ES标准级适用于需要日志解析、转换、富化的中大规模场景。架构图 ┌─────────┐ ┌───────────┐ ┌──────────────────┐ ┌─────────┐ │ Filebeat │ │ Logstash │ │ Elasticsearch │ │ Kibana │ │(app-1) │────→│ │────→│ │────→│ │ ├─────────┤ │(解析/转换) │ │ (集群模式) │ │ │ │ Filebeat │────→│ │ │ │ │ │ │(app-2) │ └───────────┘ └──────────────────┘ └─────────┘ 特点: - Logstash承担数据处理职责ES不直接暴露给采集端 - 支持Grok解析、GeoIP富化、字段转换等复杂处理 - 适合日志量 10GB~100GB/天的场景 - 需注意Logstash可能成为瓶颈必要时可扩展为多实例5.3 架构三Beats → Kafka → Logstash → ES企业级适用于高并发日志、需要削峰填谷和数据持久化的大规模生产场景。架构图 ┌─────────┐ ┌───────────┐ ┌───────────┐ ┌──────────────────┐ ┌─────────┐ │ Filebeat │ │ Kafka │ │ Logstash │ │ Elasticsearch │ │ Kibana │ │(app-1) │────→│ │────→│(consumer) │────→│ │────→│ │ ├─────────┤ │ │ ├───────────┤ │ (多节点集群) │ │ │ │ Filebeat │────→│ │────→│ Logstash │────→│ │ │ │ │(app-2) │ │ │ │(consumer) │ │ Hot-Warm-Cold │ │ │ ├─────────┤ │ │ ├───────────┤ │ │ │ │ │ ... │────→│ │────→│ Logstash │────→│ │ │ │ │(app-N) │ └───────────┘ │(consumer) │ └──────────────────┘ └─────────┘ └───────────┘ 特点: - Kafka作为缓冲层解耦采集和处理 - 支持削峰填谷峰值数据不丢失 - Logstash可以水平扩展Consumer数量 - 适合日志量 100GB/天的大规模场景5.4 三种架构对比对比维度架构一直传架构二标准架构三企业级组件数量3个4个5个以上部署复杂度低中高数据处理能力弱中强峰值容错差ES扛压中Logstash持久队列优Kafka缓冲日志量适应 10GB/天10~100GB/天 100GB/天维护成本低中高生产推荐度仅限小规模推荐大规模推荐六、总结与最佳实践核心要点回顾Elastic Stack是一体化数据平台覆盖数据采集、清洗、存储、搜索、可视化全链路Beats是轻量触角Filebeat和Metricbeat是最常用的两大数据采集器部署在数据源头Logstash是数据加工厂负责复杂的数据解析、转换和富化与Beats互补而非替代架构随规模演进从直传到引入Logstash再到引入Kafka是渐进的架构升级过程Kibana是统一窗口所有数据最终通过Kibana呈现是面向用户的数据分析入口最佳实践清单组件版本对齐所有Elastic Stack组件使用相同大版本避免兼容性问题Beats先行优先使用Beats采集Logstash作为可选的数据处理层生产必加缓冲日志量超过50GB/天时应在采集和处理之间加入Kafka缓冲监控自身使用Metricbeat监控ES集群、Logstash Pipeline和Kibana实例的健康状态日志保留策略结合ILM索引生命周期管理自动归档和删除过期日志安全加固生产环境开启ES安全认证Beats和Logstash使用SSL传输数据上一篇【第51篇】Kibana Dashboard构建与共享——从数据到洞察下一篇【第53篇】用ELK Stack构建集约化日志管理平台——从收集到分析
【Elasticsearch从入门到精通】第52篇:Elastic Stack全景解读——ES、Logstash、Beats与Kibana的协作
发布时间:2026/6/28 7:26:58
上一篇【第51篇】Kibana Dashboard构建与共享——从数据到洞察下一篇【第53篇】用ELK Stack构建集约化日志管理平台——从收集到分析摘要Elastic Stack也称ELK Stack由Elasticsearch、Logstash、Kibana和Beats四大组件构成提供从数据采集、传输、存储、分析到可视化的全链路解决方案。本文从架构视角系统梳理各组件在整体体系中的职责定位详解Beats家族七大数据采集器的功能特点与适用场景Filebeat文件日志、Metricbeat系统指标、Packetbeat网络数据、Winlogbeat Windows日志、Auditbeat安全审计、Heartbeat健康检查、Functionbeat无服务器数据。重点分析Logstash与Beats的职责划分原则——Beats负责轻量采集、Logstash负责复杂过滤与转换。最后梳理三种典型架构演进路径帮助读者根据业务规模选择最合适的部署方案。关键词Elastic StackELKLogstashBeatsFilebeat日志采集架构设计一、Elastic Stack四大组件职责分工1.1 组件定位概览Elastic Stack是一个完整的数据处理流水线四个组件各司其职组件角色定位核心任务类比Elasticsearch心脏数据存储、全文搜索、聚合分析数据库 搜索引擎Logstash消化系统数据采集、清洗、转换、格式化ETL工具Beats感官触角轻量级数据采集与转发数据采集代理Kibana眼睛和仪表盘数据可视化、交互探索、管理界面BI工具 管理后台1.2 数据流转路径数据源 → Beats → Logstash → Elasticsearch → Kibana (采集) (清洗转换) (存储索引) (可视化) 简化路径轻量场景 数据源 → Beats → Elasticsearch → Kibana 加强路径高并发场景 数据源 → Beats → Kafka → Logstash → Elasticsearch → Kibana1.3 各组件的技术特征特征ElasticsearchLogstashBeatsKibana开发语言JavaJRuby (Ruby on JVM)GoNode.js资源消耗高需要JVM堆内存高需要JVM极低Go编译单文件中Node.js运行时部署方式集群部署单节点或集群每台服务器部署单节点可多实例横向扩展天然支持需配合消息队列天然支持负载均衡配置复杂度高中高低中二、日志管理的挑战在深入Elastic Stack各组件之前有必要理解现代IT环境中日志管理面临的核心挑战——这也是ELK诞生的背景。2.1 日志管理的四大挑战挑战维度具体表现传统方案痛点来源多样性系统日志、应用日志、数据库日志、网络设备日志等需要不同的解析方案无法统一管理格式不统一JSON、纯文本、二进制、自定义格式grep/awk/sed的正则规则难以维护数据量庞大淘宝日活PB级日志单机存储和检索无法满足检索困难跨服务器、跨时间段查询SSH登录每台机器逐个查看效率极低2.2 ELK的应对策略挑战ELK解决方案涉及组件来源多样性统一采集代理Beats家族Filebeat、Metricbeat、Winlogbeat等格式不统一管道化解析与规范化Logstash Pipeline Grok数据量庞大分布式存储与并行检索Elasticsearch集群检索困难集中化全文检索Elasticsearch Kibana Discover三、Beats家族详细介绍Beats是Elastic公司开发的一系列轻量级数据采集器每个Beats负责采集特定类型的数据部署在需要采集数据的服务器上。3.1 Beats家族总览名称采集目标数据协议典型输出适用场景Filebeat文件/日志逐行读取日志内容及元数据应用日志、Nginx日志、SyslogMetricbeat系统和服务指标周期性采集CPU、内存、磁盘、网络等服务器监控、服务状态监控Packetbeat网络数据包实时抓包网络请求/响应信息应用性能监控APMWinlogbeatWindows事件日志事件订阅Windows事件日志Windows服务器监控Auditbeat审计数据内核级监控文件变更、进程活动安全审计、合规检查Heartbeat服务可用性主动探测ICMP/TCP/HTTP状态服务健康检查、Uptime监控Functionbeat无服务器数据云函数触发云服务日志AWS Lambda等Serverless场景3.2 Filebeat——文件日志采集Filebeat是最常用的Beats负责监控文件变化并将新增的日志行发送到指定目的地。# filebeat.yml 基础配置filebeat.inputs:-type:logenabled:truepaths:-/var/log/nginx/access.log-/var/log/nginx/error.logfields:app:nginxenv:productionfields_under_root:falseoutput.elasticsearch:hosts:[http://es-node-01:9200,http://es-node-02:9200]index:nginx-logs-%{yyyy.MM.dd}Filebeat工作原理1. Harvester (收割机) 打开文件逐行读取 2. Spooler (缓冲器) 聚合事件并批量发送 3. Registrar (注册器) 记录已读取的文件偏移量防止重启后重复读取 4. Output 将事件发送到ES、Logstash、Kafka等目标3.3 Metricbeat——系统指标采集Metricbeat定期采集操作系统和常用服务的性能指标。# metricbeat.yml 配置示例metricbeat.modules:-module:systemperiod:10smetricsets:-cpu-load-memory-network-process-disk-filesystemprocess.include_top_n:by_cpu:5by_memory:5-module:nginxperiod:10smetricsets:-stubstatushosts:[http://localhost:80]server_status_path:nginx_statusoutput.elasticsearch:hosts:[http://localhost:9200]index:metricbeat-%{yyyy.MM.dd}3.4 各Beats适用场景深度图谱服务器环境 Beats 部署指南: ┌─────────────────────────────────────────────────────────────┐ │ Linux 服务器 │ │ ├── Filebeat: 采集应用日志、系统日志、容器日志 │ │ ├── Metricbeat: 采集CPU、内存、磁盘、网络指标 │ │ ├── Auditbeat: 文件完整性监控、用户行为审计 │ │ └── Heartbeat: 定期探测对外服务的可用性 │ ├─────────────────────────────────────────────────────────────┤ │ Windows 服务器 │ │ ├── Winlogbeat: 采集Windows事件日志 │ │ ├── Filebeat: 采集IIS日志、应用程序日志 │ │ ├── Metricbeat: Windows性能计数器 │ │ └── Auditbeat: 安全审计日志 │ ├─────────────────────────────────────────────────────────────┤ │ 网络设备/中间件 │ │ ├── Packetbeat: 抓取网络流量分析协议性能 │ │ └── Filebeat: 采集设备转发的Syslog │ ├─────────────────────────────────────────────────────────────┤ │ 云环境 │ │ ├── Functionbeat: 采集Lambda/Cloud Functions日志 │ │ └── Filebeat Metricbeat: EC2/VM 实例级监控 │ └─────────────────────────────────────────────────────────────┘四、Logstash与Beats的职责划分4.1 分工原则在Elastic Stack早期Logstash承担了数据采集和处理双重职责。随着Beats家族的成熟架构演变为Beats采集 Logstash处理的分工模式。维度BeatsLogstash资源占用极低几十MB内存较高JVM需500MB堆数据采集专注此职责不再作为首选采集方案数据解析基础字段提取Grok正则、JSON解析、CSV解析等数据转换基础处理字段重命名、类型转换、富化GeoIP、UserAgent多源聚合单实例采集单一类型接收多Beats多源数据统一处理输出路由单一输出目标条件判断路由到不同ES索引/集群4.2 职责边界判断表决策流程 数据是否只需要简单采集转发 ├── 是 → 使用 Beats 直传 ES └── 否 → 需要哪些处理 ├── 需要复杂正则解析Grok → 使用 Logstash ├── 需要数据库查询富化 → 使用 Logstash ├── 需要条件路由到多个目标 → 使用 Logstash ├── 需要字段重命名和类型转换 → Logstash/Pipeline └── 只需要基础字段提取 → Filebeat processors4.3 Logstash Pipeline基本结构# logstash.conf - 基础Pipeline结构input{beats{port5044host0.0.0.0}}filter{# Grok解析grok{match{message%{COMBINEDAPACHELOG}}}# 字段转换mutate{convert{bytesinteger}remove_field[version,host]}# GeoIP富化geoip{sourceclientip}}output{elasticsearch{hosts[http://localhost:9200]indexweb-logs-%{YYYY.MM.dd}}}五、架构演进路径随着业务规模的增长ELK的部署架构也需要相应调整。以下是三种典型的架构模式及其适用场景。5.1 架构一Beats → ES 直传入门级适用于日志量小、格式简单的小规模场景。架构图 ┌─────────┐ ┌──────────────────┐ ┌─────────┐ │ Filebeat │────→│ Elasticsearch │────→│ Kibana │ │(app服务器)│ │ (单节点/小集群) │ │ │ └─────────┘ └──────────────────┘ └─────────┘ 特点: - 架构最简单部署成本最低 - 适合日志量 10GB/天的场景 - 不支持复杂的日志解析和富化 - ES压力直接来自采集端5.2 架构二Beats → Logstash → ES标准级适用于需要日志解析、转换、富化的中大规模场景。架构图 ┌─────────┐ ┌───────────┐ ┌──────────────────┐ ┌─────────┐ │ Filebeat │ │ Logstash │ │ Elasticsearch │ │ Kibana │ │(app-1) │────→│ │────→│ │────→│ │ ├─────────┤ │(解析/转换) │ │ (集群模式) │ │ │ │ Filebeat │────→│ │ │ │ │ │ │(app-2) │ └───────────┘ └──────────────────┘ └─────────┘ 特点: - Logstash承担数据处理职责ES不直接暴露给采集端 - 支持Grok解析、GeoIP富化、字段转换等复杂处理 - 适合日志量 10GB~100GB/天的场景 - 需注意Logstash可能成为瓶颈必要时可扩展为多实例5.3 架构三Beats → Kafka → Logstash → ES企业级适用于高并发日志、需要削峰填谷和数据持久化的大规模生产场景。架构图 ┌─────────┐ ┌───────────┐ ┌───────────┐ ┌──────────────────┐ ┌─────────┐ │ Filebeat │ │ Kafka │ │ Logstash │ │ Elasticsearch │ │ Kibana │ │(app-1) │────→│ │────→│(consumer) │────→│ │────→│ │ ├─────────┤ │ │ ├───────────┤ │ (多节点集群) │ │ │ │ Filebeat │────→│ │────→│ Logstash │────→│ │ │ │ │(app-2) │ │ │ │(consumer) │ │ Hot-Warm-Cold │ │ │ ├─────────┤ │ │ ├───────────┤ │ │ │ │ │ ... │────→│ │────→│ Logstash │────→│ │ │ │ │(app-N) │ └───────────┘ │(consumer) │ └──────────────────┘ └─────────┘ └───────────┘ 特点: - Kafka作为缓冲层解耦采集和处理 - 支持削峰填谷峰值数据不丢失 - Logstash可以水平扩展Consumer数量 - 适合日志量 100GB/天的大规模场景5.4 三种架构对比对比维度架构一直传架构二标准架构三企业级组件数量3个4个5个以上部署复杂度低中高数据处理能力弱中强峰值容错差ES扛压中Logstash持久队列优Kafka缓冲日志量适应 10GB/天10~100GB/天 100GB/天维护成本低中高生产推荐度仅限小规模推荐大规模推荐六、总结与最佳实践核心要点回顾Elastic Stack是一体化数据平台覆盖数据采集、清洗、存储、搜索、可视化全链路Beats是轻量触角Filebeat和Metricbeat是最常用的两大数据采集器部署在数据源头Logstash是数据加工厂负责复杂的数据解析、转换和富化与Beats互补而非替代架构随规模演进从直传到引入Logstash再到引入Kafka是渐进的架构升级过程Kibana是统一窗口所有数据最终通过Kibana呈现是面向用户的数据分析入口最佳实践清单组件版本对齐所有Elastic Stack组件使用相同大版本避免兼容性问题Beats先行优先使用Beats采集Logstash作为可选的数据处理层生产必加缓冲日志量超过50GB/天时应在采集和处理之间加入Kafka缓冲监控自身使用Metricbeat监控ES集群、Logstash Pipeline和Kibana实例的健康状态日志保留策略结合ILM索引生命周期管理自动归档和删除过期日志安全加固生产环境开启ES安全认证Beats和Logstash使用SSL传输数据上一篇【第51篇】Kibana Dashboard构建与共享——从数据到洞察下一篇【第53篇】用ELK Stack构建集约化日志管理平台——从收集到分析