0
votes

I have an Amazon EC2 instance running and I am trying to set up StatsD+InfluxDB+Grafana. InfluxDB and Grafana work well (and Grafana sees the data from InfluxDB), but I can't manage to get any data from StatsD to InfluxDB.

I have a domain registered, which is pointed to my EC2 instance with an Elastic IP.

What I can see is that: - I can perfectly interact with the InfluxDB database (including inserting values) when I don't use StatsD - StatsD seems to be getting the data I randomly generate from Python (I can see it in its logs). It is sent through the port 8125 to StatsD. - UTC packets sent from StatsD to InfluxDB through port 8086 seem to not be getting to InfluxDB (or not sending....?) - Port 8086 is open on my AWS security settings for both TCP and UDP - Port 8125 is open on my AWS security settings for UDP

I am wondering whether some of my settings are wrong, but I don't know what else to try:

InfluxDB configuration file contains:

  # 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

My StatsD configuration file contains (among other things) the following lines:

{
  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
}

As far as I understand, the process is: Python --> Port 8125 --> StatsD --> Port 8086 --> InfluxDB

Is there a need to use something like Telegraf or statsd-influxdb-backend to connect StatsD and InfluxDB?

I would truly appreciate any helps because I have been trying to set it up for hours and I don't see what could be wrong.

Thanks!

1

1 Answers

1
votes

The part of the stack I'm not sure about is your StatsD server. It's probably having a problem posting the data to InfluxDB. If you use Telegraf instead it should "just work". Telegraf can act as a StatsD server (among many other things) and send data to InfluxDB via either UDP or the regular HTTP protocol.