From f7a3019f100fd37a2a26b1de5af72952010da477 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Sat, 6 Feb 2021 23:33:40 +0100 Subject: [PATCH] Add megaraid monitoring --- modules/private/monitoring/default.nix | 18 ++++++++++++++++++ modules/private/monitoring/objects_common.nix | 1 + .../monitoring/objects_quatresaisons.nix | 6 ++++++ 3 files changed, 25 insertions(+) diff --git a/modules/private/monitoring/default.nix b/modules/private/monitoring/default.nix index 73e4275..342c7f7 100644 --- a/modules/private/monitoring/default.nix +++ b/modules/private/monitoring/default.nix @@ -20,11 +20,28 @@ let url = "https://www.claudiokuenzler.com/monitoring-plugins/check_zpools.sh"; sha256 = "0p9ms9340in80jkds4kfspw62xnzsv5s7ni9m28kxyd0bnzkbzhf"; }; + megacli = pkgs.megacli.overrideAttrs(old: { meta = old.meta // { license = null; }; }); + megaCliPlugin = pkgs.runCommand "megaCliPlugin" { + plugin = pkgs.fetchurl { + name = "check_megaraid_sas"; + url = "https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=6381&cf_id=24"; + sha256 = "0yf60p4c0hb4q3fng9fc14qc89bqm0f1sijayzygadaqcl44jx4p"; + }; + } '' + mkdir $out + cp $plugin $out/check_megaraid_sas + chmod +x $out/check_megaraid_sas + patchShebangs $out + substituteInPlace $out/check_megaraid_sas --replace /usr/sbin/MegaCli ${megacli}/bin/MegaCli64 + substituteInPlace $out/check_megaraid_sas --replace 'sudo $megacli' '/run/wrappers/bin/sudo $megacli' + sed -i -e "s/use utils qw(%ERRORS);/my %ERRORS = ('OK' => 0, 'WARNING' => 1, 'CRITICAL' => 2, 'UNKNOWN' => 3);/" $out/check_megaraid_sas + ''; myplugins = pkgs.runCommand "buildplugins" { buildInputs = [ pkgs.makeWrapper pkgs.perl ]; } '' mkdir $out cp ${zfsPlugin} $out/check_zpool.sh && chmod +x $out/check_zpool.sh + cp ${megaCliPlugin}/check_megaraid_sas $out/ cp ${./plugins}/* $out/ patchShebangs $out wrapProgram $out/check_command --prefix PATH : ${config.security.wrapperDir} @@ -226,6 +243,7 @@ in commands = [ { command = "${pkgs.mdadm}/bin/mdadm --monitor --scan -1"; options = [ "NOPASSWD" ]; } { command = "${pkgs.postfix}/bin/mailq"; options = [ "NOPASSWD" ]; } + { command = "${megacli}/bin/MegaCli64"; options = [ "NOPASSWD" ]; } ]; users = [ "naemon" ]; runAs = "root"; diff --git a/modules/private/monitoring/objects_common.nix b/modules/private/monitoring/objects_common.nix index df378b5..4b44e56 100644 --- a/modules/private/monitoring/objects_common.nix +++ b/modules/private/monitoring/objects_common.nix @@ -136,6 +136,7 @@ in check_command_status = "$USER2$/check_command -c \"$ARG1$\" -s \"$ARG2$\" $ARG3$"; check_ntp = "$USER1$/check_ntp_time -t 30 -q -H 0.arch.pool.ntp.org"; check_mailq = "$USER1$/check_mailq -s -w 1 -c 2"; + check_megaraid = "$USER2$/check_megaraid_sas --sudo"; check_mysql_replication = "${sudo} -u mysql $USER2$/check_mysql_replication \"$ARG1$\" \"$ARG2$\""; check_postgresql_replication = "${sudo} -u postgres $USER2$/check_postgres_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\""; check_openldap_replication = "${sudo} -u openldap $USER2$/check_openldap_replication \"$ARG1$\" \"$ARG2$\" \"$ARG3$\" \"$ARG4$\" \"$ARG5$\""; diff --git a/modules/private/monitoring/objects_quatresaisons.nix b/modules/private/monitoring/objects_quatresaisons.nix index 3927ef5..de0ce86 100644 --- a/modules/private/monitoring/objects_quatresaisons.nix +++ b/modules/private/monitoring/objects_quatresaisons.nix @@ -12,5 +12,11 @@ let in { service = [ + { + passiveInfo = defaultPassiveInfo // { servicegroups = "webstatus-resources"; }; + service_description = "No RAID device is degraded"; + use = "local-service"; + check_command = ["check_megaraid"]; + } ]; } -- 2.41.0