refactor: move default alert rules into the collection (#6621)

* refactor: move default alert rules into the collection
Also adds the wireless rules to the default set.

* Added additional defaults to extra

* Fix up the extra value
Also, missed `rule` column when creating default rules
This commit is contained in:
Tony Murray 2017-05-13 03:24:47 -05:00 committed by Neil Lathwood
parent c835708689
commit 2dd44fdfdf
2 changed files with 87 additions and 81 deletions

View File

@ -11,82 +11,37 @@ $no_refresh = true;
</div>
<?php
if (isset($_POST['create-default'])) {
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%macros.device_down = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"-1","delay":"300"}',
'disabled' => 0,
'name' => 'Devices up/down',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%devices.uptime < "300" && %macros.device = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"1","delay":"300"}',
'disabled' => 0,
'name' => 'Device rebooted',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%bgpPeers.bgpPeerState != "established" && %macros.device_up = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"1","delay":"300"}',
'disabled' => 0,
'name' => 'BGP Session down',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%bgpPeers.bgpPeerFsmEstablishedTime < "300" && %bgpPeers.bgpPeerState = "established" && %macros.device_up = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"1","delay":"300"}',
'disabled' => 0,
'name' => 'BGP Session established',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%macros.port_down = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"1","delay":"300"}',
'disabled' => 0,
'name' => 'Port status up/down',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%macros.port_usage_perc >= "80" && %macros.port_up = "1" && %macros.port = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"-1","delay":"300"}',
'disabled' => 0,
'name' => 'Port utilisation over threshold',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%sensors.sensor_current > %sensors.sensor_limit && %sensors.sensor_alert = "1" && %macros.device_up = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"-1","delay":"300"}',
'disabled' => 0,
'name' => 'Sensor over limit',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%sensors.sensor_current < %sensors.sensor_limit_low && %sensors.sensor_alert = "1" && %macros.device_up = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"-1","delay":"300"}',
'disabled' => 0,
'name' => 'Sensor under limit',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%services.service_status != "0" && %macros.device_up = "1"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"-1","delay":"300"}',
'disabled' => 0,
'name' => 'Service up/down',
$default_rules = array_filter(get_rules_from_json(), function ($rule) {
return isset($rule['default']) && $rule['default'];
});
$default_extra = array(
'mute' => false,
'count' => -1,
'delay' => 300,
'invert' => false,
'interval' => 300,
);
require_once '../includes/alerts.inc.php';
foreach ($default_rules as $add_rule) {
$add_rule['query'] = GenSQL($add_rule['rule']);
dbInsert($add_rule, 'alert_rules');
$extra = $default_extra;
if (isset($add_rule['extra'])) {
$extra = array_replace($extra, json_decode($add_rule['extra'], true));
}
$insert = array(
'device_id' => -1,
'rule' => $add_rule['rule'],
'query' => GenSQL($add_rule['rule']),
'severity' => 'critical',
'extra' => json_encode($extra),
'disabled' => 0,
'name' => $add_rule['name']
);
dbInsert($insert, 'alert_rules');
}
}//end if

View File

@ -1,4 +1,63 @@
[
{
"rule": "%macros.device_down = \"1\"",
"name": "Devices up/down",
"default": true
},
{
"rule": "%devices.uptime < \"300\" && %macros.device = \"1\"",
"name": "Device rebooted",
"extra": "{\"count\": 1}",
"default": true
},
{
"rule": "%bgpPeers.bgpPeerState != \"established\" && %macros.device_up = \"1\"",
"name": "BGP Session down",
"extra": "{\"count\": 1}",
"default": true
},
{
"rule": "%bgpPeers.bgpPeerFsmEstablishedTime < \"300\" && %bgpPeers.bgpPeerState = \"established\" && %macros.device_up = \"1\"",
"name": "BGP Session established",
"extra": "{\"count\": 1}",
"default": true
},
{
"rule": "%macros.port_down = \"1\"",
"name": "Port status up/down",
"extra": "{\"count\": 1}",
"default": true
},
{
"rule": "%macros.port_usage_perc >= \"80\" && %macros.port_up = \"1\" && %macros.port = \"1\"",
"name": "Port utilisation over threshold",
"default": true
},
{
"rule": "%sensors.sensor_current > %sensors.sensor_limit && %sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Sensor over limit",
"default": true
},
{
"rule": "%sensors.sensor_current < %sensors.sensor_limit_low && %sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Sensor under limit",
"default": true
},
{
"rule": "%services.service_status != \"0\" && %macros.device_up = \"1\"",
"name": "Service up/down",
"default": true
},
{
"rule": "%wireless_sensors.sensor_current >= %wireless_sensors.sensor_limit && %wireless_sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Wireless Sensor over limit",
"default": true
},
{
"rule": "%wireless_sensors.sensor_current <= %wireless_sensors.sensor_limit_low && %wireless_sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Wireless Sensor under limit",
"default": true
},
{
"rule": "%macros.bill_quota_over_quota >= \"75\"",
"name": "Quota bills over 75% used"
@ -39,14 +98,6 @@
"rule": "%eventlog.type = \"discovery\" && %eventlog.message ~ \"@autodiscovered@\" && %eventlog.datetime >= %macros.past_60m",
"name": "Device discovered within the last 60 minutes"
},
{
"rule": "%wireless_sensors.sensor_current >= %wireless_sensors.sensor_limit && %wireless_sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Wireless Sensor over limit"
},
{
"rule": "%wireless_sensors.sensor_current <= %wireless_sensors.sensor_limit_low && %wireless_sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Wireless Sensor under limit"
},
{
"rule": "%wireless_sensors.sensor_class = 'clients' && %wireless_sensors.sensor_current >= %wireless_sensors.sensor_limit && %wireless_sensors.sensor_alert = \"1\" && %macros.device_up = \"1\"",
"name": "Too many wireless clients"