From e79bb4e2973046ca7e59920b625cd2eed53e9d72 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 15 Apr 2021 00:23:27 +0200 Subject: [PATCH] nixos-module/collectd: add unbound.rb --- nix/nixos-module/collectd/default.nix | 4 ++++ nix/nixos-module/collectd/unbound.rb | 20 ++++++++++++++++++++ nix/nixos-module/container/dnscache.nix | 4 ++++ 3 files changed, 28 insertions(+) create mode 100644 nix/nixos-module/collectd/unbound.rb diff --git a/nix/nixos-module/collectd/default.nix b/nix/nixos-module/collectd/default.nix index 9851699..a79b038 100644 --- a/nix/nixos-module/collectd/default.nix +++ b/nix/nixos-module/collectd/default.nix @@ -66,6 +66,10 @@ in in '' Exec "collectd" "${pkgs.ruby}/bin/ruby" "${./dhcpcount.rb}" "${toString maxTimeout}" ''; + }) (lib.optionalAttrs config.services.unbound.enable { + exec = '' + Exec "collectd" "${pkgs.ruby}/bin/ruby" "${./unbound.rb}" + ''; }) ]; }; } diff --git a/nix/nixos-module/collectd/unbound.rb b/nix/nixos-module/collectd/unbound.rb new file mode 100644 index 000000000..610b0b6 --- /dev/null +++ b/nix/nixos-module/collectd/unbound.rb @@ -0,0 +1,20 @@ +loop do + `/run/current-system/sw/bin/unbound-control stats_noreset` + .lines + .filter { |l| l =~ /^total\./ } + .each { |l| + if l =~ /total\.(.+?)=([\d\.]+)/ + name = $1 + value = $2.to_f + if name =~ /\.avg$/ || name =~ /\.median$/ || name =~ /\.max$/ || name =~ /\.min$/ + ty = "gauge" + else + ty = "derive" + value = value.to_i + end + puts "PUTVAL dnscache/unbound/#{ty}-#{name} N:#{value}" + end + } + + sleep 10 +end diff --git a/nix/nixos-module/container/dnscache.nix b/nix/nixos-module/container/dnscache.nix index 4c61c19..6a9dfaa 100644 --- a/nix/nixos-module/container/dnscache.nix +++ b/nix/nixos-module/container/dnscache.nix @@ -19,6 +19,10 @@ lib.mkIf config.site.hosts.${hostName}.services.dnscache.enable { "127.0.0.0/8" ]; extraConfig = '' + remote-control: + control-enable: yes + control-use-cert: no + forward-zone: name: "." forward-tls-upstream: yes