服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-21 更新于 2026-08-21 简米科技 4,895 字 12 分钟阅读

日志散落在几十台机器集中收集该怎么搭,分布式日志收集如何搭建

导读对于几十台机器的日志集中收集,最直接有效的方案是采用Beats + Logstash + Elasticsearch + Kibana(ELK)技术栈,其中Filebeat作为轻量级日志采集器,Logstash负责解析和转发,Elasticsearch集群存储和检索,Kibana进行可视化展示,这套架构成熟稳定……

对于几十台机器的日志集中收集,最直接有效的方案是采用Beats + Logstash + Elasticsearch + Kibana(ELK)技术栈,其中Filebeat作为轻量级日志采集器,Logstash负责解析和转发,Elasticsearch集群存储和检索,Kibana进行可视化展示,这套架构成熟稳定,社区活跃,且可根据日志量灵活扩展。

为什么几十台机器日志必须集中管

日志散落在几十台机器上,排查问题时你需要在每台机器上手动 grep,新业务上线后,日志格式多样,想统一分析几乎不可能。集中收集不是选择题,而是运维的必答题,当服务器数量超过十台,人工登录查看日志的时间成本已经超过搭建一套日志系统所需投入,业内专家指出,大部分互联网公司会在服务器规模达到 20 台左右时正式引入集中日志方案。

从故障排查到安全审计,从性能监控到业务指标提取,集中后的日志能发挥数据价值,但几十台机器的规模很特殊单机方案扛不住,大型分布式方案又过度设计。你需要一个平衡效率、成本和可维护性的组装方案

几十台服务器日志收集方案对比:ELK 还是 EFK

市场上的方案主要分两派:ELK(Elasticsearch + Logstash + Kibana)和 EFK(Elasticsearch + Fluentd + Kibana),两者在存储和可视化层共用 Elasticsearch 和 Kibana,差异在采集与传输环节。

日志集中收集工具怎么选

对比维度 Filebeat + Logstash Fluentd rsyslog
资源占用 极低,Filebeat 约 10MB 内存 中等,Fluentd 约 50MB 内存 极低,系统自带
解析能力 Logstash 插件丰富,Grokg 灵活 内置正则,支持多种输入输出 有限,适合系统日志
扩展性 可通过 Kafka 做缓冲层 自带缓冲机制 集群场景需额外配置
学习成本 中等,需掌握 Logstash 配置 稍高,Fluentd 配置语法独特
社区活跃度 高,ELK 生态成熟 较高,CNCF 项目 低,传统方案

对于几十台机器规模,多数情况下推荐 Filebeat + Logstash 组合

日志散落在几十台机器集中收集该怎么搭,分布式日志收集如何搭建

,Filebeat 负责轻量采集,占用资源少,对业务影响小;Logstash 集中处理后端,支持复杂的日志解析和过滤,如果团队熟悉 Ruby 或需要更丰富的插件生态,Fluentd 也是可靠选择。

传输层要不要加 Kafka

当日志量达到每日几百 GB 时,Logstash 可能成为瓶颈,这时引入 Kafka 作为缓冲层是一个好思路,但在几十台机器场景下,日志量通常不会超过每日几十 GB,直接使用 Logstash 作为传输和解析中间件,架构更简单,运维成本更低,如果对日志丢失零容忍,或者需要将日志同时发给多个消费端,则可以考虑 Kafka,行业共识是:单日日志量低于 100GB 时,不需要 Kafka。

日志收集架构怎么搭建:从零到可用的完整步骤

环境准备

  • 操作系统:CentOS 7+ 或 Ubuntu 18.04+
  • Java 环境:Elasticsearch 需要 Java 8 或 11,推荐使用 OpenJDK
  • 网络:所有机器之间能互相通信,采集端到 Logstash 端口开放,Logstash 到 Elasticsearch 端口开放
  • 用户权限:Elasticsearch 不能用 root 运行,需要创建专用用户

安装和配置 Filebeat

Filebeat 部署在每台需要采集日志的机器上,安装简单,直接下载 RPM 包或使用官方仓库。

# 添加 Elastic 仓库
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/elastic.repo << EOF
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
# 安装
yum install filebeat -y

配置中需要指定日志路径和输出目标。核心配置字段

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log
  fields:
    service: nginx
    server: web-01
fields_under_root: true
output.logstash:
  hosts: ["192.168.1.100:5044"]
  • paths 支持通配符,可同时采集多个文件
  • fields 用来添加自定义标签,方便后续在 Elasticsearch 中区分来源
  • output.logstash 指定 Logstash 地址,多个地址自动负载均衡
  • 日志散落在几十台机器集中收集该怎么搭,分布式日志收集如何搭建

配置 Logstash 进行解析

Logstash 通常部署在中央服务器上,接收 Filebeat 传来的日志,解析后输出到 Elasticsearch。一个典型的 Logstash 配置

input {
  beats {
    port => 5044
    client_inactivity_timeout => 3600
  }
}
filter {
  if [service] == "nginx" {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    geoip {
      source => "clientip"
    }
  }
  mutate {
    remove_field => ["message", "original"]
  }
}
output {
  elasticsearch {
    hosts => ["http://192.168.1.101:9200", "http://192.168.1.102:9200"]
    index => "logs-%{service}-%{+YYYY.MM.dd}"
  }
}
  • grok 是重中之重,它能将非结构化日志解析成结构化字段
  • geoip 插件可解析 IP 属地,方便分析访问来源
  • mutate 清理冗余字段,减小索引体积
  • index 按时间和服务名分索引,便于管理生命周期

部署 Elasticsearch 和 Kibana

Elasticsearch 至少需要三节点组成集群,保证高可用。几十台机器日志量不大,三节点标配即可,安装步骤与 Filebeat 类似,使用相同仓库。

Elasticsearch 配置要点

cluster.name: logs-cluster
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: ["192.168.1.101", "192.168.1.102", "192.168.1.103"]
cluster.initial_master_nodes: ["node-1"]
  • discovery.seed_hosts 列出所有节点 IP
  • 生产环境必须开启身份认证,设置 xpack.security.enabled: true

Kibana 安装后,通过浏览器访问 5601 端口,在 Management 中创建索引模式,就能开始搜索和分析日志。

日志收集系统性能优化

采集端性能

Filebeat 默认配置已经足够轻量,但如果日志量大,需要调整 harvester_buffer_sizebackoff 参数,避免多个日志文件同时写入同一块磁盘造成 I/O 竞争,建议将不同服务的日志文件分散到不同磁盘,或者使用 SSD。

网络带宽和延迟

日志散落在几十台机器集中收集该怎么搭,分布式日志收集如何搭建

几十台机器同时发送日志,Logstash 所在机器的网络带宽可能成为瓶颈。经验建议:Logstash 实例的 CPU 核数至少为 4 核,内存不低于 8GB,如果带宽不足,可以在 Filebeat 端启用压缩:

output.logstash:
  hosts: ["192.168.1.100:5044"]
  compression_level: 3

压缩级别 3 即可,再高会消耗 CPU。

存储容量规划

日志集中收集需要提前规划存储容量,以每天 10GB 日志量为例,保留 30 天需要 300GB(未压缩),Elasticsearch 索引副本通常为 1 份,总容量翻倍到 600GB,加上日志复制和热度分层,建议预留 1TB 以上磁盘,如果使用托管服务,价格会按存储量计费,单日日志量在 10GB 以内,自建成本更低

日志集中收集常见问题

Q:几十台机器日志收集需要什么硬件配置?

A:采集端每台机器用 1 核 1GB 即可运行 Filebeat;中央处理服务器建议 4 核 8GB 以上,运行 Logstash 和 Kibana;Elasticsearch 集群至少 3 个节点,每个节点 4 核 8GB 起步,磁盘根据日志量按 1:3 比例规划(1GB 日志对应 3GB 存储空间),如果日志量小,可将 Logstash 和 Kibana 部署在同一台机器上。

Q:日志收集系统价格高吗?

A:自建方案硬件成本主要来自 Elasticsearch 节点,三个服务器加磁盘约 1-2 万元,软件全部开源免费,如果使用云服务,如简米云日志服务或酷番云 CLS,按日志量收费,单日 10GB 日志每月费用约 500-1000 元,但省去了运维人力,自建适合预算有限且团队有运维能力;托管适合快速上线,但长尾成本更高。

Q:如何保证日志不丢失?

A:Filebeat 默认启用了内存队列和磁盘队列,当网络中断时日志会缓存在本地,直到重新发送成功,Logstash 也具备持久化队列能力,设置 queue.type: persisted 可以在进程崩溃后恢复数据,Elasticsearch 写入时通过副本机制保证数据冗余。行业共识是:只要配置了持久化队列和副本,日志丢失概率极低

几十台机器的日志集中收集,选 Filebeat + Logstash + Elasticsearch 这套组合,投入产出比最理想,不必追求复杂架构,先跑起来,再根据日志量逐步优化。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱