InfluxDB не получает пакеты от StatsD

#sockets #amazon-web-services #influxdb #grafana #statsd

#сокеты #amazon-веб-сервисы #influxdb #графана #statsd

Вопрос:

У меня запущен экземпляр Amazon EC2, и я пытаюсь настроить StatsD InfluxDB Grafana. InfluxDB и Grafana работают хорошо (и Grafana видит данные из InfluxDB), но мне не удается получить какие-либо данные из StatsD в InfluxDB.

У меня зарегистрирован домен, который указывает на мой экземпляр EC2 с эластичным IP.

Что я вижу, так это то, что: — Я могу отлично взаимодействовать с базой данных InfluxDB (включая вставку значений), когда я не использую StatsD — StatsD, похоже, получает данные, которые я случайным образом генерирую из Python (я вижу это в его журналах). Он отправляется через порт 8125 в StatsD. — Пакеты UTC, отправленные из StatsD в InfluxDB через порт 8086, похоже, не попадают в InfluxDB (или не отправляются ….?) — Порт 8086 открыт в моих настройках безопасности AWS как для TCP, так и для UDP — Порт 8125 открыт на моемНастройки безопасности AWS для UDP

Мне интересно, не ошибочны ли некоторые из моих настроек, но я не знаю, что еще попробовать:

Файл конфигурации InfluxDB содержит:

   # hostname = "localhost"
  hostname = MYDOMAIN.com
  [[udp]]
  enabled = true
  bind-address = ":8086"
  database = "MY_DATABASE"
  retention-policy = ""
  batch-size = 1000 # will flush if this many points get buffered
  batch-pending = 10 # number of batches that may be pending in memory
  batch-timeout = "1s" # will flush at least this often even if we haven't hit buffer limit
  read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
  udp-payload-size = 65536
  

Мой файл конфигурации StatsD содержит (среди прочего) следующие строки:

 {
  influxdb: {
/*
    host: '127.0.0.1', // InfluxDB host (default 127.0.0.1)
*/
    host: 'MYDOMAIN.com', // InfluxDB host (default 127.0.0.1)
    port: 8086, // InfluxDB port (default 8086)
    database: 'MY_DATABASE',  // InfluxDB db instance (required)
    username: 'MY_USERNAME', // InfluxDB db username (required)
    password: 'MY_PASSWORD', // InfluxDB db password (required)
    flush: {
      enable: true // enable regular flush strategy (default true)
    },
    proxy: {
      enable: false, // enable the proxy strategy (default false)
      suffix: 'raw', // metric name suffix (default 'raw')
      flushInterval: 1000
    }
  },
  port: 8125, // statsD port
  backends: ['./backends/console'],
  debug: true,
  legacyNamespace: false
}
  

Насколько я понимаю, процесс:
Python -> Порт 8125 -> StatsD -> Порт 8086 -> InfluxDB

Есть ли необходимость использовать что-то вроде Telegraf или statsd-influxdb-backend для подключения StatsD и InfluxDB?

Я был бы очень признателен за любую помощь, потому что я пытался настроить его в течение нескольких часов, и я не вижу, что может быть не так.

Спасибо!

Ответ №1:

Часть стека, в которой я не уверен, — это ваш сервер StatsD. Вероятно, возникла проблема с отправкой данных в InfluxDB. Если вместо этого вы используете Telegraf, он должен «просто работать». Telegraf может выступать в качестве сервера StatsD (среди многих других вещей) и отправлять данные в InfluxDB либо по UDP, либо по обычному протоколу HTTP.

Комментарии:

1. Если я вас хорошо понимаю, вы предлагаете использовать Telegraf для связи StatsD с InfluxDB, я прав? Насколько я понимаю, новая схема будет выглядеть следующим образом: Python -> Порт 8125 -> StatsD -> Telegraf -> InfluxDB

2. Я думаю, он предлагает использовать плагин statsd , который поставляется с Telegraf, вместо statsd.