summary refs log tree commit diff
path: root/nixos/modules/services/monitoring/prometheus/alertmanager.nix
diff options
context:
space:
mode:
authorAlberto Berti <alberto@metapensiero.it>2018-09-04 23:19:26 +0200
committerAlberto Berti <alberto@metapensiero.it>2018-09-04 23:19:26 +0200
commit69e4e4934d0dc9e9a0c991abbcd00b7e81519c79 (patch)
treebd1aab429602ca1b60123682b2158db573e8927f /nixos/modules/services/monitoring/prometheus/alertmanager.nix
parent8dc63ce9aa40614218728fc265121cb2e1dbbc80 (diff)
downloadnixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.tar
nixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.tar.gz
nixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.tar.bz2
nixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.tar.lz
nixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.tar.xz
nixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.tar.zst
nixpkgs-69e4e4934d0dc9e9a0c991abbcd00b7e81519c79.zip
Allow the definition of extra options on commandline
I stumbled upon an issue with the Alertmanager that required
an additional comand line option. See https://groups.google.com/forum/#!msg/prometheus-users/-5wd-P13xCI/lGLBHHgnBgAJ
Diffstat (limited to 'nixos/modules/services/monitoring/prometheus/alertmanager.nix')
-rw-r--r--nixos/modules/services/monitoring/prometheus/alertmanager.nix23
1 files changed, 18 insertions, 5 deletions
diff --git a/nixos/modules/services/monitoring/prometheus/alertmanager.nix b/nixos/modules/services/monitoring/prometheus/alertmanager.nix
index 8a47c9f1e7d..8a44cf7fd8f 100644
--- a/nixos/modules/services/monitoring/prometheus/alertmanager.nix
+++ b/nixos/modules/services/monitoring/prometheus/alertmanager.nix
@@ -9,6 +9,15 @@ let
     if cfg.configText != null then
       pkgs.writeText "alertmanager.yml" cfg.configText
     else mkConfigFile;
+  cmdlineArgs = cfg.extraFlags ++ [
+    "--config.file ${alertmanagerYml}"
+    "--web.listen-address ${cfg.listenAddress}:${toString cfg.port}"
+    "--log.level ${cfg.logLevel}"
+    ] ++ (optional (cfg.webExternalUrl != null)
+      "--web.external-url ${cfg.webExternalUrl}"
+    ) ++ (optional (cfg.logFormat != null)
+      "--log.format ${cfg.logFormat}"
+  );
 in {
   options = {
     services.prometheus.alertmanager = {
@@ -99,6 +108,14 @@ in {
           Open port in firewall for incoming connections.
         '';
       };
+
+      extraFlags = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        description = ''
+          Extra commandline options when launching the Alertmanager.
+        '';
+      };
     };
   };
 
@@ -111,11 +128,7 @@ in {
       after    = [ "network.target" ];
       script = ''
         ${pkgs.prometheus-alertmanager.bin}/bin/alertmanager \
-        --config.file ${alertmanagerYml} \
-        --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
-        --log.level ${cfg.logLevel} \
-        ${optionalString (cfg.webExternalUrl != null) ''--web.external-url ${cfg.webExternalUrl} \''}
-        ${optionalString (cfg.logFormat != null) "--log.format ${cfg.logFormat}"}
+          ${concatStringsSep " \\\n  " cmdlineArgs}
       '';
 
       serviceConfig = {