Sha256: 42be5757eece14e1385304835e24dcda6b23e1c6309345a9fd6ebdd474905d1f

Contents?: true

Size: 1.83 KB

Versions: 13

Compression:

Stored size: 1.83 KB

Contents

module Backup
  module Notifier
    class Nagios < Base
      ##
      # Host of Nagios server to notify on backup completion.
      attr_accessor :nagios_host

      ##
      # Port of Nagios server to notify on backup completion.
      attr_accessor :nagios_port

      ##
      # Nagios nrpe configuration file.
      attr_accessor :send_nsca_cfg

      ##
      # Name of the Nagios service for the backup check.
      attr_accessor :service_name

      ##
      # Host name in Nagios for the backup check.
      attr_accessor :service_host

      def initialize(model, &block)
        super
        instance_eval(&block) if block_given?

        @nagios_host  ||= Config.hostname
        @nagios_port  ||= 5667
        @send_nsca_cfg ||= "/etc/nagios/send_nsca.cfg"
        @service_name ||= "Backup #{model.trigger}"
        @service_host ||= Config.hostname
      end

      private

      ##
      # Notify the user of the backup operation results.
      #
      # `status` indicates one of the following:
      #
      # `:success`
      # : The backup completed successfully.
      # : Notification will be sent if `on_success` is `true`.
      #
      # `:warning`
      # : The backup completed successfully, but warnings were logged.
      # : Notification will be sent if `on_warning` or `on_success` is `true`.
      #
      # `:failure`
      # : The backup operation failed.
      # : Notification will be sent if `on_warning` or `on_success` is `true`.
      #
      def notify!(status)
        send_message(message.call(model, status: status_data_for(status)))
      end

      def send_message(message)
        cmd = "#{utility(:send_nsca)} -H '#{nagios_host}' -p '#{nagios_port}' -c '#{send_nsca_cfg}'"
        msg = [service_host, service_name, model.exit_status, message].join("\t")
        run("echo '#{msg}' | #{cmd}")
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 4 rubygems

Version Path
backup-5.0.0.beta.3 lib/backup/notifier/nagios.rb
backedup-5.0.0.beta.5 lib/backup/notifier/nagios.rb
backedup-5.0.0.beta.4 lib/backup/notifier/nagios.rb
backedup-5.0.0.beta.3 lib/backup/notifier/nagios.rb
ext_backup-5.0.0.beta.2.1 lib/backup/notifier/nagios.rb
ext_backup-5.0.0.beta.2.ext.0.1.2 lib/backup/notifier/nagios.rb
ext_backup-5.0.0.beta.2.ext.0.1.1 lib/backup/notifier/nagios.rb
ext_backup-5.0.0.beta.2.ext.0.1.0 lib/backup/notifier/nagios.rb
backup-5.0.0.beta.2 lib/backup/notifier/nagios.rb
backup-5.0.0.beta.1 lib/backup/notifier/nagios.rb
backup-bouchard-4.4.4 lib/backup/notifier/nagios.rb
backup-bouchard-4.4.2 lib/backup/notifier/nagios.rb
backup-bouchard-4.4.1 lib/backup/notifier/nagios.rb