Graphite和statsd - 如何将graphe度量标准更改为1分钟

时间:2015-11-12 16:31:40

标签: graphite statsd grafana

我已经使用Graphite安装了statsd。

我写了一个增加计数器的样本(请参见下文)。

我期待在60上看到一条线因为我每秒增加一个计数器,但是我得到的线有点随机,范围在14-29之间。在下面你可以看到图表的截图。

如何将图表更改为每1分钟显示60个?

/etc/statsd/localConfig.js的内容

{
  graphitePort: 2003
, graphiteHost: "localhost"
, port: 8125
, flushInterval: 60000
, graphite: {
    legacyNamespace: false
  }
}                             

storage-schemas.conf的内容

[statsd]
pattern = ^stats\.
retentions = 60s:90d

[carbon]
pattern = ^carbon\.
retentions = 60:90d

[default_1min_for_1day]
pattern = .*
retentions = 60s:14d 

storage-aggregation.conf的内容

[min]
pattern = \.min$
xFilesFactor = 0.1
aggregationMethod = min

[max]
pattern = \.max$
xFilesFactor = 0.1
aggregationMethod = max

[count]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum

[lower]
pattern = \.lower(_\d+)?$
xFilesFactor = 0.1
aggregationMethod = min

[upper]
pattern = \.upper(_\d+)?$
xFilesFactor = 0.1
aggregationMethod = max

[sum]
pattern = \.sum$
xFilesFactor = 0
aggregationMethod = sum

[gauges]
pattern = ^.*\.gauges\..*
xFilesFactor = 0
aggregationMethod = last

[default_average]
pattern = .*
xFilesFactor = 0.5
aggregationMethod = average 

statsd每分钟向石墨发送60个指标。

require 'statsd-ruby'

$statsd = Statsd.new '23.23.82.106', 8125

loop do 
    $statsd.increment 'xxx'
    puts "sent at #{Time.now.strftime "%H:%M:%S"}"
    sleep 1
end

图表看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:1)

来自statsd-graphite docs:

  

确保您的冲洗间隔至少与之相同   最高分辨率保留

否则Graphite将仅记录上次看到的值。 statsd的默认刷新间隔为10秒,但在

[statsd]
pattern = ^stats\.
retentions = 60s:90d

您将最高分辨率保留设置为60秒。因此,您的statsd刷新间隔比Graphite最高分辨率保留时间短。

要修复它,只需使用:

[statsd]
pattern = ^stats\.
retentions = 10s:60s:90d

您可能需要调整wsp文件的大小以匹配新的分辨率配置。

请参阅this blog post(第4点),了解对观察到的影响的稍长解释。