diff --git a/.gitignore b/.gitignore index 1687d79..c2658d7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ node_modules/ -config.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..31ca869 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ + +FROM dockerfile/nodejs +MAINTAINER Teemu Heikkilä + +ADD . /data +RUN npm install +CMD /usr/local/bin/node start.js -c config.json \ No newline at end of file diff --git a/README.md b/README.md index 4e73b14..989217f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,17 @@ -HoardD, send ALL metrics to graphite! +HoardD forkd! ===================================== +This fork contains dockerfile and modified HoardD with support for ENV-vars (graphite host and fqnd) +Also fixed deprecated Path.exists functions into Fs.exists. + + +Running +-------------- +`docker build -t hoardd .` + +`docker run -d -e CARBON_HOST=carbon.server.org -e FQDN=docker.host.hostname -v /proc:/host_proc:ro -t hoardd` + + What is HoardD --------------- diff --git a/config.json.example b/config.json similarity index 62% rename from config.json.example rename to config.json index 5298f53..798da46 100644 --- a/config.json.example +++ b/config.json @@ -1,10 +1,10 @@ { "carbonHost": "localhost", "carbonPort": 2003, - "scriptPath": "/full/path/to/scripts/dir", + "scriptPath": "/data/scripts", "fqdn": "fqdn.of.this.server", - "sampleInterval": 10, - "sendEach": 6, + "sampleInterval": 5, + "sendEach": 3, "maxFailedSens": 10000, "namespace": "hoard" } diff --git a/scripts/interfaces.coffee b/scripts/interfaces.coffee index 97b87bd..dac2ad2 100644 --- a/scripts/interfaces.coffee +++ b/scripts/interfaces.coffee @@ -12,7 +12,7 @@ module.exports = (server) -> ] # Reads from proc - procfile = '/proc/net/dev' + procfile = '/host_proc/net/dev' content = Fs.readFileSync(procfile, 'ascii').trim() for line in content.split('\n')[2...] continue if line.match /lo:/ diff --git a/scripts/load_avg.coffee b/scripts/load_avg.coffee index 15aace9..f589e6d 100644 --- a/scripts/load_avg.coffee +++ b/scripts/load_avg.coffee @@ -7,8 +7,8 @@ module.exports = (server) -> server.cli.debug "Running load average script" # Read from /proc - procfile = '/proc/loadavg' - if Path.existsSync procfile + procfile = '/host_proc/loadavg' + if Fs.existsSync procfile data = Fs.readFileSync(procfile, 'utf-8') [one, five, fifteen] = data.split(' ', 3) server.push_metric "#{metricPrefix}.short", one diff --git a/scripts/memory.coffee b/scripts/memory.coffee index b4dd49a..133252e 100644 --- a/scripts/memory.coffee +++ b/scripts/memory.coffee @@ -5,7 +5,7 @@ module.exports = (server) -> metricPrefix = "#{server.fqdn}.memory" server.cli.debug 'Running the memory script' # From the proc - memfile = '/proc/meminfo' + memfile = '/host_proc/meminfo' content = Fs.readFileSync memfile, 'ascii' mem = {} diff --git a/src/start.coffee b/src/start.coffee index 316da02..fa9e0c9 100644 --- a/src/start.coffee +++ b/src/start.coffee @@ -12,9 +12,11 @@ module.exports = entry_point = () -> 'config': ['c', 'Configuration file path', 'path', './config.json'] Cli.main (args, options) -> - if Path.existsSync options.config + if Fs.existsSync options.config try conf = JSON.parse(Fs.readFileSync(options.config, 'utf-8')) + conf.carbonHost = if process.env.CARBON_HOST then process.env.CARBON_HOST else conf.carbonHost + conf.fqdn = if process.env.FQDN then process.env.FQDN else conf.fqdn catch error Cli.debug "Error parsing config file: #{error}" else