class LogStash::Outputs::NagiosNsca
The nagios_nsca output is used for sending passive check results to Nagios through the NSCA protocol.
This is useful if your Nagios server is not the same as the source host from where you want to send logs or alerts. If you only have one server, this output is probably overkill # for you, take a look at the 'nagios' output instead.
Here is a sample config using the nagios_nsca output:
output { nagios_nsca { # specify the hostname or ip of your nagios server host => "nagios.example.com" # specify the port to connect to port => 5667 } }
Public Instance Methods
receive(event)
click to toggle source
# File lib/logstash/outputs/nagios_nsca.rb, line 66 def receive(event) # exit if type or tags don't match return unless output?(event) # catch logstash shutdown if event == LogStash::SHUTDOWN finished return end # skip if 'send_nsca' binary doesn't exist if !File.exists?(@send_nsca_bin) @logger.warn("Skipping nagios_nsca output; send_nsca_bin file is missing", "send_nsca_bin" => @send_nsca_bin, "missed_event" => event) return end # interpolate params nagios_host = event.sprintf(@nagios_host) nagios_service = event.sprintf(@nagios_service) # escape basic things in the log message # TODO: find a way to escape the message correctly msg = event.sprintf(@message_format) msg.gsub!("\n", "<br/>") msg.gsub!("'", "’") status = event.sprintf(@nagios_status) if status.to_i.to_s != status # Check it round-trips to int correctly msg = "status '#{status}' is not numeric" status = 2 else status = status.to_i if status > 3 || status < 0 msg "status must be > 0 and <= 3, not #{status}" status = 2 end end # build the command # syntax: echo '<server>!<nagios_service>!<status>!<text>' | \ # /usr/sbin/send_nsca -H <nagios_host> -d '!' -c <nsca_config>" cmd = %(echo '#{nagios_host}~#{nagios_service}~#{status}~#{msg}' |) cmd << %( #{@send_nsca_bin} -H #{@host} -p #{@port} -d '~') cmd << %( -c #{@send_nsca_config}) if @send_nsca_config cmd << %( 2>/dev/null >/dev/null) @logger.debug("Running send_nsca command", "nagios_nsca_command" => cmd) begin system cmd rescue => e @logger.warn("Skipping nagios_nsca output; error calling send_nsca", "error" => $!, "nagios_nsca_command" => cmd, "missed_event" => event) @logger.debug("Backtrace", e.backtrace) end end
register()
click to toggle source
# File lib/logstash/outputs/nagios_nsca.rb, line 61 def register #nothing for now end