无法从石墨中获得准确的数字

时间:2013-08-27 21:55:17

标签: graphite statsd

我有一个应用程序通过statsd向石墨发布一些统计数据。其中一个统计信息只是在每次服务收到消息时向statsd发送一个stat增量。我需要显示一个图表,显示此统计信息随时间的相对流量。一般来说,我应该能够显示每个刷新的图表,例如10秒,并显示在这10秒内收到的邮件数量以及给定时间段内的历史记录。但是,无论我如何格式化我的API查询,我似乎都无法获得准确的数据。我读了很多文章,包括这篇文章:

http://code.hootsuite.com/accurate-counting-with-graphite-and-statsd/

这似乎给了一些很好的见解,但仍然没有完全给我我需要的东西。这是我来的关闭:

积分(hitcount(stats.recieved,“10秒”))

但是,我不喜欢这个的累积结果,当我运行这个时,我得到的统计数据远不及我在日志中看到的收到的消息。我接受一些数据包丢失,但我们谈论的是数量级。我知道我做错了什么。只是希望有人可以给我一些关于什么的见解。

1 个答案:

答案 0 :(得分:13)

要检查/尝试的几件事:

为Statsd配置Graphite

检查以确保您已使用Graphite中的retention schemaaggregation设置,这些设置与Statsd将如何发送数据相匹配(即,它每10秒刷新间隔发送一个数据点)。

运行单个Statsd聚合器

确保您只运行一个Statsd实例,因为运行多个statsd守护程序将导致删除指标(因为Graphite将配置为仅存储一个数据点,因为它的最高精度为10s:6h

将UI或网址API中的时间范围限制为少于6小时

当显示数据超过6小时阈值的图表时(例如从现在到7小时前),您将开始看到所显示图表的1分钟累计计数数据(如果您已配置Graphite for statsd with retentions = 10s:6h,1min:7d,10min:5y)。汇总将根据时间范围内最旧的数据点进行(例如,现在直到7天以上=您将获得10分钟汇总)。

如果发送稀疏或“突发”数据并显示旧时间范围(触发聚合)

确认您的xFilesFactor足够低,即使使用高空值,聚合也会产生非空值。例如,前10秒内有100个请求,一分钟内剩余50秒内没有任何请求会导致100, null, null, null, null, null的存储,如果XFilesFactor高于1 /,则数据老化时将归零。 6。使用statsd推荐的石墨配置可以解决这个问题,但最好知道...因为这可能会导致数据丢失。

保存架构或聚合更改

如果在存储任何指标后(在whisper = graphite的存储中)更改了石墨架构或聚合设置,则需要删除指标的.wsp文件(graphite会重新创建它们)或运行{{1} }。

验证设置

您可以通过在.wsp文件上运行whisper-info.py来针对某些私语数据验证设置。在/ graphite / storage / whisper /中找到您的某个指标的.wsp文件 运行:whisper-resize.py。 whisper-info.py输出应该告诉您有关存储设置如何工作的更多信息。

TLDR;

您应确保将Graphite设置为每隔10秒间隔存储一个数据点,以用于来自StatsD的指标。您应该确保Graphite对来自Statsd的计数数据进行求和(不是平均)。这两个都可以使用推荐的Statsd configuration settings来处理。不要运行多个Statsd聚合器。使用UI时,将返回的数据限制为少于6小时,或者在查看超过保留阈值的数据时了解您正在查看的汇总。最后,确保设置(如果您已经发送指标)。