Realtime Monitoring

I am trying to setup realtime monitoring using InfluxDB, Grafana and collectd. When I run my tests I keep getting the following error and I am not sure what I am missing:

[ERROR] [01/09/2015 09:57:11.498] [GatlingSystem-akka.actor.default-dispatcher-4] [akka://GatlingSystem/user/GraphiteDataWriter/graphiteSender-19] Connection refused
java.net.ConnectException: Connection refused

Do I also need Graphite installed if I use the stack I listed above or is that all I need to make this work? I followed the instructions I found at http://gatling.io/docs/2.1.2/realtime_monitoring/index.html except for the Graphite section.

Thanks,
Steve

Hi,

Are you sure you enabled graphite in the ‘input-plugins’ section of InfluxDB’s config file ?
InfluxDB does support Graphite protocol for ingesting data, but it’s not enabled by default.

Cheers,

Pierre

It seems that your connection set up is invalid.
Are the host and port you configured in gatling.conf the right ones?
Did you properly enabled Graphite support in InfluxDB?

Hi Pierre/Stephane,

Here are the steps I took:

  1. Modifed gatling.conf like so:

data {
writers = “console, file, graphite” # The lists of DataWriters to which Gatling write simulation data (currently supported : “console”, “file”, “graphite”, “jdbc”)
reader = file # The DataReader used by the charting engine for reading simulation results

graphite {
#light = false # only send the all* stats
host = “gatling.cliqueintelligence.com” # The host where the Carbon server is located
port = 2003 # The port to which the Carbon server listens to
#protocol = “tcp” # The protocol used to send data to Carbon (currently supported : “tcp”, “udp”)
#rootPathPrefix = “gatling” # The common prefix of all metrics sent to Graphite
#bufferSize = 8192 # GraphiteDataWriter’s internal data buffer size, in bytes
}

  1. Modifed my config.toml for InfluxDB as so:

[input_plugins]

Configure the graphite api

[input_plugins.graphite]
enabled = true

address = “0.0.0.0” # If not set, is actually set to bind-address.

port = 2003
database = “gatling” # store graphite data in this database

udp_enabled = true # enable udp interface on the same port as the tcp interface

  1. Modifed collectd.conf like so:

LoadPlugin write_graphite

Host "localhost" Port "2003" Protocol "tcp" LogSendErrors true Prefix "collectd" Postfix "collectd" StoreRates true AlwaysAppendDS false EscapeCharacter "_"
  1. Modified config.js in Grafana like so:

// InfluxDB example setup (the InfluxDB databases specified need to exist)
datasources: {
influxdb: {
type: ‘influxdb’,
url: “http://localhost:8086/db/gatling”,
username: ‘root’,
password: ‘root’,
},
grafana: {
type: ‘influxdb’,
url: “http://localhost:8086/db/grafana”,
username: ‘root’,
password: ‘root’,
grafanaDB: true
},
},

I am sure there is something I am missing. I noticed there is a collectd section in the InfluxDB config file. So I also have to configure that? What should be running on port 2003?

I am not sure if I am supposed to do this or not but I did create a gatling and grafana database in InfluxDB through the admin console. I can load Grafana and I see an import option for influxdb so I believe I have that setup properly.

Any info will be greatly appreciated.

Thanks,
Steve

I git it working!

I didn’t realize that InfluxDB has a config file under current and shared. I modified the one in current but I needed to modify the one in shared. All is working great now.

Thanks!

–Steve

Great news!

Why do we need collectd configuration? And where do you do it - in Influxdb or in Gatling? I am trying to set up a small demo, by having gatling/influxdb/graffana in a multi-container docker setup, and despite having correct configuration couldnt get it to work. The only missing piece in my setup is collectd. Do we really need it?
Thanks!
Gautam

I have some documentation on Gatling and real-time monitoring here:
https://github.com/bbc/notes-on-perf-testing/blob/master/ch/gatling/real_time_graphs.md

I will sumbit a PR on the official Gatling documentation next week.