summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2020-04-13 18:39:51 +0200
committerRobin Gloster <mail@glob.in>2020-04-13 18:39:51 +0200
commite484ca3d9b34bc27cd7e3611b6d3d483bd07c000 (patch)
tree590a26385403ad89f8d49c562a0dd479b091a546
parent326756bbebf7114ea11b5db7d544a3b08d9c59c6 (diff)
downloadnixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.tar
nixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.tar.gz
nixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.tar.bz2
nixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.tar.lz
nixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.tar.xz
nixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.tar.zst
nixpkgs-e484ca3d9b34bc27cd7e3611b6d3d483bd07c000.zip
alertmanager: implement HA clustering support
-rw-r--r--nixos/modules/services/monitoring/prometheus/alertmanager.nix11
1 files changed, 11 insertions, 0 deletions
diff --git a/nixos/modules/services/monitoring/prometheus/alertmanager.nix b/nixos/modules/services/monitoring/prometheus/alertmanager.nix
index 69e3dcf1408..1b02ebf3704 100644
--- a/nixos/modules/services/monitoring/prometheus/alertmanager.nix
+++ b/nixos/modules/services/monitoring/prometheus/alertmanager.nix
@@ -21,6 +21,8 @@ let
     "--config.file /tmp/alert-manager-substituted.yaml"
     "--web.listen-address ${cfg.listenAddress}:${toString cfg.port}"
     "--log.level ${cfg.logLevel}"
+    "--storage.path /var/lib/alertmanager"
+    (toString (map (peer: "--cluster.peer ${peer}:9094") cfg.clusterPeers))
     ] ++ (optional (cfg.webExternalUrl != null)
       "--web.external-url ${cfg.webExternalUrl}"
     ) ++ (optional (cfg.logFormat != null)
@@ -120,6 +122,14 @@ in {
         '';
       };
 
+      clusterPeers = mkOption {
+        type = types.listOf types.str;
+        default = [];
+        description = ''
+          Initial peers for HA cluster.
+        '';
+      };
+
       extraFlags = mkOption {
         type = types.listOf types.str;
         default = [];
@@ -162,6 +172,7 @@ in {
         '';
         serviceConfig = {
           Restart  = "always";
+          StateDirectory = "alertmanager";
           DynamicUser = true; # implies PrivateTmp
           EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
           WorkingDirectory = "/tmp";