summary refs log tree commit diff
path: root/nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix
diff options
context:
space:
mode:
authorJenny <jennifer.graul@wobcom.de>2023-06-13 10:15:05 +0200
committerGitHub <noreply@github.com>2023-06-13 10:15:05 +0200
commit3a86958c974bc3a03c32ab33ecfc0ec9498c7869 (patch)
treea2840cbe3db43675ba4874edc2e1d14b8d27bd91 /nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix
parent3b7e34f2a1eee3643187f77e35be4b4065509409 (diff)
downloadnixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar
nixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.gz
nixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.bz2
nixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.lz
nixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.xz
nixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.tar.zst
nixpkgs-3a86958c974bc3a03c32ab33ecfc0ec9498c7869.zip
prometheus-junos-czerwonk-exporter: init at 0.10.1 + module (#235433)
Diffstat (limited to 'nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix')
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/junos-czerwonk.nix72
1 files changed, 72 insertions, 0 deletions
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 00000000000..15e0c9ecb17
--- /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}
+      '';
+    };
+  };
+}