]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - modules/private/monitoring/objects_monitoring-1.nix
Add alternate cloud storage for daily backups
[perso/Immae/Config/Nix.git] / modules / private / monitoring / objects_monitoring-1.nix
index 2cba58e03179748048be801cc49865c3873f1943..1aebd262e37e8b7a68b70dbf0243d43dbc527be8 100644 (file)
@@ -1,22 +1,24 @@
-{ config, pkgs, nodes, hostFQDN, emailCheck, ... }:
+{ config, pkgs, nodes, hostFQDN, emailCheck, lib, ... }:
 let
-  to_eriomem_age_dependency = name: {
-    dependent_host_name = "eldiron.immae.eu";
-    host_name           = "eldiron.immae.eu";
-    dependent_service_description = "Eriomem backup for ${name} is not too old";
-    service_description = "Eriomem backup is up and not full";
-    execution_failure_criteria = "u";
-    notification_failure_criteria = "u";
-  };
-  to_eriomem_age = name: {
-    service_description = "Eriomem backup for ${name} is not too old";
-    host_name = "eldiron.immae.eu";
-    use = "external-service";
-    check_command = ["check_eriomem_age" name];
-
-    check_interval = "120";
-    notification_interval = "1440";
-  };
+  to_backup_age_dependency = name: profile: map (remote:
+    {
+      dependent_host_name = "eldiron.immae.eu";
+      host_name           = "eldiron.immae.eu";
+      dependent_service_description = "${remote} backup for ${name} is not too old";
+      service_description = "${remote} backup is up and not full";
+      execution_failure_criteria = "u";
+      notification_failure_criteria = "u";
+    }) profile.remotes;
+  to_backup_age = name: profile: map (remote:
+    {
+      service_description = "${remote} backup for ${name} is not too old";
+      host_name = "eldiron.immae.eu";
+      use = "external-service";
+      check_command = ["check_backup_${remote}_age" name];
+
+      check_interval = "120";
+      notification_interval = "1440";
+    }) profile.remotes;
 in
 {
   host = {
@@ -111,10 +113,21 @@ in
 
     # Backup services
     {
-      service_description = "Eriomem backup is up and not full";
+      service_description = "eriomem backup is up and not full";
+      host_name = "eldiron.immae.eu";
+      use = "external-service";
+      check_command = "check_backup_eriomem";
+
+      check_interval = "120";
+      notification_interval = "1440";
+
+      servicegroups = "webstatus-backup";
+    }
+    {
+      service_description = "ovh backup is up and not full";
       host_name = "eldiron.immae.eu";
       use = "external-service";
-      check_command = "check_eriomem";
+      check_command = "check_ok";
 
       check_interval = "120";
       notification_interval = "1440";
@@ -673,7 +686,7 @@ in
       _webstatus_name = "LDAP";
       _webstatus_url = "ldap.immae.eu";
     }
-  ] ++ map to_eriomem_age (builtins.attrNames nodes.eldiron.config.services.duplyBackup.profiles);
+  ] ++ lib.flatten (lib.mapAttrsToList to_backup_age nodes.eldiron.config.services.duplyBackup.profiles);
   contact = {
     telio-tortay = config.myEnv.monitoring.contacts.telio-tortay // {
       use = "generic-contact";
@@ -688,5 +701,5 @@ in
     telio-tortay = { alias = "Telio Tortay"; members = "immae"; };
     tiboqorl = { alias = "Tiboqorl"; members = "immae"; };
   };
-  servicedependency = map to_eriomem_age_dependency (builtins.attrNames nodes.eldiron.config.services.duplyBackup.profiles);
+  servicedependency = lib.flatten (lib.mapAttrsToList to_backup_age_dependency nodes.eldiron.config.services.duplyBackup.profiles);
 }