我已经设置了 Graphite 和 statsd,两者都运行良好。我正在使用来自 graphite/examples 的 example-client.py 来测量负载值,它没问题。
我开始使用 statsd 进行测试,起初它似乎还不错,因为它生成了一些图表,但现在看起来不太好。
首先,这是我的storage-schema.conf
:
priority = 100
pattern = .*
retentions = 1m:395d
我正在使用此命令将数据发送到 statsd:
echo 'ssh.invalid_users:1|c'| nc -w 1 -u localhost 8126
它执行,我在 Graphite Web 界面中单击 Update Graph,它生成一条线,再次点击 Update,该线消失。像this1和this2
如果我执行前面的命令5次,图形线会达到2,它实际上会保存它。再次运行相同的命令两次,图形线达到 2 并消失。
我找不到我配置错误的内容。
预期用途是这样的:
tail -n 0 -f /var/log/auth.log|grep --line-buffered "Invalid user" | while read line; do echo "ssh.invalid_users:1|c" | nc -w 1 -u localhost 8126; done
编辑:
在一个新系统上,我使用最新版本的石墨、碳、nodejs、statsd 重新安装,它的行为相同。
在跟踪 /opt/graphite/storage/log/carbon-cache/carbon-cache-a/query.log时,我得到:
cache query for "stats_counts.ssh.invalid_users" returned 0 values
cache query for "stats.ssh.invalid_users" returned 0 values
每当我在 webapp 中按下更新时。我注意到它会returned 1 values
在绘制线条时随机说,但会恢复到returned 0 values
并且线条消失。
问题是存储模式保留:
retentions = 1m:395d
-取自 graphite wiki http://graphite.wikidot.com/installation我不得不使用
retentions = 10:2160,60:10080,600:262974
或类似的东西。这考虑了每 10 秒保存一次的值。此外,虽然我在更改 storage-schema.conf 后重新启动了 Graphite,但我不得不使用不同的指标名称,因为之前的指标名称会保留相同的行为/保留(我可以重现这一点)。
所以
echo 'ssh.invalid_users:1|c'
我不得不使用echo 'ssh.invalid_userstest2:1|c'
.