作者:来自 Elastic Nima Rezainia, Bill Easton
最新版本 8.12 标志着 Elastic Agent 和 Beats 调整方面的重大转变。 在此更新中,Elastic® 引入了 Performance Presets,旨在简化用户的调整过程并增强默认设置以提高性能。
如今,Elastic Agent 使用的默认调整参数自 Beats 诞生以来就已经存在,并且经过精心挑选,以确保数据尽快进入 Elasticsearch® 进行分析。 从历史上看,调整 Elastic Agent 和 Beats 的性能需要深厚的知识,而对它们进行基准测试以获得最佳组合则需要更多的专业知识。
借助 8.12,我们让绝大多数客户不再需要调整 Elastic Agent 和 Beats。 我们为 Elastic Agent 和 Beats 引入了新的默认设置,可将吞吐量提高高达 50%,将内存使用量减少 10%,将 Elasticsearch 的并发连接减少高达 80%,并减少 Beats/Elasticsearch 中的磁盘 I/O 代理请求最多增加 50%。
如果新的默认设置不能满足你的需求,或者你可能需要更多吞吐量或想要扩展到更大的代理(agents)部署,下一步不是调整 YAML 文件中的参数; 相反,新的性能预设采用了我们值得信赖的客户、现场团队和性能测试台的最佳实践,让你可以选择最适合您需求的预设,从而有效地提供量身定制的配置来满足你不同的性能要求。 让我们探索四种预设和新的自定义选项,并了解哪一种最适合你的需求:
从 8.12 开始,Balanced 预设是默认预设,它优化 Elastic Agent 以实现合理的吞吐量和资源利用率水平,使其成为各种 Elastic Agent 使用案例的首选。
对于那些熟悉 Beats 中可用的各种设置的人来说,以下是 8.12 中默认值发生的具体更改。 这些新的默认设置将每秒事件吞吐量 (EPS) 提高了 25%。
请注意:这些设置可能会在未来版本中发生变化,因为我们会继续调整这些设置以获得最佳性能。
Configuration | Current Default | Balanced |
bulk_max_size | 50 | 1600 |
workers | 1 | 1 |
queue.mem.events | 4096 | 3200 |
flush.min_events | 2048 | 1600 |
flush.timeout | 1 | 10 |
compression | 1 | 1 |
idle_timeout | 6 | 3 |
Optimized for Throughput 预设侧重于实现 4 倍以上的数据摄取率,使其成为需要代理处理大量事件的场景的理想选择。 它采用了 Balanced 预设的最佳部分,但更自由地消耗 CPU 和内存,并在与 Elasticsearch 的多个附加连接之间复用事件。
如果你要将 Elastic Agent 部署到数万个系统,则 Optimized for Scale 预设可对 Elastic Agent 进行微调,以便从数万或数十万个设备收集较少量的主机数据(例如日志或指标)。 它采用了 Balanced 预设的最佳部分,但以数据摄取的短暂延迟为代价,与默认值相比,Elasticsearch 的开放连接总数减少了 30 倍。 如果你在 Elasticsearch 之前使用反向代理或负载均衡器,这会产生很大的差异。 此设置的 EPS 性能与平衡设置非常相似。
Optimized for Latency 预设可缩短数据摄取和处理之间的时间,使其适合低吞吐量但需要低延迟的实时分析和应用程序。 此预设与 8.12 之前的 Elastic Agent 默认设置密切相关,是测试新预设时遇到的任何问题的完美后备方案。
在你的 Elastic 环境中,请务必注意,这些预设仅影响版本 8.12+ 上的代理。 旧版本的 Agent 将继续使用其现有设置。
虽然预设旨在简化 Elastic Agent 的调整过程,但 Custom 选项允许用户对性能进行更精细的控制。 你仍然可以参考 Elastic 提供的旧指南,该指南在 Agent 上仍然相关,因为 queue.mem.events 现在也是可配置的。此处提供的旧指南提供了有关调整 Elastic Beats 性能的实际示例和见解,包括批量大小、工作人员数量等。
为了提供进一步的指导,我们的公共文档中的表格显示了对 EPS 吞吐量性能的影响,作为平衡预设性能的函数,对于这些调整参数的各种排列,适合需要更精细控制的用户。 选择自定义预设时可以设置这些参数。
将通过将 preset 键添加到 agent policy 中的 Elasticsearch output 来选择 preset。 最初,预设键的有效值为:balanced, throughput, scale, latency 及 custom。一个示例配置是:
outputs:
default:
type: elasticsearch
hosts: [127.0.0.1:9200]
api_key: "example-key"
# Must be one of "balanced", "throughput", "scale", "latency", "custom"
# Unknown preset values move the output to the failed state with an appropriate error.
preset: "throughput"
bulk_max_size: 1024
worker: 8
更多阅读请参考 https://github.com/elastic/elastic-agent/issues/3797
总之,Elastic 的新性能预设提供了一种便捷的方法来根据不同的性能需求微调 Elastic Agent。 无论你需要平衡的性能、高吞吐量、可扩展性还是低延迟,这些预设都能提供优化的配置来满足你的需求。 祝微调愉快!
Elastic 8.12 中还有哪些新功能? 查看 8.12 公告帖子了解更多>>
原文:Using Elastic Agent Performance Presets in 8.12 | Elastic Blog