From 777221e58f30213d5aaafdeb046aa79ab54b4ad6 Mon Sep 17 00:00:00 2001 From: Lee Hicks Date: Wed, 16 Sep 2015 13:01:30 -0500 Subject: [PATCH 1/2] Adding in v0.9 line protocol support --- config/default.yaml | 2 ++ lib/influxdb.coffee | 47 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/config/default.yaml b/config/default.yaml index 3d250d8..a67028e 100644 --- a/config/default.yaml +++ b/config/default.yaml @@ -20,6 +20,8 @@ influxdb: retentionPolicy: 'default' # Acceptable version are: '0.8' and '0.9' version: '0.9' + # Only applies with version '0.9' + use_json: true modules: diff --git a/lib/influxdb.coffee b/lib/influxdb.coffee index 368bff5..af7c536 100644 --- a/lib/influxdb.coffee +++ b/lib/influxdb.coffee @@ -7,14 +7,22 @@ class Client init: -> useUDP = @config.get('influxdb.use_udp').get() ? false + version = @config.get('influxdb.version').get() ? '0.9' + use_json = @config.get('influxdb.use_json').get() ? false - @send = if useUDP then @sendUDP() else @sendHTTP() + if useUDP + @send = @sendUDP() + else if version == '0.9' and use_json == false + @send = @sendLineHTTP() + else + @send = @sendHTTP() write: (metrics) -> - @send @metricsJson metrics + @send metrics sendHTTP: -> version = @config.get('influxdb.version').get() ? '0.9' + use_json = @config.get('influxdb.use_json').get() ? false host = @config.get('influxdb.host').get() ? 'localhost' port = @config.get('influxdb.port').get() ? 8086 database = @config.get('influxdb.database').get() ? 'bucky' @@ -32,8 +40,28 @@ class Client u: username p: password - (metricsJson) -> - client form: metricsJson, (error, response, body) -> + (metrics) -> + client form: @metricsJson metrics, (error, response, body) -> + logger.log error if error + + sendLineHTTP: -> + host = @config.get('influxdb.host').get() ? 'localhost' + port = @config.get('influxdb.port').get() ? 8086 + database = @config.get('influxdb.database').get() ? 'bucky' + username = @config.get('influxdb.username').get() ? 'root' + password = @config.get('influxdb.password').get() ? 'root' + logger = @logger + endpoint = 'http://' + host + ':' + port + '/write' + client = request.defaults + method: 'POST' + url: endpoint + qs: + u: username + p: password + db: database + + (metrics) -> + client body: @metricsLine metrics, (error, response, body) -> logger.log error if error sendUDP: -> @@ -74,6 +102,17 @@ class Client # @logger.log(JSON.stringify(data, null, 2)) JSON.stringify data + metricsLine: (metrics) -> + data = [] + for key, desc of metrics + row = @parseRow desc + continue unless row + [val, unit, sample] = row + + data.push key + ' ' + 'value=' + [[parseFloat val]] + + return data.join('\n') + parseRow: (row) -> re = /([0-9\.]+)\|([a-z]+)(?:@([0-9\.]+))?/ From 61fdd6861e2d80b6d43d6138907240dcaaeba4af Mon Sep 17 00:00:00 2001 From: Lee Hicks Date: Wed, 16 Sep 2015 13:06:36 -0500 Subject: [PATCH 2/2] Increment to 5.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cb10e7c..5043be9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bucky-server", - "version": "0.5.0", + "version": "0.5.1", "description": "Server to collect stats from the client", "main": "./start.js", "bin": "./start.js",