【问题标题】:Issue sending metrics with statsd使用 statsd 发送指标问题
【发布时间】:2014-10-30 13:48:08
【问题描述】:

我使用以下说明在 Graphite 服务器上安装和配置 StatsD:

https://www.digitalocean.com/community/tutorials/how-to-configure-statsd-to-collect-arbitrary-stats-for-graphite-on-ubuntu-14-04

现在我有一个运行 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。

标签: node.js graphite statsd


【解决方案1】:

8126端口默认有一个管理接口可用:https://github.com/etsy/statsd/blob/master/docs/admin_interface.md

您可能在同一系统中的该端口上有另一个服务正在侦听。

试试这个:

# localConfig.js
{
  graphitePort: 2003
, graphiteHost: "localhost"
, port: 8125
, mgmt_port: 8127
, graphite: {
    legacyNamespace: false
  },
  debug: true,
  dumpMessages: true
}

https://github.com/etsy/statsd/blob/master/exampleConfig.js#L28

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多