【发布时间】:2014-10-30 13:48:08
【问题描述】:
我使用以下说明在 Graphite 服务器上安装和配置 StatsD:
现在我有一个运行 StatsD 的服务器,当我测试从命令行发送它们时,我没有看到 /var/log/statsd/statsd.log 下记录的指标。这是我看到的:
29 Oct 02:30:39 - server is up
29 Oct 02:47:49 - reading config file: /etc/statsd/localConfig.js
29 Oct 02:47:49 - server is up
29 Oct 14:16:45 - reading config file: /etc/statsd/localConfig.js
29 Oct 14:16:45 - server is up
29 Oct 15:36:47 - reading config file: /etc/statsd/localConfig.js
29 Oct 15:36:47 - DEBUG: Loading server: ./servers/udp
29 Oct 15:36:47 - server is up
29 Oct 15:36:47 - DEBUG: Loading backend: ./backends/graphite
29 Oct 15:36:47 - DEBUG: numStats: 3
日志停留在“numStats: 3”的最后一个条目,即使我不断在命令行输入不同的指标。
以下是我输入的指标示例:
echo "sample.gauge:14|g" | nc -u -w0 127.0.0.1 8125
echo "sample.gauge:10|g" | nc -u -w0 127.0.0.1 8125
echo "sample.count:1|c" | nc -u -w0 127.0.0.1 8125
echo "sample.set:50|s" | nc -u -w0 127.0.0.1 8125
有趣的是,我在 /var/log/statsd/stderr.log 下看到了这个:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1039:14)
at listen (net.js:1061:10)
at Server.listen (net.js:1135:5)
at /usr/share/statsd/stats.js:383:16
at null.<anonymous> (/usr/share/statsd/lib/config.js:40:5)
at EventEmitter.emit (events.js:95:17)
at /usr/share/statsd/lib/config.js:20:12
at fs.js:268:14
at Object.oncomplete (fs.js:107:15)
这是我的 localConfig.js 文件的样子:
{
graphitePort: 2003
, graphiteHost: "localhost"
, port: 8125
, graphite: {
legacyNamespace: false
},
debug: true,
dumpMessages: true
}
有人能说明问题出在哪里吗?
谢谢!
【问题讨论】:
-
报错说statsd地址已经被使用了。在尝试启动 statsd 之前,您可以使用
netstat -l验证这一点吗?您还可以从尝试手动启动 statsd 而不是新贵的 ubuntu 脚本进行调试中受益。 -
当我运行 netstat 时,我看到 8126 两次,一个 TCP 和侦听状态,另一个没有列出状态的 UDP。