博客/工程

基准测试Grafana企业指标水平缩放普罗米修斯5亿系列活动

2021年4月27日 7分钟

五年之后领先发展的皮层,Grafana实验室不再是导致这个项目。bob电竞频道2022年3月,我们推出了Grafana米密尔,一个开源的长期储存的普罗米修斯,允许您扩展到10亿个指标。请了解更多阅读TSDB发布博客并参观Grafana米密尔页面。
2022年3月30

因为我们推出Grafana企业指标(GEM),我们自托管普罗米修斯服务,去年,我们看到客户运行它以巨大的规模。我们有集群有超过1亿个指标,宝石的新系列可伸缩的压缩机可以处理估计有6.5亿活跃

不过,我们想运行性能测试,会更加明确地显示宝石的水平可伸缩性,让我们可以获得更准确的TCO的估计。我们也想了解memberlist,择KV商店领事卷,将执行在高指标。

要运行这个测试,我们开发了一个工具benchtool查询,生成指标和交通把宝石。

使用这个工具,我们逐渐增大负载在宝石和使用指标的组合刮Kubernetes和宝石本身去理解它是如何做的。结果是令人印象深刻的。下面是测试的主要收获:

1。宝石硬件使用尺度线性5亿系列活动。

的宝石性能测试的目标是确定的可伸缩性天花板的宝石。确定这一点,我们测试了宝石的水平扩展从1000万活跃系列和5亿系列活动。(这相当于每秒8500万数据点,因为我们每分钟采样一次。)

每百万活跃系列,我们说,我们添加了另一个计算节点集群的宝石。在每个节点上,我们跑三个独立的宝石的过程:一个经销商,摄取和查询器。每个节点是一个e2-standard-16机器丰富。这允许我们独立测量每个服务,同时复制单个进程部署资源共享。

如果在任何时候扩大我们看到超过1%的写或查询请求失败超过1分钟,我们的测试会退出,我们会知道我们的珠宝不再线性扩展。

正如我们所希望的,宝石通过了测试:线性增加节点数就足以处理线性增加的指标数。在最高标准负载我们测试(5亿个指标),500年我们的集群节点仍然强劲,成功服务所有写和查询请求。

2。P99写路径延迟是小于3.1秒。

我们可以告诉写路径能够处理活动系列通过查看返回的状态码ingesters分销商。每个数据点从经销商发送的摄取返回一个状态码表示摄取是否能够成功地过程,数据点。

我们的测试一直看着错误状态码率,并将注册一个失败错误代码超过1%。除了看失败,然而,我们也想看看时间发送的“成功”代码。如果太高,我们会朝着一个错误,因为数据飙升的速度比我们可以处理它。请求的服务时间的到达率应低于连续请求。

从下面的图表,你会看到5亿活跃系列,中位数(p50)状态码发送延迟是在0.2秒。第99个百分位(p99)延迟时间小于3.1秒。这不仅告诉我们,我们能够跟上传入的数据流,但这延迟大约也当一个数据点之间的延迟到达的宝石,可查询。平均而言,花了不到0.2秒的数据点到达其可查询。

与p50延迟,这是相对平坦的,您会注意到,p99延迟增加1亿系列活动,然后下降。经过仔细观察,我们认为这种模式是一个测试工件。对于大规模测试,我们逐渐加大到目标积极系列计数。中等规模的测试(50 - 100指标)更为陡峭的斜坡,结果,看到写延迟初峰值稳定前的测试。

3所示。Memberlist可以处理500 +环成员。

正如我的同事彼得Štibrany博客,我们用八卦来提高可用性皮质权力的宝石。我们想证明八卦-作为替代领事可以支持大型的工作负载,5亿系列活动。

在我们的测试中,我们使用memberlist KV商店。这允许我们显示memberlist能够处理500 +环成员。这是好消息,因为这意味着你可以运行GEM在不同的环境中,你可能没有获得领事。

4所示。查询路径平均延迟是小于1.35秒。

我们也想测试宝石的性能查询路径,所以当我们活动系列的数量增加,我们也增加了查询负载。棘手的部分是确定一个现实的每秒对于一个给定的活性指标数。每秒不仅仅是驱动系统用户查询的数量,还报警和记录规则的数量你有——这两个倾向于规模的数量指标。

我们有很多用户Grafana云模型,我们可以用我们的工作负载,因此我们选择了每秒来测试基于我们所看到的。我们最终使用值每秒300万系列在一个租户。Grafana云使用也帮助确定即时的比率范围查询,80:20。

我们看到在我们的测试很好:为每个级别的活动系列,宝石是能够处理我们下载查询卷:超过99%的查询成功返回的结果。

与写道,然后看着延迟理解成功的查询需要多长时间能够完成:用户等待答案多久?中值查询延迟小于0.6秒即时和范围查询。P99查询延迟总是小于2.6秒范围查询,并为即时查询不到2.2秒。

结论

你可以深入探讨了原始的结果Grafana仪表板快照

虽然这工作集中于压力测试宝石,我们开源benchtool对于那些想在皮层上运行测试。

展望未来,我们想测试宝石压实机的吞吐量。这个组件,改编自Thanos开源项目,压缩块写入ingesters对象存储,删除处理复制数据,合并小块相邻的时间到一个更大的块提高查询的效率。

我们也喜欢关注一些store-gateway吞吐量。这个实验主要集中在查询,达到数据少于12 h老,我们发现的最常见的理由我们的用户。在这种情况下,查询直接ingesters要求数据。

当用户发出查询开始时间视野(> 12 h),不再去ingesters宝石,而是使用store-gateway组件获取对象存储的数据。我们想了解许多并发查询store-gateways可以覆盖和描述他们的反应延迟体积作为查询的函数。

我们将报告当我们完成下一轮性能测试宝石!

如果你想了解更多关于Grafana企业指标,你可以看“运行Prometheus-as-a-service Grafana企业指标”网络研讨会。你也可以阅读更多关于文档的宝石,联系我们如果你想尝试一下!