From 6191bdeb78947a3590b9c3cfeeacd9c9168367c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Thu, 13 Feb 2020 13:06:37 +0100 Subject: Add sms check to monitoring --- modules/private/monitoring/default.nix | 10 +++++++++ modules/private/monitoring/objects_common.nix | 1 + .../private/monitoring/objects_monitoring-1.nix | 11 ++++++++++ modules/private/monitoring/plugins/check_ovh_sms | 25 ++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100755 modules/private/monitoring/plugins/check_ovh_sms (limited to 'modules/private/monitoring') diff --git a/modules/private/monitoring/default.nix b/modules/private/monitoring/default.nix index a7013af..d23e9c5 100644 --- a/modules/private/monitoring/default.nix +++ b/modules/private/monitoring/default.nix @@ -65,6 +65,9 @@ let wrapProgram $out/notify_by_slack --prefix PATH : ${lib.makeBinPath [ pkgs.curl pkgs.jq ]} + wrapProgram $out/check_ovh_sms --prefix PATH : ${lib.makeBinPath [ + (pkgs.python3.withPackages (ps: [ps.ovh])) + ]} ''; toObjects = pkgs.callPackage ./to_objects.nix {}; commonConfig = { @@ -259,6 +262,13 @@ in $USER206$=${config.myEnv.monitoring.slack_channel} $USER207$=${config.myEnv.monitoring.slack_url} $USER208$=${builtins.concatStringsSep "," (map (builtins.concatStringsSep ":") config.myEnv.monitoring.eriomem_keys)} + $USER209$=${builtins.concatStringsSep "," [ + config.myEnv.monitoring.ovh_sms.endpoint + config.myEnv.monitoring.ovh_sms.application_key + config.myEnv.monitoring.ovh_sms.application_secret + config.myEnv.monitoring.ovh_sms.consumer_key + config.myEnv.monitoring.ovh_sms.account + ]} ''; objectDefs = toObjects commonObjects + toObjects hostObjects diff --git a/modules/private/monitoring/objects_common.nix b/modules/private/monitoring/objects_common.nix index a9d6da4..e21f9d0 100644 --- a/modules/private/monitoring/objects_common.nix +++ b/modules/private/monitoring/objects_common.nix @@ -117,6 +117,7 @@ in 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$\""; + check_ovh_sms = "$USER2$/check_ovh_sms \"$USER209$\""; check_redis_replication = "${sudo} -u redis $USER2$/check_redis_replication \"$ARG1$\""; check_smtp = "$USER1$/check_smtp -H $HOSTADDRESS$ -p 25 -S -D 21,15"; check_tcp = "$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ -e \"$ARG2$\" -Mcrit"; diff --git a/modules/private/monitoring/objects_monitoring-1.nix b/modules/private/monitoring/objects_monitoring-1.nix index 3200d5c..10327b8 100644 --- a/modules/private/monitoring/objects_monitoring-1.nix +++ b/modules/private/monitoring/objects_monitoring-1.nix @@ -79,6 +79,17 @@ _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 = "120"; + } + # Backup services { service_description = "Eriomem backup is up and not full"; diff --git a/modules/private/monitoring/plugins/check_ovh_sms b/modules/private/monitoring/plugins/check_ovh_sms new file mode 100755 index 0000000..141f82d --- /dev/null +++ b/modules/private/monitoring/plugins/check_ovh_sms @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +import sys +try: + import ovh + + [endpoint, application_key, application_secret, consumer_key, account] = sys.argv[1].split(",") + client = ovh.Client( + endpoint=endpoint, + application_key=application_key, + application_secret=application_secret, + consumer_key=consumer_key, + ) + + result = client.get('/sms/{}'.format(account))["creditsLeft"] + + if result < 20: + print("SMS OVH Critical - Not enough sms left ({})|SMS {}".format(result, result)) + sys.exit(2) + else: + print("SMS OVH Ok - Enough sms left ({})|SMS {}".format(result, result)) + sys.exit(0) +except Exception: + print("SMS OVH UNKNOWN - Error during script") + sys.exit(3) -- cgit v1.2.3