diff options
author | Jenny <jennifer.graul@wobcom.de> | 2023-06-13 10:15:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-13 10:15:05 +0200 |
commit | 3a86958c974bc3a03c32ab33ecfc0ec9498c7869 (patch) | |
tree | a2840cbe3db43675ba4874edc2e1d14b8d27bd91 /nixos/modules | |
parent | 3b7e34f2a1eee3643187f77e35be4b4065509409 (diff) | |
download | nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.gz nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.bz2 nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.lz nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.xz nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.zst nixlib-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.zip |
prometheus-junos-czerwonk-exporter: init at 0.10.1 + module (#235433)
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/services/monitoring/prometheus/exporters.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix | 72 |
2 files changed, 73 insertions, 0 deletions
diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 235296168934..501f126e1a30 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -40,6 +40,7 @@ let "ipmi" "json" "jitsi" + "junos-czerwonk" "kea" "keylight" "knot" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix b/nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix new file mode 100644 index 000000000000..15e0c9ecb177 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix @@ -0,0 +1,72 @@ +{ config, lib, pkgs, options }: + +with lib; + +let + cfg = config.services.prometheus.exporters.junos-czerwonk; + + configFile = if cfg.configuration != null then configurationFile else (escapeShellArg cfg.configurationFile); + + configurationFile = pkgs.writeText "prometheus-junos-czerwonk-exporter.conf" (builtins.toJSON (cfg.configuration)); +in +{ + port = 9326; + extraOpts = { + environmentFile = mkOption { + type = types.nullOr types.str; + default = null; + description = lib.mdDoc '' + File containing env-vars to be substituted into the exporter's config. + ''; + }; + configurationFile = mkOption { + type = types.nullOr types.path; + default = null; + description = lib.mdDoc '' + Specify the JunOS exporter configuration file to use. + ''; + }; + configuration = mkOption { + type = types.nullOr types.attrs; + default = null; + description = lib.mdDoc '' + JunOS exporter configuration as nix attribute set. Mutually exclusive with the `configurationFile` option. + ''; + example = { + devices = [ + { + host = "router1"; + key_file = "/path/to/key"; + } + ]; + }; + }; + telemetryPath = mkOption { + type = types.str; + default = "/metrics"; + description = lib.mdDoc '' + Path under which to expose metrics. + ''; + }; + }; + serviceOpts = { + serviceConfig = { + DynamicUser = false; + EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ]; + RuntimeDirectory = "prometheus-junos-czerwonk-exporter"; + ExecStartPre = [ + "${pkgs.writeShellScript "subst-secrets-junos-czerwonk-exporter" '' + umask 0077 + ${pkgs.envsubst}/bin/envsubst -i ${configFile} -o ''${RUNTIME_DIRECTORY}/junos-exporter.json + ''}" + ]; + ExecStart = '' + ${pkgs.prometheus-junos-czerwonk-exporter}/bin/junos_exporter \ + -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ + -web.telemetry-path ${cfg.telemetryPath} \ + -config.file ''${RUNTIME_DIRECTORY}/junos-exporter.json \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + }; + }; +} |