2. Elastic成本模型与计费机制
要治理 Elastic 成本,第一步不是“省钱”,而是把账单拆到能解释清楚的程度。Elastic 的成本并不是一个单一价格,而是由多个组件、多个资源维度叠加出来的。Elasticsearch、Kibana、Logstash、Beats 在计费上扮演的角色完全不同:Elasticsearch 是存储与计算的主要消耗者,Kibana 主要消耗计算与少量存储,Logstash 消耗计算与网络,Beats 则主要消耗终端资源与网络带宽。理解这一点,才能判断一笔费用到底该归到哪个组件、哪个团队、哪个业务。
一、各组件的计费维度
在 Elastic Cloud 上,计费通常按部署(Deployment)为单位,再拆到各个资源层。Elasticsearch 的计费维度包括:热/温/冷/冻结层的数据节点规格与数量、主分片与副本分片带来的存储量、快照仓库(Snapshot Repository)的存储费用、以及跨集群搜索或跨集群复制的网络流量。Kibana 通常按实例规格计费,若开启多个 Kibana 实例做高可用,费用会成倍增加。Logstash 在 Elastic Cloud 上一般以计算实例(如 VCU 或按小时计费的实例)计价,输入输出吞吐越高,所需实例越多。Beats 本身是免费开源的,但它在终端上采集数据后发送到 Elasticsearch 或 Logstash,产生的网络出口流量和接收端的写入压力,会间接体现在 Elasticsearch 的计算与存储账单上。
自建集群的成本构成则更“物理”。计算费用来自虚拟机或裸金属服务器,存储费用来自云盘(如 ESSD、gp3)或本地 NVMe,网络费用包括跨可用区复制流量、公网出口流量和跨区域传输,许可费用则取决于是否使用 Elastic 商业版功能(如机器学习、高级安全、跨集群复制等)。自建集群看似“便宜”,但往往忽略了运维人力、快照存储、监控组件和冗余资源带来的隐性成本。
二、云上 Elastic Cloud 与自建集群的成本构成差异
Elastic Cloud 的账单结构相对清晰:计算资源按实例规格和运行时长计费,存储按实际使用量计费,网络按流量计费,商业功能按订阅层级计费。它的优势是弹性扩缩容快、运维负担低,但单价通常高于自建。自建集群的账单则分散在云厂商的多个产品中:ECS 或裸金属对应计算,云盘或本地盘对应存储,VPC 流量和公网带宽对应网络,Elastic 商业许可对应许可费用。自建集群的“隐性成本”往往被低估,例如为了高可用而多部署的副本节点、跨可用区复制产生的流量、快照存储的长期累积,以及运维团队投入的人力。
一个常见的误区是只比较“每 GB 存储单价”。实际上,Elasticsearch 的存储成本必须结合副本数、分片开销和索引生命周期来算。假设一个索引每天写入 100 GB 原始数据,保留 30 天,副本数为 1,那么实际占用存储约为 100 GB × 30 天 × 2(主+副本)= 6 TB。如果使用 Elastic Cloud 的温层存储,单价约为每 GB 每月 0.1 美元(示例假设),仅存储一项每月就约 600 美元。若再算上热层节点、Kibana 实例和 Logstash 管道,总成本会显著上升。因此,拆解账单时必须把“原始数据量”和“实际占用存储量”区分开。
三、存储、计算、网络、许可费用的拆解方法
拆解账单可以按以下顺序进行。第一步,从云厂商账单或 Elastic Cloud 账单中导出按资源维度的明细,区分计算、存储、网络、许可四类。第二步,将每类费用映射到具体组件:Elasticsearch 的数据节点费用归入计算,云盘和快照归入存储,跨集群流量归入网络;Kibana 实例归入计算;Logstash 实例归入计算,其出口流量归入网络;Beats 本身不产生直接费用,但其采集量会推高 Elasticsearch 的写入和存储。第三步,按业务线或索引前缀做二次分摊。例如,日志索引按 `logs-app-*`、`logs-nginx-*` 等前缀统计存储量和写入量,再按比例分摊 Elasticsearch 的存储与计算费用。第四步,识别可优化项:副本数是否过高、冷热层是否合理、快照保留策略是否过长、Logstash 管道是否存在重复解析、Kibana 实例是否过多。
拆解示例:某自建集群月度账单中,计算费用 4200 元,存储费用 2800 元,网络费用 600 元,许可费用 1500 元。按索引前缀统计,`logs-app-*` 占用存储 1.2 TB,`logs-nginx-*` 占用 0.8 TB,`metrics-*` 占用 0.5 TB。则存储费用可按 1.2:0.8:0.5 的比例分摊到三个业务线。若发现 `logs-nginx-*` 的副本数为 2,而实际查询频率很低,可将其副本数降为 1,预计节省约 0.4 TB 存储,对应每月约 200 元(示例估算)。
四、从计费机制到成本治理的衔接
理解计费机制之后,成本治理才有抓手。存储侧,可以通过索引生命周期管理(ILM)把冷数据从热层迁移到温层或冷层,降低单位存储成本;计算侧,可以通过调整分片数量、合并小分片、减少不必要的副本,降低节点压力;网络侧,可以尽量让 Logstash 和 Elasticsearch 在同一可用区,减少跨区流量;许可侧,可以评估是否真正需要商业版功能,避免为未使用的特性付费。Beats 侧,则可以通过调整采集频率、过滤无用字段、使用压缩传输,减少写入量和网络流量。
需要强调的是,成本拆解不是一次性的工作。随着业务增长和索引结构变化,账单结构也会变化。建议每月做一次“账单—组件—业务”的三层对账,把异常增长点定位到具体索引或具体管道。只有把计费维度与运维动作对应起来,才能把成本治理从“看账单”变成“改配置”。