1、ES
1.1 内存:ES非常消耗内存,不是JVM用到的内存,而是机器的物理内存,ES在运行期间对JVM Heap(堆内存)的需求较小
实践建议:
- 数据量过百万,建议单台服务器的内存至少要有16GB;
- 数据量过亿,建议单台服务器的内存至少要有64GB
1.2 CPU:ES集群对CPU的要求比较低
实践建议:
- 小型集群(开发/测试):2-4个vCPU。
- 中型集群(中等负载的生产环境):8-16个vCPU。
- 大型集群(高负载的生产环境):16个以上的vCPU
1.3 JVM配置:ES服务中,JVM Heap 堆内存一般不超过服务器物理内存的一半,建议1/4。
2、Logstash
CPU: 2-4个vCPU,具体取决于日志处理和过滤的复杂度。
内存: 至少4GB RAM,推荐8GB RAM或更多,具体取决于处理的数据量。
存储: 通常不需要大量存储,因为Logstash处理完数据后会将其转发到Elasticsearch。
3、Kibana
CPU: 2-4个vCPU。
内存: 至少4GB RAM,推荐8GB RAM或更多,具体取决于用户查询和仪表盘的复杂度。
存储: 通常不需要大量存储,除非在Kibana中保存了大量的持久化仪表板和可视化。
4、建议中型生产环境的Elastic Stack集群:
Elasticsearch:
3个主节点,每个节点:4 vCPU, 8GB RAM。
3个数据节点,每个节点:8 vCPU, 32GB RAM, 2TB SSD。
Logstash:
2个实例,每个实例:4 vCPU, 8GB RAM。
Kibana:
2个实例,每个实例:4 vCPU, 8GB RAM。
Beats:
部署在每个需要收集数据的主机上,资源需求较低,例如:1 vCPU, 1GB RAM。