Class: LogStash::Outputs::Nagios
- Defined in:
- lib/logstash/outputs/nagios.rb
Constant Summary collapse
- NAGIOS_CRITICAL =
2
- NAGIOS_WARN =
1
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(url, config = {}, &block) ⇒ Nagios
constructor
A new instance of Nagios.
- #receive(event) ⇒ Object
- #register ⇒ Object
Constructor Details
permalink #initialize(url, config = {}, &block) ⇒ Nagios
Returns a new instance of Nagios.
9 10 11 12 13 14 15 16 17 |
# File 'lib/logstash/outputs/nagios.rb', line 9 def initialize(url, config={}, &block) super if @url.path == "" or @url.path == "/" @cmdfile = "/var/lib/nagios3/rw/nagios.cmd" else @cmdfile = @url.path end end |
Instance Method Details
permalink #receive(event) ⇒ Object
[View source]
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 |
# File 'lib/logstash/outputs/nagios.rb', line 25 def receive(event) if !File.exists?(@cmdfile) @logger.warn(["Skipping nagios output; command file is missing", {"cmdfile" => @cmdfile, "missed_event" => event}]) return end # TODO(petef): if nagios_host/nagios_service both have more than one # value, send multiple alerts. They will have to match up together by # array indexes (host/service combos) and the arrays must be the same # length. host = event.fields["nagios_host"] if !host @logger.warn(["Skipping nagios output; nagios_host field is missing", {"missed_event" => event}]) return end service = event.fields["nagios_service"] if !service @logger.warn(["Skipping nagios output; nagios_service field is missing", {"missed_event" => event}]) return end annotation = event.fields["nagios_annotation"] level = NAGIOS_CRITICAL if event.fields["nagios_level"] and event.fields["nagios_level"][0].downcase == "warn" level = NAGIOS_WARN end cmd = "[#{Time.now.to_i}] PROCESS_SERVICE_CHECK_RESULT;#{host[0]};#{service[0]};#{level};" if annotation cmd += "#{annotation[0]}: " end cmd += "#{event.source}: " # In the multi-line case, escape the newlines for the nagios command file cmd += event..gsub("\n", "\\n") @logger.debug({"cmdfile" => @cmdfile, "nagios_command" => cmd}) begin File.open(@cmdfile, "a") do |f| f.puts cmd end rescue @logger.warn(["Skipping nagios output; error writing to command file", {"error" => $!, "cmdfile" => @cmdfile, "missed_event" => event}]) end end |
permalink #register ⇒ Object
[View source]
20 21 22 |
# File 'lib/logstash/outputs/nagios.rb', line 20 def register # nothing to do end |