aboutsummaryrefslogtreecommitdiff
path: root/systems/backup-2/monitoring.nix
blob: 6d769e3eee5959ee6bfbd01f44170e2b8d64f2c8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
{ config, pkgs, lib, name, openldap, monitoring, ... }:
let
  hostFQDN = config.hostEnv.fqdn;
  emailCheck = monitoring.lib.emailCheck config.myEnv.monitoring.email_check;
in
{
  config.myServices.monitoring.activatedPlugins = [ "memory" "command" "bandwidth" "file_date" "mysql" "openldap" "redis" "emails" "notify-secondary"];
  config.myServices.monitoring.objects = lib.mkMerge [
    (monitoring.lib.objectsCommon {
      inherit hostFQDN;
      hostName = name;
      master = false;
      processWarn = "60"; processAlert = "70";
      loadWarn = "4.0"; loadAlert = "6.0";
      load15Warn = "1.0"; load15Alert = "1.0";
      interface = builtins.head (builtins.attrNames config.networking.interfaces);
    })

    {
      service = [
        (emailCheck "backup-2" hostFQDN // {
          __passive_servicegroups = "webstatus-email";
        })
        {
          service_description = "Size on /backup2 partition";
          use = "local-service";
          check_command = ["check_local_disk" "10%" "5%" "/backup2"];
          __passive_servicegroups = "webstatus-resources";
        }
        {
          service_description = "Last backup in /backup2/phare is not too old";
          use = "local-service";
          check_command = ["check_last_file_date" "/backup2/phare" "14" "backup"];
          __passive_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"];
          __passive_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"];
          __passive_servicegroups = "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"];
          __passive_servicegroups = "webstatus-databases,webstatus-backup";
        }
        {
          service_description = "Redis replication for eldiron is up to date";
          use = "local-service";
          check_command = ["check_redis_replication" "/run/redis_eldiron/redis.sock"];
          __passive_servicegroups = "webstatus-databases";
        }
        {
          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"];
          __passive_servicegroups = "webstatus-databases,webstatus-backup";
        }
        {
          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"];
          __passive_servicegroups = "webstatus-databases";
        }
        {
          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"];
          __passive_servicegroups = "webstatus-databases,webstatus-backup";
        }
        {
          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;
            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
              include ${openldap.immae-schema}
              moduleload  back_mdb
              backend     mdb
              database    mdb

              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}"
          ];
          __passive_servicegroups = "webstatus-databases";
        }
        {
          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"];
          __passive_servicegroups = "webstatus-databases,webstatus-backup";
        }
      ];
    }
  ];
}