add freifunk_node
This commit is contained in:
parent
aa05ec171d
commit
1e77ecffa9
|
@ -18,7 +18,7 @@ let
|
||||||
buildInputs = [ gems.wrappedRuby ];
|
buildInputs = [ gems.wrappedRuby ];
|
||||||
|
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
install -D -m755 $script $out/bin/${name}
|
install -D -m755 ${script} $out/bin/${name}
|
||||||
patchShebangs $out/bin/${name}
|
patchShebangs $out/bin/${name}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -27,4 +27,5 @@ in {
|
||||||
luftdaten = wrapScript "luftdaten" ./luftdaten/scrape.rb;
|
luftdaten = wrapScript "luftdaten" ./luftdaten/scrape.rb;
|
||||||
fhem = wrapScript "fhem" ./fhem/scrape.rb;
|
fhem = wrapScript "fhem" ./fhem/scrape.rb;
|
||||||
matemat = wrapScript "matemat" ./matemat/scrape.rb;
|
matemat = wrapScript "matemat" ./matemat/scrape.rb;
|
||||||
|
freifunk_node = wrapScript "freifunk_node" ./freifunk_node/scrape.rb;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require 'open-uri'
|
||||||
|
require 'json'
|
||||||
|
require 'influxdb'
|
||||||
|
|
||||||
|
HOST = ARGV[0]
|
||||||
|
|
||||||
|
data = JSON.parse open("http://#{HOST}/sysinfo-json.cgi").read()
|
||||||
|
|
||||||
|
values = {}
|
||||||
|
|
||||||
|
def recurse(data, values, prefix='')
|
||||||
|
new_prefix = proc do |name|
|
||||||
|
if prefix == ""
|
||||||
|
name
|
||||||
|
else
|
||||||
|
"#{prefix}.#{name}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if data.kind_of? Hash
|
||||||
|
data.each do |k, v|
|
||||||
|
recurse v, values, new_prefix.call(k)
|
||||||
|
end
|
||||||
|
elsif data.kind_of? Array
|
||||||
|
data.zip(0..).each do |(v, i)|
|
||||||
|
recurse v, values, new_prefix.call(i)
|
||||||
|
end
|
||||||
|
elsif data.kind_of? String and data != ""
|
||||||
|
data.strip!
|
||||||
|
data = data.split(/,/)
|
||||||
|
if data.length > 1
|
||||||
|
data.zip(0..).each do |(v, i)|
|
||||||
|
recurse v, values, new_prefix.call(i)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
data = data[0].split(/ +/)
|
||||||
|
if data.length > 1
|
||||||
|
data.zip(0..).each do |(v, i)|
|
||||||
|
recurse v, values, new_prefix.call(i)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if data[0] =~ /^\d+$/
|
||||||
|
values[prefix] = data[0].to_i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elsif data.kind_of? Integer or data.kind_of? Float
|
||||||
|
values[prefix] = data
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
node_id = data['data']['common']['node']
|
||||||
|
recurse data['data'], values
|
||||||
|
|
||||||
|
db = InfluxDB::Client.new(url: "http://grafana.hq.c3d2.de:8086/freifunk")
|
||||||
|
db.write_point 'node', { values: values, tags: { node_id: node_id } }
|
Loading…
Reference in New Issue