/usr/share/augeas/lenses/dist/xymon_alerting.aug is in augeas-lenses 1.10.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | (*
Module: Xymon_Alerting
Parses xymon alerting files
Author: Francois Maillard <fmaillard@gmail.com>
About: Reference
This lens tries to keep as close as possible to `man 5 alerts.cfg` where possible.
About: License
This file is licenced under the LGPL v2+, like the rest of Augeas.
About: Lens Usage
To be documented
About: Not supported
File inclusion are not followed
About: Configuration files
This lens applies to /etc/xymon/alerts.d/*.cfg and /etc/xymon/alerts.cfg. See <filter>.
About: Examples
The <Test_Xymon_Alerting> file contains various examples and tests.
*)
module Xymon_Alerting =
autoload xfm
(************************************************************************
* Group: USEFUL PRIMITIVES
*************************************************************************)
(* View: store_word *)
let store_word = store /[^ =\t\n#]+/
(* View: comparison The greater and lesser than operators *)
let comparison = store /[<>]/
(* View: equal *)
let equal = Sep.equal
(* View: ws *)
let ws = Sep.space
(* View: eol *)
let eol = Util.eol
(* View: ws_or_eol *)
let ws_or_eol = del /([ \t]+|[ \t]*\n[ \t]*)/ " "
(* View: comment *)
let comment = Util.comment
(* View: empty *)
let empty = Util.empty
(* View: include *)
let include = [ key "include" . ws . store_word . eol ]
(************************************************************************
* Group: MACRO DEFINITION
*************************************************************************)
(* View: macrodefinition
A string that starts with $ and that is assigned something *)
let macrodefinition = [ key /\$[^ =\t\n#\/]+/ . Sep.space_equal . store Rx.space_in . eol ]
(* View: flag
A flag value *)
let flag (kw:string) = Build.flag kw
(* View: kw_word
A key=value value *)
let kw_word (kw:regexp) = Build.key_value kw equal store_word
(************************************************************************
* Group: FILTERS
*************************************************************************)
(* View: page
The (ex)?page filter definition *)
let page = kw_word /(EX)?PAGE/
(* View: group
The (ex)?group filter definition *)
let group = kw_word /(EX)?GROUP/
(* View: host
The (ex)?host filter definition *)
let host = kw_word /(EX)?HOST/
(* View: service
The (ex)?service filter definition *)
let service = kw_word /(EX)?SERVICE/
(* View: color
The color filter definition *)
let color = kw_word "COLOR"
(* View: time
The time filter definition *)
let time = kw_word "TIME"
(* View: duration
The duration filter definition *)
let duration = [ key "DURATION" . [ label "operator" . comparison ] . [ label "value" . store_word ] ]
(* View: recover
The recover filter definition *)
let recover = flag "RECOVER"
(* View: notice
The notice filter definition *)
let notice = flag "NOTICE"
(* View: rule_filter
Filters are made out of any of the above filter definitions *)
let rule_filter = page | group | host | service
| color | time | duration | recover | notice
(* View: filters
One or more filters *)
let filters = [ label "filters" . Build.opt_list rule_filter ws ]
(* View: filters_opt
Zero, one or more filters *)
let filters_opt = [ label "filters" . (ws . Build.opt_list rule_filter ws)? ]
(* View: kw_word_filters_opt
A <kw_word> entry with optional filters *)
let kw_word_filters_opt (kw:string) = [ key kw . equal . store_word . filters_opt ]
(* View: flag_filters_opt
A <flag> with optional filters *)
let flag_filters_opt (kw:string) = [ key kw . filters_opt ]
(************************************************************************
* Group: RECIPIENTS
*************************************************************************)
(* View: mail
The mail recipient definition *)
let mail = [ key "MAIL" . ws . store_word . filters_opt ]
(* View: script
The script recipient definition *)
let script = [ key "SCRIPT" . ws . [ label "script" . store_word ]
. ws . [ label "recipient" . store_word ] . filters_opt ]
(* View: ignore
The ignore recipient definition *)
let ignore = flag_filters_opt "IGNORE"
(* View: format
The format recipient definition *)
let format = kw_word_filters_opt "FORMAT"
(* View: repeat
The repeat recipient definition *)
let repeat = kw_word_filters_opt "REPEAT"
(* View: unmatched
The unmatched recipient definition *)
let unmatched = flag_filters_opt "UNMATCHED"
(* View: stop
The stop recipient definition *)
let stop = flag_filters_opt "STOP"
(* View: macro
The macro recipient definition *)
let macro = [ key /\$[^ =\t\n#\/]+/ . filters_opt ]
(* View: recipient
Recipients are made out of any of the above recipient definitions *)
let recipient = mail | script | ignore | format | repeat | unmatched
| stop | macro
let recipients = [ label "recipients" . Build.opt_list recipient ws_or_eol ]
(************************************************************************
* Group: RULES
*************************************************************************)
(* View: rule
Rules are made of rule_filter and then recipients sperarated by a whitespace *)
let rule = [ seq "rules" . filters . ws_or_eol . recipients . eol ]
(* View: lns
The Xymon_Alerting lens *)
let lns = ( rule | macrodefinition | include | empty | comment )*
(* Variable: filter *)
let filter = incl "/etc/xymon/alerts.d/*.cfg"
. incl "/etc/xymon/alerts.cfg"
. Util.stdexcl
let xfm = transform lns filter
|