mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-27 01:13:05 +00:00
Merge pull request #62452 from Ma27/package-wireguard-prometheus-exporter
prometheus-wireguard-exporter: init at 2.0.1
This commit is contained in:
commit
3827343aec
@ -34,6 +34,7 @@ let
|
|||||||
unifi = import ./exporters/unifi.nix { inherit config lib pkgs; };
|
unifi = import ./exporters/unifi.nix { inherit config lib pkgs; };
|
||||||
varnish = import ./exporters/varnish.nix { inherit config lib pkgs; };
|
varnish = import ./exporters/varnish.nix { inherit config lib pkgs; };
|
||||||
bind = import ./exporters/bind.nix { inherit config lib pkgs; };
|
bind = import ./exporters/bind.nix { inherit config lib pkgs; };
|
||||||
|
wireguard = import ./exporters/wireguard.nix { inherit config lib pkgs; };
|
||||||
};
|
};
|
||||||
|
|
||||||
mkExporterOpts = ({ name, port }: {
|
mkExporterOpts = ({ name, port }: {
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
{ config, lib, pkgs }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.prometheus.exporters.wireguard;
|
||||||
|
in {
|
||||||
|
port = 9586;
|
||||||
|
extraOpts = {
|
||||||
|
verbose = mkEnableOption "Verbose logging mode for prometheus-wireguard-exporter";
|
||||||
|
|
||||||
|
wireguardConfig = mkOption {
|
||||||
|
type = with types; nullOr (either path str);
|
||||||
|
default = null;
|
||||||
|
|
||||||
|
description = ''
|
||||||
|
Path to the Wireguard Config to
|
||||||
|
<link xlink:href="https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/2.0.0#usage">add the peer's name to the stats of a peer</link>.
|
||||||
|
|
||||||
|
Please note that <literal>networking.wg-quick</literal> is required for this feature
|
||||||
|
as <literal>networking.wireguard</literal> uses
|
||||||
|
<citerefentry><refentrytitle>wg</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||||
|
to set the peers up.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
serviceOpts = {
|
||||||
|
script = ''
|
||||||
|
${pkgs.prometheus-wireguard-exporter}/bin/prometheus_wireguard_exporter \
|
||||||
|
-p ${toString cfg.port} \
|
||||||
|
${optionalString cfg.verbose "-v"} \
|
||||||
|
${optionalString (cfg.wireguardConfig != null) "-n ${cfg.wireguardConfig}"}
|
||||||
|
'';
|
||||||
|
|
||||||
|
path = [ pkgs.wireguard-tools ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
DynamicUser = true;
|
||||||
|
AmbientCapabilities = [ "CAP_NET_ADMIN" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -315,6 +315,29 @@ let
|
|||||||
succeed("curl -sSf http://localhost:9131/metrics | grep -q 'varnish_up 1'");
|
succeed("curl -sSf http://localhost:9131/metrics | grep -q 'varnish_up 1'");
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wireguard = let snakeoil = import ./wireguard/snakeoil-keys.nix; in {
|
||||||
|
exporterConfig.enable = true;
|
||||||
|
metricProvider = {
|
||||||
|
networking.wireguard.interfaces.wg0 = {
|
||||||
|
ips = [ "10.23.42.1/32" "fc00::1/128" ];
|
||||||
|
listenPort = 23542;
|
||||||
|
|
||||||
|
inherit (snakeoil.peer0) privateKey;
|
||||||
|
|
||||||
|
peers = singleton {
|
||||||
|
allowedIPs = [ "10.23.42.2/32" "fc00::2/128" ];
|
||||||
|
|
||||||
|
inherit (snakeoil.peer1) publicKey;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
waitForUnit("prometheus-wireguard-exporter.service");
|
||||||
|
waitForOpenPort(9586);
|
||||||
|
succeed("curl -sSf http://localhost:9586/metrics | grep '${snakeoil.peer1.publicKey}'");
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
mapAttrs (exporter: testConfig: (makeTest {
|
mapAttrs (exporter: testConfig: (makeTest {
|
||||||
|
26
pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
Normal file
26
pkgs/servers/monitoring/prometheus/wireguard-exporter.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ stdenv, rustPlatform, fetchFromGitHub, lib, Security }:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "wireguard-exporter";
|
||||||
|
version = "2.0.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "MindFlavor";
|
||||||
|
repo = "prometheus_wireguard_exporter";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "11yrry8fzalcigqsx1wx371w543gdcsx48fd7dacbrsfl2dk2azp";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoSha256 = "1wnk39p144zjsdhnyjk6y41xs448bxnbbxkqk53r6i2f2wzrsk2m";
|
||||||
|
|
||||||
|
buildInputs = lib.optional stdenv.isDarwin Security;
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A Prometheus exporter for WireGuard, written in Rust.";
|
||||||
|
license = licenses.mit;
|
||||||
|
homepage = https://github.com/MindFlavor/prometheus_wireguard_exporter;
|
||||||
|
maintainers = with maintainers; [ ma27 ];
|
||||||
|
};
|
||||||
|
}
|
@ -14625,6 +14625,9 @@ in
|
|||||||
prometheus-unifi-exporter = callPackage ../servers/monitoring/prometheus/unifi-exporter { };
|
prometheus-unifi-exporter = callPackage ../servers/monitoring/prometheus/unifi-exporter { };
|
||||||
prometheus-varnish-exporter = callPackage ../servers/monitoring/prometheus/varnish-exporter.nix { };
|
prometheus-varnish-exporter = callPackage ../servers/monitoring/prometheus/varnish-exporter.nix { };
|
||||||
prometheus-jmx-httpserver = callPackage ../servers/monitoring/prometheus/jmx-httpserver.nix { };
|
prometheus-jmx-httpserver = callPackage ../servers/monitoring/prometheus/jmx-httpserver.nix { };
|
||||||
|
prometheus-wireguard-exporter = callPackage ../servers/monitoring/prometheus/wireguard-exporter.nix {
|
||||||
|
inherit (darwin.apple_sdk.frameworks) Security;
|
||||||
|
};
|
||||||
|
|
||||||
prometheus-cpp = callPackage ../development/libraries/prometheus-cpp { };
|
prometheus-cpp = callPackage ../development/libraries/prometheus-cpp { };
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user