dn42: add routecount collectd stats
This commit is contained in:
parent
fb5751220f
commit
e90c920103
|
@ -25,7 +25,17 @@ in {
|
||||||
statistics.enable = true;
|
statistics.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.resolved.enable = false;
|
services.collectd.plugins.exec =
|
||||||
|
let
|
||||||
|
routecount = pkgs.writeScript "run-routecount" ''
|
||||||
|
#!${pkgs.bash}/bin/bash
|
||||||
|
|
||||||
|
export PATH=${lib.makeBinPath (with pkgs; [ ruby iproute ] )}
|
||||||
|
ruby ${./routecount.rb}
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
|
Exec "collectd" "${routecount}"
|
||||||
|
'';
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [ vim ];
|
environment.systemPackages = with pkgs; [ vim ];
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
INTERVAL = ENV['COLLECTD_INTERVAL'].to_i
|
||||||
|
HOSTNAME = ENV['COLLECTD_HOSTNAME']
|
||||||
|
|
||||||
|
def gather cmd
|
||||||
|
counts = {}
|
||||||
|
`#{cmd}`.lines.each do |l|
|
||||||
|
dev = nil
|
||||||
|
gw = nil
|
||||||
|
if l =~ / dev (\S+)/
|
||||||
|
dev = $1
|
||||||
|
end
|
||||||
|
if l =~ / via (\S+)/
|
||||||
|
gw = $1
|
||||||
|
end
|
||||||
|
if gw and dev
|
||||||
|
target = [gw, dev].join "%"
|
||||||
|
counts[target] = 0 unless counts.has_key? target
|
||||||
|
counts[target] += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
counts
|
||||||
|
end
|
||||||
|
|
||||||
|
loop do
|
||||||
|
v4 = gather "ip -4 route"
|
||||||
|
v4.each do |target,count|
|
||||||
|
puts "PUTVAL \"#{HOSTNAME}/exec-routes4/routes-#{target}\" interval=#{INTERVAL} N:#{count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
v6 = gather "ip -6 route"
|
||||||
|
v6.each do |target,count|
|
||||||
|
puts "PUTVAL \"#{HOSTNAME}/exec-routes6/routes-#{target}\" interval=#{INTERVAL} N:#{count}"
|
||||||
|
end
|
||||||
|
|
||||||
|
sleep INTERVAL
|
||||||
|
end
|
Loading…
Reference in New Issue