Sha256: 6d88331d521c8fc2faf83093610a3eaa3bfb1c1a9e83f26fddcd5c0b0199c229
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
# { # "scan": { # "field": "", # "pattern": "", # "target": "" # } # } module Anschel class Filter def scan conf, stats, log field = conf.delete :field pattern = Regexp.new conf.delete(:pattern) target = conf.delete :target raise 'Missing required "field" for "scan" filter' if field.nil? raise 'Missing required "pattern" for "scan" filter' if pattern.nil? raise 'Missing required "target" for "convert" filter' if target.nil? field = field.to_sym target = target.to_sym stats.create 'filter-scan' stats.get 'filter-scan' stats.create 'filter-scan-skipped' stats.get 'filter-scan-skipped' stats.create 'filter-scan-nomatch' stats.get 'filter-scan-nomatch' stats.create 'filter-scan-error' stats.get 'filter-scan-error' log.trace event: 'filter-compiled', kind: 'scan', \ field: field, pattern: pattern, target: target lambda do |event| unless event.has_key? field stats.inc 'filter-scan-skipped' return event end begin results = event[field].scan(pattern).flatten.uniq rescue StandardError log.trace \ event: 'scan-filter-error', reason: 'could not scan event', field: field, pattern: pattern, target: target, raw_event: event stats.inc 'filter-scan-error' return event end if results.empty? stats.inc 'filter-scan-nomatch' event else event[target] ||= [] event[target] += results stats.inc 'filter-scan' filtered event, conf end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
anschel-0.7.0 | lib/anschel/filter/scan.rb |