/blueflood-statsd-backend

A statsD backend that sends metrics to Blueflood

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Blueflood StatsD Backend Build Status

This is a statsD backend that will send metrics aggregated in statsD to an instance of Blueflood.

Blueflood Configuration

The Blueflood statsD endpoint is new and has experimental status.
See blueflood/pull/201.

Assumed endpoint is http://host:port/v1.0/:tenantId/experimental/metrics/statsd.

StatsD Configuration

Your statsD configuration file will need a blueflood section similar to the way you would have one for graphite or the console if you were using those backends.

Here are the values that are currently honored:

  • tenantId: (required) This tenantId will be used to publish metrics to Blueflood.
  • endpoint: (required) The location of the API. e.g.: 'http://metrics.example.com:8080'

Example configuration:

"blueflood": {
  "tenantId": "333333",
  "endpoint": "http://127.0.0.1:19000"
},

You can also send metrics into the Rackspace Cloud Metrics API service by adding the follwing auth section to the configuration:

"blueflood": {
  "tenantId": "333333",
  "endpoint": "http://iad.metrics-ingest.api.rackspacecloud.com:80",
  "authModule": "./auth",
  "authClass": "RaxAuth",
  "authParams": {
    "raxusername": "my_cloud_user_name",
    "raxapikey": "my_rax_api_key"
  }
}

If you happen to use some other Openstack identity service, or even something home-grown, you can create your own authenticator, just make sure to implement the methods indicated by auth.EmptyAuth.

Detailed Installation Instructions

https://github.com/gdusbabek/blueflood-statsd-backend/wiki/Installing-the-Blueflood-Statsd-Backend

Payload format

Payloads sent to Blueflood are currently formatted like this:

{
  "tenantId": "xxxxxxxx",
  "timestamp": 111111111,
  
  "gauges": [
    { 
      "name": "gauge_name",
      "value": 42
    },
    { 
      "name":"another_gauge",
      "value": 4343
    }
  ],
  
  "counters": [
    {
      "name": "counter_name",
      "value": 32,
      "rate": 2.32
    },
    {
      "name": "another_counter",
      "value": 4424,
      "rate": 52.1
    }
  ],
  
  "timers": [
    {
      "name": "timer_name",
      "count": 32,
      "rate": 2.3,
      "min": 1,
      "max": 5,
      "sum": 21,
      "avg": 2.1,
      "median": 3,
      "std": 1.01,
      "percentiles": {
        "999": 1.22222,
        "98": 1.11111
      },
      "histogram": {
        "bin_50": 0,
        "bin_100": 0,
        "bin_inf": 0
      }
    }
  ],
  
  "sets": [
    {
      "name": "set_name",
      "values": ["foo", "bar", "baz"]
    },
    {
      "name": "another_set",
      "values": ["boo", "far", "zab"]
    }
  ]
}

License

This code is licensed under the Apache 2.0 open source license.