mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge pull request #3758 from laf/macros-templates
Added more macros and alert templates
This commit is contained in:
@@ -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:
|
||||
|
@@ -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
9
sql-schema/123.sql
Normal 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}','','');
|
Reference in New Issue
Block a user