From 9cb1cde2754456f815b60023b2e0893ff7338395 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Wed, 6 Sep 2017 03:14:39 -0500 Subject: [PATCH] LPM alerting --- app.js | 37 +++++++++++++++++++++-------- config/glass_config.json | 2 +- routes/glass_alert_settings_save.js | 2 +- routes/glass_alerts.js | 8 +++---- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/app.js b/app.js index fbe3ff3..969336d 100644 --- a/app.js +++ b/app.js @@ -208,6 +208,19 @@ function get_socket_clients_connected_count() { return socket_clients; } +/** + * Watch config changes so we reload it for core functions... + */ +fs.watch('config/glass_config.json', function (event, filename) { + if (filename) { + setTimeout(function(){ + glass_config = json_file.readFileSync('config/glass_config.json'); + }, 1000); + } else { + console.log('filename not provided'); + } +}); + /** * Websocket Server */ @@ -333,10 +346,12 @@ slack = new Slack(); slack.setWebhook(webhookUri); function slack_message(message) { + console.log("[Slack] %s", message); + slack.webhook({ channel: glass_config.slack_alert_channel, username: "Glass", - icon_emoji: "https://i.imgur.com/VDzAuAq.png", + icon_emoji: "https://imgur.com/wD3CcBi", text: message }, function (err, response) { console.log(response); @@ -348,17 +363,19 @@ function slack_message(message) { */ alert_status = []; -alert_status['leases_per_second'] = 0; +alert_status['leases_per_minute'] = 0; alert_check_timer = setInterval(function(){ - if(glass_config.lease_per_second_threshold > 0) { - if (current_leases_per_second <= glass_config.lease_per_second_threshold && alert_status['leases_per_second'] == 0) { - alert_status['leases_per_second'] = 1; - // slack_message(":warning: WARNING: DHCP leases per second have dropped below critical threshold (" + glass_config.lease_per_second_threshold + ") Current LP/s (" + current_leases_per_second + ")"); + console.log("[Timer] Alert Timer check"); + if(glass_config.leases_per_minute_threshold > 0) { + console.log("[Timer] lpm: %s lpm_th: %s", leases_per_minute, glass_config.leases_per_minute_threshold); + if (leases_per_minute <= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 0) { + alert_status['leases_per_minute'] = 1; + slack_message(":warning: WARNING: DHCP leases per minute have dropped below critical threshold (" + glass_config.leases_per_minute_threshold.toLocaleString('en') + ") Current LP/s (" + leases_per_minute.toLocaleString('en') + ")"); } - else if (current_leases_per_second >= glass_config.lease_per_second_threshold && alert_status['leases_per_second'] == 1) { - alert_status['leases_per_second'] = 0; - // slack_message(":white_check_mark: CLEAR: DHCP leases per second have returned to above the critical threshold (" + glass_config.lease_per_second_threshold + ") Current LP/s (" + current_leases_per_second + ")"); + else if (leases_per_minute >= glass_config.leases_per_minute_threshold && alert_status['leases_per_minute'] == 1) { + alert_status['leases_per_minute'] = 0; + slack_message(":white_check_mark: CLEAR: DHCP leases per minute have returned to above the critical threshold (" + glass_config.leases_per_minute_threshold.toLocaleString('en') + ") Current LP/s (" + leases_per_minute.toLocaleString('en') + ")"); } } -}, (5 * 1000)); \ No newline at end of file +}, (60 * 1000)); \ No newline at end of file diff --git a/config/glass_config.json b/config/glass_config.json index 78976a0..a1196c3 100644 --- a/config/glass_config.json +++ b/config/glass_config.json @@ -6,7 +6,7 @@ "config_file": "/etc/dhcp/dhcpd.conf", "shared_network_critical_threshold": 95, "shared_network_warning_threshold": 80, - "lease_per_second_threshold": 0, + "leases_per_minute_threshold": 0, "slack_webhook_url": "", "slack_alert_channel": "" } diff --git a/routes/glass_alert_settings_save.js b/routes/glass_alert_settings_save.js index 96bfbbe..6668c1a 100644 --- a/routes/glass_alert_settings_save.js +++ b/routes/glass_alert_settings_save.js @@ -12,7 +12,7 @@ router.post('/', function(req, res, next) { glass_config.shared_network_critical_threshold = request.shared_network_critical_threshold; glass_config.shared_network_warning_threshold = request.shared_network_warning_threshold; - glass_config.lease_per_second_threshold = request.lease_per_second_threshold; + glass_config.leases_per_minute_threshold = request.leases_per_minute_threshold; glass_config.slack_webhook_url = request.slack_webhook_url; glass_config.slack_alert_channel = request.slack_alert_channel; diff --git a/routes/glass_alerts.js b/routes/glass_alerts.js index 14fca3e..fcc5cf5 100644 --- a/routes/glass_alerts.js +++ b/routes/glass_alerts.js @@ -17,13 +17,13 @@ router.get('/', function(req, res, next) { glass_config = json_file.readFileSync('config/glass_config.json'); /* Shared Network Alert Threshold (Critical) */ - input = template_render.form_input('Shared Network Alert Threshold (Critical)', ''); + input = template_render.form_input('Shared Network Alert Threshold % (Critical)', ''); /* Shared Network Alert Threshold (Warning) */ - input = input + template_render.form_input('Shared Network Alert Threshold (Warning)', ''); + input = input + template_render.form_input('Shared Network Alert Threshold % (Warning)', ''); - /* Leases Per Second Threshold */ - input = input + template_render.form_input('Alert when Leases Per Second Reaches Below this Number', ''); + /* Leases Per Minute Threshold */ + input = input + template_render.form_input('Alert when Leases Per Minute Reaches Below this Number', ''); //