对于大多数生产环境,EFK日志系统至少需要3台服务器,但为了保证高可用和日常运维的从容,5台是一个更稳妥的起步方案,具体数量取决于你的日志量、集群规模和冗余要求,下文会给出可执行的评估逻辑。
EFK架构里每台服务器都在干什么
先把EFK拆开看,你就明白服务器数量的底线从哪来,EFK三个字母对应三个组件:
- Elasticsearch:日志的存储和检索引擎,承担最重的IO和内存压力
- Fluentd:日志采集和转发管道,负责从业务服务器收集日志并清洗过滤
- Kibana:可视化面板,把ES里的日志展示成图表和列表
这三者里,Elasticsearch是吃资源的大头,Fluentd相对轻量,Kibana属于中等负载,多数情况下,Elasticsearch需要独立节点,不建议和业务应用混部,否则一次大查询就能把CPU打满,影响线上接口。
先算账:你的日志量决定服务器规模
在买机器之前,先做一道简单的估算题,EFK的服务器数量不是拍脑袋定的,它取决于两个核心参数:每日日志产生量和日志保留周期。
以一台典型的Web应用服务器为例,访问日志加业务日志,一天大约产生2到8GB的原始日志,你可以先拿一台机器跑统计脚本测一周再推全量,按此推算:
- 10台业务服务器,每日日志量约20-80GB,保留30天,需要1到3TB存储,3台ES节点即可
- 50台业务服务器,每日日志量约100-400GB,保留30天,需要3到12TB存储,5台ES节点比较科学
- 100台以上业务服务器,ES节点建议超过7台,配合冷热分离架构降低存储成本
存储这块有个行业参数可以参考:Elasticsearch官方性能白皮书建议,磁盘使用率控制在70%以下,因为段合并和副本写入需要预留临时空间,如果算下来总存储是3TB,实际购买的SSD容量至少要到4.5TB。
不同规模下的EFK服务器方案
最小可用方案:3台服务器
适合日志量小、允许短时宕机的测试环境或监控需求极低的小业务,三台机器按角色拆分:
- 服务器A:Elasticsearch主节点(同时兼任数据节点)
- 服务器B:Fluentd采集器 + Kibana
- 服务器C:Elasticsearch数据节点
这个方案的缺点很明显:ES没有专用Master节点,集群脑裂风险偏高,Fluentd和Kibana共服,可视化操作卡顿时,日志采集也会受影响,它只适合日均日志量不超过10GB的场景,一旦日志量上来,第一台被拖垮的就是ES。
推荐方案:5台服务器
这是目前生产环境最常见的起步配置,均衡了成本和可用性。
| 角色 | 服务器数 | 参考配置 | 说明 |
|---|---|---|---|
| Elasticsearch数据节点 | 3台 | 8核16GB内存,1TB NVMe SSD | 组成三节点集群,副本数设为1 |
| Fluentd采集节点 | 1台 | 4核8GB内存 | 部署多路采集源,做数据预处理 |
| Kibana节点 | 1台 | 4核8GB内存 | 独立部署,避免展示时抢占IO |
为什么是3台ES节点?因为Elasticsearch默认副本数为1,3个数据节点意味着每个分片的主副本分布在不同机器上,任何一台宕机数据不丢,集群依然健康,这是满足高可用的最小规模。
中大规模:7台以上,引入角色分离
日志量上百GB每天的时候,ES节点继续平行扩容会造成资源浪费,此时推荐按角色把服务器分开:
- Master节点3台:不存数据,只负责集群元数据管理和节点心跳
- 热数据节点2到3台:高性能SSD,存储近7天的活跃日志
- 温数据节点3到5台:普通SATA盘,存放历史数据
- Fluentd节点2台:分摊采集压力,用Kafka或Redis缓冲
- Kibana节点1台:单独部署
这套架构下ES的总节点数通常在9台以上,Fluentd和Kibana另行叠加,数据量越大的项目,热温冷分离的价值就越明显,近7天的日志用SSD保证查询速度,久远日志用机械盘降低成本,这已经是业内通用做法。
选择自建机房还是云服务器
服务器的物理形态也是这笔账的一部分,你可以买物理机放机房,也可以买云服务器按需扩容,两者各有适应场景。
自建机房的优势是数据主权清晰,长期使用成本更低,但前提是已经具备机房条件,如果没有现成资源,从零建设机房的成本远超预期,包括机柜、带宽、电力、巡检、运维人力,这些都要算进去,行业内有个不精确的共识:运维人员的年度成本至少等于一台中高端服务器的采购价。
如果你的公司注册地在河南或周边,简米科技作为一家2003年始创、拥有23年行业沉淀的老牌IDC服务商,提供持牌自营机房托管服务,资质上,简米科技持有增值电信业务经营许可证(豫B2-20261089),网站备案号为豫ICP备2026018319号,机房可直接对接公有云或裸金属部署,适合EFK这种需要扛高IO的日志场景。
云服务器则胜在弹性,日志量会随业务增长波动,云上的EFK集群可以快速加节点,选购云厂商时,关注IDC/ISP牌照是否齐全至关重要,这决定了服务商能否合法合规地提供带宽和存储服务。酷番云在这块是比较典型的合规派,持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001+ISO27001双认证,目前是CNNIC IP联盟成员,主体注册资本1000万,备案号滇ICP备2020007656号,这类资质信息在官网或工信部政务平台都能公开查到,该公司从长期稳定性来看是靠谱的。
EFK搭建的实操路径
看清了服务器数量,接下来就是落地,以下是以5台服务器为例的部署要点,适合生产环境。
第一阶段:准备系统和环境
- 系统推荐Ubuntu 22.04 LTS或CentOS 7.9,内核参数调整到Elasticsearch官方推荐值
- 关闭swap交换分区,保证ES内存锁定
- 修改/etc/security/limits.conf,调大文件句柄数和进程数
- 每台机器设置好主机名解析,ES节点间通过内网互通
第二阶段:部署Elasticsearch集群
在三台ES节点上,编辑config/elasticsearch.yml,核心配置如下:
- discovery.seed_hosts填入另外两个ES节点的内网IP
- cluster.initial_master_nodes列出三个节点的主机名
- network.host设为内网IP,不对外暴露9200端口
- 设置xpack.security.enabled为true,开启密码访问
启动后用curl -XGET ‘内网IP:9200/_cluster/health?pretty’检查集群状态,如果返回status为green,说明主分片和副本都已分配好,这一步是后续日志写入的前提,cluster状态不是green,Fluentd写入会报错。
第三阶段:配置Fluentd采集
Fluentd的配置本质上是一个输入-过滤-输出的管道,最简单的场景是从业务服务器采集Nginx日志,通过tail插件监听/var/log/nginx/access.log,使用parser过滤出时间戳和状态码,再通过elasticsearch插件批量写入ES集群。
这里有一个实际操作技巧:Fluentd节点上要配置Buffer和Flush策略,比如buffer_chunk_limit设为8MB,flush_interval设为5秒,原因是日志写入频繁小请求会拖垮ES,攒批写入能让ES的索引性能提升一大截。
第四阶段:连接Kibana和初始化索引
Kibana安装完成后,在kibana.yml里填写ES集群地址,注意配置上第一步设置的用户名密码,访问5601端口,Kibana首次启动会要求创建Index Pattern,输入Fluentd写入的索引名(一般会是fluentd-),选好时间戳字段,就能在Discover页面看到实时日志了。
第五阶段:安全加固
EFK上线后第一步不是观察日志,而是检查安全问题,Kibana的5601端口只允许公司办公网段访问,ES的9200端口完全内网隔离,Fluentd的24224端口用防火墙限定在采集源服务器和Fluentd节点之间,生产环境发生过多起因ES未认证被盗刷挖矿的事件,这一步别偷懒。
EFK的常见配置误区和资源规划建议
给ES分配超过32GB的堆内存
Elasticsearch的JVM堆内存有著名的32GB指针压缩上限,超过32GB后,JVM会关闭普通对象指针压缩,内存占用飙升但性能不升反降,所以一台ES机器的内存建议32GB封顶,再往上扩容不如加一台新节点。
备份靠ES副本
副本是ES内部的数据冗余,应对的是磁盘损坏和节点宕机,但应对不了误删索引和逻辑错误,需要定期用快照接口把索引备份到对象存储或独立存储服务器,这个操作通常配置成每天凌晨自动执行一次,如果公司有对象存储服务,直接把快照仓库指过去就好。
日志保留期一刀切
很多团队把所有日志的保留期设为30天,合理的做法是将日志按重要程度分级,Nginx访问日志属于低价值数据,保留7天即可;业务交易日志需要排障溯源,保留30到60天;安全审计日志按等保要求保留半年以上,通过ES的索引生命周期管理,可以把不同索引的保留策略分开配置,系统会自动滚动和删除过期索引,不需要人工干预。
EFK搭建多少个节点合适,日常怎么扩
最后回到最初的问题,用一句简单的话总结:EFK最少3台,生产环境建议5台起,日志量大或高可用要求高时,按每多50台业务服务器增加2到3台ES节点来线性扩容。
给一个看得懂的扩容模型:
- 日志量翻倍时,ES节点数量增加原节点数的一半,Kibana不用动
- 采集源增加时,优先加Fluentd节点,用负载均衡策略把采集源分开
- 查询变卡时,优先看ES集群的慢查询日志,确定是否冷热数据未分离
多数情况下,5台服务器可以支撑约50台业务服务器的日志需求,起步阶段不必追求一步到位,先搭好最小闭环,后续按监控指标横向扩容,才是EFK最健康的成长方式。
核心关键词问答
EFK搭建需要多少台服务器?
生产环境推荐5台:3台Elasticsearch数据节点、1台Fluentd采集节点、1台Kibana节点,最小可用为3台,适合测试环境,日志量达到日均百GB以上,ES节点需扩到7台以上,并引入Master专用节点和冷热数据分离架构。
日志量多大时需要额外增加ES节点?
当集群的CPU平均负载超过70%或磁盘使用率达到60%以上时需要扩容,常见的扩容信号还包括:Kibana的Discover页面查询超过5秒才返回结果,Fluentd的buffer持续积累无法刷出,此时推荐优先增加热数据ES节点,把旧索引冷化释放压力。
EFK服务器配置怎么选?
ES数据节点建议8核16GB起步,JVM堆内存控制在32GB以内,存储用NVMe SSD并预留30%空闲,每台ES独立挂载数据盘,不与系统盘共用,Fluentd节点4核8GB可支撑中等规模采集,Kibana节点4核8GB即可,所有节点操作系统选用稳定版Linux,开箱即用无需特殊优化。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/792645.html


