在我的应用程序中,我经常调用外部 API。每次通话的持续时间(以秒为单位)都会记录在 Graphite 中。
这部分工作正常,但我也想绘制调用总数。我是否必须为此单独收集另一个数据,或者我可以从现有数据中获取数据点的数量。
不,您不必这样做。假设你的计时器是 -Stats.app.api.call_duration.time_taken
Graphite 会自动为你计算一组东西。这些包括count
. 这将保留您更新计时器的次数。这取决于粒度。所以 Graphite 计算它并为您提供每秒计数:count_ps
.
进行 API 调用时,您是否将数据直接提交给 Graphite (carbon)?如果是这种情况,您应该知道,根据您的耳语数据库的分辨率(例如 1 分钟或 5 分钟),Graphite 仅保存在给定时间间隔内提交的最新数据点!因此,人们使用例如statsd
让它在 Graphite 前面的一个间隔内平均所有数据点。
由于这一点以及事实,使用数据点的数量来清除和平均旧数据将很难正确(甚至是不可能的)。您应该将其作为不同的指标提交,并注意这个间隔。