aboutsummaryrefslogblamecommitdiff
path: root/modules/private/monitoring/objects_backup-2.nix
blob: 28032a477dea0e578758db67ea1240b8472372c0 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
                                                 










                                                                                         
 
                                                                         
             


                                                                                                               
     
                                       




                                                                 
                                                                                  




                                                                              
                                                                                  
                                                                            
                            
                                                                               

     
                                                                                  
                                                                             
                            
                                                                                

     
                                                                                                      



                                                                                                        
     
                                                                                     




                                                                                  
                                                                                                      




                                                                                              
                                                                                     

                                                                          
                                                                                                                                                

     
                                                                                                      



                                                                                              
     
                                                                                     







                                                                                        



                                                                  











                                            
                                                                                    




                  
                                                                                                      



                                                                                                    

    
{ config, pkgs, lib, hostFQDN, emailCheck, ... }:
let
  defaultPassiveInfo = {
    filter = lib.attrsets.filterAttrs
      (k: v: builtins.elem k ["service_description"] || builtins.substring 0 1 k == "_");
    use = "external-passive-service";
    freshness_threshold = "450";
    retry_interval = "1";
    servicegroups = "webstatus-resources";
    host_name = hostFQDN;
  };
in
{
  activatedPlugins = [ "file_date" "mysql" "openldap" "redis" "emails" ];
  service = [
    (emailCheck "backup-2" hostFQDN // {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-email"; freshness_threshold = "1350"; };
    })
    {
      passiveInfo = defaultPassiveInfo;
      service_description = "Size on /backup2 partition";
      use = "local-service";
      check_command = ["check_local_disk" "10%" "5%" "/backup2"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-backup"; };
      service_description = "Last backup in /backup2/phare is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/phare" "14" "backup"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-backup"; };
      service_description = "Last backup in /backup2/dilion is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/dilion" "14" "backup"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-backup"; };
      service_description = "Last backup in /backup2/ulminfo is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/ulminfo" "14" "backup"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
      service_description = "Last postgresql dump in /backup2/eldiron/postgresql_backup is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/eldiron/postgresql_backup" "7" "postgres"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases"; };
      service_description = "Redis replication for eldiron is up to date";
      use = "local-service";
      check_command = ["check_redis_replication" "/run/redis_eldiron/redis.sock"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
      service_description = "Last redis dump in /backup2/eldiron/redis_backup is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/eldiron/redis_backup" "7" "redis"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases"; };
      service_description = "Mysql replication for eldiron is up to date";
      use = "local-service";
      check_command = ["check_mysql_replication" "/run/mysqld_eldiron/mysqld.sock" config.secrets.fullPaths."mysql_replication/eldiron/client"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
      service_description = "Last mysql dump in /backup2/eldiron/mysql_backup is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/eldiron/mysql_backup" "7" "mysql"];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases"; };
      service_description = "Openldap replication for eldiron is up to date";
      use = "local-service";
      check_command = let
        name = "eldiron";
        hcfg = config.myServices.databasesReplication.openldap.hosts.eldiron;
        base = config.myServices.databasesReplication.openldap.base;
        eldiron_schemas = pkgs.callPackage ../databases/openldap/eldiron_schemas.nix {};
        ldapConfig = pkgs.writeText "slapd.conf" ''
          include ${pkgs.openldap}/etc/schema/core.schema
          include ${pkgs.openldap}/etc/schema/cosine.schema
          include ${pkgs.openldap}/etc/schema/inetorgperson.schema
          include ${pkgs.openldap}/etc/schema/nis.schema
          ${eldiron_schemas}
          moduleload  back_hdb
          backend     hdb
          database    hdb

          suffix    "${hcfg.base}"
          directory ${base}/${name}/openldap
          '';
      in [
        "check_openldap_replication"
        hcfg.url
        hcfg.dn
        config.secrets.fullPaths."openldap_replication/eldiron/replication_password"
        hcfg.base
        ldapConfig
      ];
    }
    {
      passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-databases,webstatus-backup"; };
      service_description = "Last openldap dump in /backup2/eldiron/openldap_backup is not too old";
      use = "local-service";
      check_command = ["check_last_file_date" "/backup2/eldiron/openldap_backup" "7" "openldap"];
    }
  ];
}