aboutsummaryrefslogblamecommitdiff
path: root/modules/private/monitoring/objects_monitoring-1.nix
blob: 563be167657b63d6ceadadb2f09baf8e21da6923 (plain) (tree)
1
2
3
                                                        
 
                                                                     





















                                                   

                                        






















































                                                                            







                                                         
                                     

     
                     




                                                                  
 

                                       
 

                                           

                                                            

                                     
                                 

                             
                                     



                                         










































































































































































































































                                                                                             










                                                                                                     















































































                                                                                                    
                                                                                       










































                                                                                       
                                                                                    























































































                                                                                                                    
                                                                             


























































































                                                                                                           










                                                     







                                                                                                    
                                        
     






                                                                                         
                                        
     
    




                                                                     



                                                             

                  
                                                                  
                                                          

    
{ config, pkgs, nodes, hostFQDN, emailCheck, lib, ... }:
{
  activatedPlugins = [ "dns" "ftp" "git" "http" "imap" "ovh" "tcp" ];
  host = {
    # Dummy host for testing
    # "dummy-host" = {
    #   alias = "dummy.host";
    #   address = "dummy.host";
    #   use = "linux-server";
    #   check_command = "check_ok";
    # };
  };
  service = [
    # Dummy service for testing
    # {
    #   service_description = "Dummy failing test";
    #   host_name = "dummy-host";
    #   use = "local-service";
    #   check_interval = "0.3";
    #   max_check_attempts = "1";
    #   flap_detection_enabled = "0";
    #   notification_interval = "0.1";
    #   check_command = "check_critical";
    # }

    (emailCheck "monitoring-1" hostFQDN)

    {
      service_description = "ftp has access to database for authentication";
      host_name = "eldiron.immae.eu";
      use = "external-service";
      check_command = "check_ftp_database";

      servicegroups = "webstatus-remote-services";
      _webstatus_name = "FTP";
      _webstatus_url = "ftp.immae.eu";
    }

    {
      service_description = "gitolite is working";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = "check_git";

      servicegroups = "webstatus-remote-services";
      _webstatus_name = "Git";
      _webstatus_url = "git.immae.eu";
    }

    {
      service_description = "postfix SSL is up to date";
      host_name = "eldiron.immae.eu";
      use = "external-service";
      check_command = "check_smtp";

      servicegroups = "webstatus-ssl";
      _webstatus_name = "SMTP";
      _webstatus_url = "smtp.immae.eu";
    }

    {
      service_description = "imap SSL is up to date";
      host_name = "eldiron.immae.eu";
      use = "external-service";
      check_command = ["check_tcp_ssl" "993"];

      servicegroups = "webstatus-ssl";
      _webstatus_name = "IMAP";
      _webstatus_url = "imap.immae.eu";
    }

    {
      service_description = "imap connection works";
      host_name = "eldiron.immae.eu";
      use = "external-service";
      check_command = "check_imap_connection";

      servicegroups = "webstatus-remote-services,webstatus-email";
      _webstatus_name = "IMAP";
      _webstatus_url = "imap.immae.eu";
    }

    # Third party services
    {
      service_description = "OVH account has enough sms";
      host_name = "eldiron.immae.eu";
      use = "external-service";
      check_command = "check_ovh_sms";

      check_interval = "120";
      notification_interval = "1440";
    }

    # Backup services
    # {
    #   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_ok";

      check_interval = "120";
      notification_interval = "1440";

      servicegroups = "webstatus-backup";
    }

    # DNS services
    {
      service_description = "eldiron dns is active and authoritative for aten.pro";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "aten.pro" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "aten.pro";
    }

    {
      service_description = "eldiron dns is active and authoritative for bouya.org";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "bouya.org" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "bouya.org";
    }

    {
      service_description = "eldiron dns is active and authoritative for filedesreves.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "filedesreves.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "filedesreves.fr";
    }

    {
      service_description = "eldiron dns is active and authoritative for ludivinecassal.com";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "ludivinecassal.com" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "ludivinecassal.com";
    }

    {
      service_description = "eldiron dns is active and authoritative for icommandeur.org";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "icommandeur.org" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "icommandeur.org";
    }

    {
      service_description = "eldiron dns is active and authoritative for immae.eu";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "immae.eu" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "immae.eu";
    }

    {
      service_description = "eldiron dns is active and authoritative for immae.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "immae.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "immae.fr";
    }

    {
      service_description = "eldiron dns is active and authoritative for piedsjaloux.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "piedsjaloux.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "piedsjaloux.fr";
    }

    {
      service_description = "eldiron dns is active and authoritative for saison-photo.org";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "saison-photo.org" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "saison-photo.org";
    }

    {
      service_description = "eldiron dns is active and authoritative for tellesflorian.com";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "tellesflorian.com" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "tellesflorian.com";
    }

    {
      service_description = "eldiron dns is active and authoritative for capitaines.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_dns" "capitaines.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "capitaines.fr";
    }

    {
      service_description = "cloudns dns is active and authoritative for aten.pro";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "aten.pro" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "aten.pro (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for bouya.org";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "bouya.org" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "bouya.org (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for filedesreves.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "filedesreves.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "filedesreves.fr (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for ludivinecassal.com";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "ludivinecassal.com" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "ludivinecassal.com (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for icommandeur.org";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "icommandeur.org" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "icommandeur.org (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for immae.eu";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "immae.eu" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "immae.eu (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for immae.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "immae.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "immae.fr (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for piedsjaloux.fr";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "piedsjaloux.fr" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "piedsjaloux.fr (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for tellesflorian.com";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "tellesflorian.com" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "tellesflorian.com (Secondary DNS ClouDNS)";
    }

    {
      service_description = "cloudns dns is active and authoritative for saison-photo.org";
      host_name = "eldiron.immae.eu";
      use = "dns-service";
      check_command = ["check_external_dns" "pns1.cloudns.net" "saison-photo.org" "-A"];

      servicegroups = "webstatus-dns";
      _webstatus_name = "saison-photo.org (Secondary DNS ClouDNS)";
    }

    #### Web scenarios
    {
      service_description = "blog website is running on immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.immae.eu" "/blog/" "egrep -ri TODO /etc"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "Immae’s Blog";
      _webstatus_url = "https://www.immae.eu/blog";
    }

    {
      service_description = "owncloud website is running on cloud.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "cloud.immae.eu" "/" "a safe home for all your data"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Nextcloud";
      _webstatus_url = "https://cloud.immae.eu";
    }

    {
      service_description = "nextcloud website is running on nextcloud.4c.salle-s.org";
      host_name = "quatresaisons.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "nextcloud.4c.salle-s.org" "/" "a safe home for all your data"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Nextcloud";
      _webstatus_url = "https://nextcloud.4c.salle-s.org";
    }

    {
      service_description = "davical website is running on dav.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "dav.immae.eu" "/davical/" "Log On Please"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Davical";
      _webstatus_url = "https://dav.immae.eu/davical";
    }

    {
      service_description = "adminer website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https_auth" "tools.immae.eu" "/adminer/" "www.adminer.org"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Adminer";
      _webstatus_url = "https://tools.immae.eu/adminer/";
    }

    {
      service_description = "ttrss website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "tools.immae.eu" "/ttrss/" "<title>Tiny Tiny RSS"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "TT-RSS";
      _webstatus_url = "https://tools.immae.eu/ttrss/";
    }

    {
      service_description = "mpd website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https_auth" "tools.immae.eu" "/mpd/" "<title>ympd"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "MPD (YMPD)";
      _webstatus_url = "https://tools.immae.eu/mpd/";
    }

    {
      service_description = "rompr mpd website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https_auth" "tools.immae.eu" "/rompr/" "<title>RompЯ"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "MPD (ROMPR)";
      _webstatus_url = "https://tools.immae.eu/rompr/";
    }

    {
      service_description = "wallabag website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "tools.immae.eu" "/wallabag/" "<title>Bienvenue sur wallabag"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Wallabag";
      _webstatus_url = "https://tools.immae.eu/wallabag/";
    }

    {
      service_description = "yourl website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "tools.immae.eu" "/url/admin/" "<title>YOURLS"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "YOURLS";
      _webstatus_url = "https://tools.immae.eu/url/admin/";
    }

    {
      service_description = "roundcube website is running on mail.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "mail.immae.eu" "/roundcube/" "<title>Roundcube"];

      servicegroups = "webstatus-webapps,webstatus-email";
      _webstatus_name = "Roundcube";
      _webstatus_url = "https://mail.immae.eu/roundcube/";
    }

    {
      service_description = "dokuwiki website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "tools.immae.eu" "/dokuwiki/" "<title>start"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Dokuwiki";
      _webstatus_url = "https://tools.immae.eu/dokuwiki/";
    }

    {
      service_description = "shaarli website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "tools.immae.eu" "/Shaarli/immae" "<title>Immae"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Shaarli";
      _webstatus_url = "https://tools.immae.eu/Shaarli/";
    }

    {
      service_description = "ldap website is running on tools.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "tools.immae.eu" "/ldap/" "<title>phpLDAPadmin"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "LDAP";
      _webstatus_url = "https://tools.immae.eu/ldap/";
    }

    {
      service_description = "gitweb website is running on git.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "git.immae.eu" "/cgit" "<title>Immae’s git"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Git";
      _webstatus_url = "https://git.immae.eu/";
    }

    {
      service_description = "mantisbt website is running on git.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "git.immae.eu" "/mantisbt/" "<title>My View - MantisBT"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Mantisbt";
      _webstatus_url = "https://git.immae.eu/mantisbt";
    }

    {
      service_description = "diaspora website is running on diaspora.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "diaspora.immae.eu" "/" "is the online social world where you are in control"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Diaspora";
      _webstatus_url = "https://diaspora.immae.eu/";
    }

    {
      service_description = "peertube website is running on peertube.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "peertube.immae.eu" "/" "<title>Immae’s PeerTube"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Peertube";
      _webstatus_url = "https://peertube.immae.eu/";
    }

    {
      service_description = "etherpad website is running on ether.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "ether.immae.eu" "/" "<title>Etherpad"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Etherpad";
      _webstatus_url = "https://ether.immae.eu/";
    }

    {
      service_description = "mediagoblin website is running on mgoblin.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "mgoblin.immae.eu" "/" "<title>GNU MediaGoblin"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Mediagoblin";
      _webstatus_url = "https://mgoblin.immae.eu/";
    }

    {
      service_description = "mastodon website is running on mastodon.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "mastodon.immae.eu" "/" "Mastodon</title>"];

      servicegroups = "webstatus-webapps";
      _webstatus_name = "Mastodon";
      _webstatus_url = "https://mastodon.immae.eu/";
    }

    # Other web pages
    {
      service_description = "Jerome website is running on naturaloutil.immae.eu";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "naturaloutil.immae.eu" "/ping.php" "YES"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "naturaloutil.immae.eu";
      _webstatus_url = "https://naturaloutil.immae.eu/";
    }

    {
      service_description = "Telio website is running on realistesmedia.fr";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "realistesmedia.fr" "/" "doctype html"];
      contact_groups = "telio-tortay";
    }

    {
      service_description = "Chloe website site is running on osteopathe-cc.fr";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.osteopathe-cc.fr" "/" "<title>Chloé Condamin ostéopathe D.O."];

      servicegroups = "webstatus-websites";
      _webstatus_name = "osteopathe-cc.fr";
      _webstatus_url = "https://www.osteopathe-cc.fr/";
    }

    {
      service_description = "Richie website is running on europe-richie.org";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.europe-richie.org" "/" "<title>.Europe Richie]"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "europe-richie.org";
      _webstatus_url = "https://www.europe-richie.org/";
    }

    {
      service_description = "Ludivine website site is running on ludivinecassal.com";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.ludivinecassal.com" "/" "<title>Ludivine Cassal"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "ludivinecassal.com";
      _webstatus_url = "https://www.ludivinecassal.com/";
    }

    {
      service_description = "Aten website site is running on aten.pro";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "aten.pro" "/" "<title>ATEN"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "aten.pro";
      _webstatus_url = "https://aten.pro/";
    }

    {
      service_description = "PiedsJaloux website site is running on piedsjaloux.fr";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.piedsjaloux.fr" "/" "<title>Les Pieds Jaloux"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "piedsjaloux.fr";
      _webstatus_url = "https://www.piedsjaloux.fr/";
    }

    {
      service_description = "Denise and Jerome website site is running on denisejerome.piedsjaloux.fr";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "denisejerome.piedsjaloux.fr" "/" "<title>Accueil - Mariage"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "denisejerome.piedsjaloux.fr";
      _webstatus_url = "https://denisejerome.piedsjaloux.fr/";
    }

    {
      service_description = "Connexionswing website site is running on connexionswing.com";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.connexionswing.com" "/" "<title>Cours, stages"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "connexionswing.com";
      _webstatus_url = "https://www.connexionswing.com/";
    }

    {
      service_description = "Sandetludo website site is running on sandetludo.com";
      host_name = "eldiron.immae.eu";
      use = "external-web-service";
      check_command = ["check_https" "www.sandetludo.com" "/" "<title>Cours de West Coast"];

      servicegroups = "webstatus-websites";
      _webstatus_name = "sandetludo.com";
      _webstatus_url = "https://www.sandetludo.com/";
    }

    # SSL
    {
      service_description = "ldap SSL is up to date";
      host_name = "eldiron.immae.eu";
      use = "external-service";
      check_command = ["check_tcp_ssl" "636"];

      servicegroups = "webstatus-ssl";
      _webstatus_name = "LDAP";
      _webstatus_url = "ldap.immae.eu";
    }

    # Tiboqorl
    {
      service_description = "Cyllene support page is running";
      host_name = "tiboqorl.fr";
      use = "external-web-service";
      contact_groups = "tiboqorl";
      check_command = [ "check_https" "sc.groupe-cyllene.com" "/" "<title>Support Client Cyllene" ];
      _webstatus_namespace = "tiboqorl";
    }

    {
      service_description = "Origny page is running";
      host_name = "tiboqorl.fr";
      use = "external-web-service";
      contact_groups = "tiboqorl";
      check_command = [ "check_https" "origny.tiboqorl.fr" "/" "<title>Home Assistant" ];
      _webstatus_namespace = "tiboqorl";
    }
  ];
  contact = {
    telio-tortay = config.myEnv.monitoring.contacts.telio-tortay // {
      use = "generic-contact";
      contactgroups = "telio-tortay";
    };
    thibault = config.myEnv.monitoring.contacts.thibault // {
      use = "generic-contact";
      contactgroups = "tiboqorl";
    };
  };
  contactgroup = {
    telio-tortay = { alias = "Telio Tortay"; members = "immae"; };
    tiboqorl = { alias = "Tiboqorl"; members = "immae"; };
  };
}