Merge pull request #3758 from laf/macros-templates

Added more macros and alert templates
This commit is contained in:
Tony Murray
2016-07-09 21:20:49 -05:00
committed by GitHub
3 changed files with 81 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ Table of Content:
- [Templates](#templates)
- [Syntax](#templates-syntax)
- [Examples](#templates-examples)
- [Included](#templates-included)
- [Transports](#transports)
- [E-Mail](#transports-email)
- [API](#transports-api)
@@ -35,6 +36,8 @@ Table of Content:
- [Device](#macros-device)
- [Port](#macros-port)
- [Time](#macros-time)
- [Sensors](#macros-sensors)
- [Misc](#macros-misc)
- [Additional Options](#extra)
@@ -151,6 +154,16 @@ Conditional formatting example, will display a link to the host in email or just
Note the use of double-quotes. Single quotes (`'`) in templates will be escaped (replaced with `\'`) in the output and should therefore be avoided.
## <a name="templates-included">Included</a>
We include a few templates for you to use, these are specific to the type of alert rules you are creating. For example if you create a rule that would alert on BGP sessions then you can
assign the BGP template to this rule to provide more information.
The included templates are:
- BGP Sessions
- Ports
- Temperature
# <a name="transports">Transports</a>
@@ -671,7 +684,9 @@ Description: Only select sensors that aren't ignored.
Source: `(%sensors.sensor_alert = 1)`
## <a name="macros-packetloss">Packet Loss</a> (Boolean)
## <a name="macros-misc">Misc</a> (Boolean)
### Packet Loss
Entity: `(%macros.packet_loss_5m)`
@@ -685,6 +700,54 @@ Description: Packet loss % value for the device within the last 15 minutes.
Example: `%macros.packet_loss_15m` > 50
### Ports in usage perc (Int)
Entity: `((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100`
Description: Port in used more than 50%
Example: `%macros.port_in_usage_perc > 50
### Ports out usage perc (Int)
Entity: `((%ports.ifOutOctets_rate*8)/%ports.ifSpeed)*100`
Description: Port out used more than 50%
Example: `%macros.port_out_usage_perc > 50
### Ports now down (Boolean)
Entity: `%ports.ifOperStatus != %ports.ifOperStatus_prev && %ports.ifOperStatus_prev = "up" && %ports.ifAdminStatus = "up"`
Description: Ports that were previously up and have now gone down.
Example: `%macros.port_now_down = "1"`
### Device component down [JunOS]
Entity: `%sensors.sensor_class = "state" && %sensors.sensor_current != "6" && %sensors.sensor_type = "jnxFruState" && %sensors.sensor_current != "2"`
Description: Device component is down such as Fan, PSU, etc for JunOS devices.
Example: `%macros.device_component_down_junos = "1"`
### Device component down [Cisco]
Entity: `%sensors.sensor_current != "1" && %sensors.sensor_current != "5" && %sensors.sensor_type ~ "^cisco.*State$"`
Description: Device component is down such as Fan, PSU, etc for Cisco devices.
Example: `%macros.device_component_down_cisco = "1"`
### PDU over amperage [APC]
Entity: `%sensors.sensor_class = "current" && %sensors.sensor_descr = "Bank Total" && %sensors.sensor_current > %sensors.sensor_limit && %devices.os = "apc"`
Description: APC PDU over amperage
Example: `%macros.pdu_over_amperage_apc = "1"`
# <a name="extra">Additional Options</a>
Here are some of the other options available when adding an alerting rule:

View File

@@ -75,6 +75,14 @@ if (isset($_POST['create-default'])) {
'disabled' => 0,
'name' => 'Sensor under limit',
);
$default_rules[] = array(
'device_id' => '-1',
'rule' => '%services.service_status != "0"',
'severity' => 'critical',
'extra' => '{"mute":false,"count":"-1","delay":"300"}',
'disabled' => 0,
'name' => 'Service up/down',
);
foreach ($default_rules as $add_rule) {
dbInsert($add_rule, 'alert_rules');
}

9
sql-schema/123.sql Normal file
View File

@@ -0,0 +1,9 @@
INSERT INTO `config` (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) VALUES ('alert.macros.rule.port_in_usage_perc','((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100','((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100','Ports using more than X perc of capacity IN','alerting',0,'macros',0,1,0);
INSERT INTO `config` (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) VALUES ('alert.macros.rule.port_out_usage_perc','((%ports.ifOutOctets_rate*8)/%ports.ifSpeed)*100','((%ports.ifOutOctets_rate*8)/%ports.ifSpeed)*100','Ports using more than X perc of capacity OUT','alerting',0,'macros',0,1,0);
INSERT INTO `config` (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) VALUES ('alert.macros.rule.port_now_down','%ports.ifOperStatus != %ports.ifOperStatus_prev && %ports.ifOperStatus_prev = "up" && %ports.ifAdminStatus = "up"','%ports.ifOperStatus != %ports.ifOperStatus_prev && %ports.ifOperStatus_prev = "up" && %ports.ifAdminStatus = "up"','Port has gone down','alerting',0,'macros',0,1,0);
INSERT INTO `config` (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) VALUES ('alert.macros.rule.device_component_down_junos','%sensors.sensor_class = "state" && %sensors.sensor_current != "6" && %sensors.sensor_type = "jnxFruState" && %sensors.sensor_current != "2"','%sensors.sensor_class = "state" && %sensors.sensor_current != "6" && %sensors.sensor_type = "jnxFruState" && %sensors.sensor_current != "2"','Device Component down [JunOS]','alerting',0,'macros',0,1,0);
INSERT INTO `config` (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) VALUES ('alert.macros.rule.device_component_down_cisco','%sensors.sensor_current != "1" && %sensors.sensor_current != "5" && %sensors.sensor_type ~ "^cisco.*State$"','%sensors.sensor_current != "1" && %sensors.sensor_current != "5" && %sensors.sensor_type ~ "^cisco.*State$"','Device Component down [Cisco]','alerting',0,'macros',0,1,0);
INSERT INTO `config` (config_name,config_value,config_default,config_descr,config_group,config_group_order,config_sub_group,config_sub_group_order,config_hidden,config_disabled) VALUES ('alert.macros.rule.pdu_over_amperage_apc','%sensors.sensor_class = "current" && %sensors.sensor_descr = "Bank Total" && %sensors.sensor_current > %sensors.sensor_limit && %devices.os = "apc"','%sensors.sensor_class = "current" && %sensors.sensor_descr = "Bank Total" && %sensors.sensor_current > %sensors.sensor_limit && %devices.os = "apc"','PDU Over Amperage [APC]','alerting',0,'macros',0,1,0);
INSERT INTO `alert_templates` (`rule_id`, `name`, `template`, `title`, `title_rec`) VALUES (',','BGP Sessions.','%title\\r\\n\nSeverity: %severity\\r\\n\n{if %state == 0}Time elapsed: %elapsed\\r\\n{/if}\nTimestamp: %timestamp\\r\\n\nUnique-ID: %uid\\r\\n\nRule: {if %name}%name{else}%rule{/if}\\r\\n\n{if %faults}Faults:\\r\\n\n{foreach %faults}\n#%key: %value.string\\r\\n\nPeer: %value.astext\\r\\n\nPeer IP: %value.bgpPeerIdentifier\\r\\n\nPeer AS: %value.bgpPeerRemoteAs\\r\\n\nPeer EstTime: %value.bgpPeerFsmEstablishedTime\\r\\n\nPeer State: %value.bgpPeerState\\r\\n\n{/foreach}\n{/if}','','');
INSERT INTO `alert_templates` (`rule_id`, `name`, `template`, `title`, `title_rec`) VALUES (',','Ports','%title\\r\\n\nSeverity: %severity\\r\\n\n{if %state == 0}Time elapsed: %elapsed{/if}\nTimestamp: %timestamp\nUnique-ID: %uid\nRule: {if %name}%name{else}%rule{/if}\\r\\n\n{if %faults}Faults:\\r\\n\n{foreach %faults}\\r\\n\n#%key: %value.string\\r\\n\nPort: %value.ifName\\r\\n\nPort Name: %value.ifAlias\\r\\n\nPort Status: %value.message\\r\\n\n{/foreach}\\r\\n\n{/if}\n','','');
INSERT INTO `alert_templates` (`rule_id`, `name`, `template`, `title`, `title_rec`) VALUES (',','Temperature','%title\\r\\n\nSeverity: %severity\\r\\n\n{if %state == 0}Time elapsed: %elapsed{/if}\\r\\n\nTimestamp: %timestamp\\r\\n\nUnique-ID: %uid\\r\\n\nRule: {if %name}%name{else}%rule{/if}\\r\\n\n{if %faults}Faults:\\r\\n\n{foreach %faults}\\r\\n\n#%key: %value.string\\r\\n\nTemperature: %value.sensor_current\\r\\n\nPrevious Measurement: %value.sensor_prev\\r\\n\n{/foreach}\\r\\n\n{/if}','','');