Проблема отправки метрик с помощью statsd

Я использовал следующие инструкции для установки и настройки StatsD на сервере Graphite:

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
}

Кто-нибудь сможет пролить свет на проблему?

Спасибо!

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

Другие вопросы по тегам