Sha256: d22b68c488d2b3d6c88295dd26c64bbfb23070a5451bb2fc2a291833abb51124

Contents?: true

Size: 1.87 KB

Versions: 21

Compression:

Stored size: 1.87 KB

Contents

# encoding: utf-8

module Backup
  module Notifier
    class Zabbix < Base

      attr_accessor :zabbix_host

      attr_accessor :zabbix_port

      attr_accessor :service_name

      attr_accessor :service_host

      attr_accessor :item_key

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

        @zabbix_host  ||= Config.hostname
        @zabbix_port  ||= 10051
        @service_name ||= "Backup #{ model.trigger }"
        @service_host ||= Config.hostname
        @item_key     ||= 'backup_status'
      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)
        message = case status
              when :success then 'Completed Successfully'
              when :warning then 'Completed Successfully (with Warnings)'
              when :failure then 'Failed'
              end
        send_message("#{ message } in #{ model.duration }")
      end

      def send_message(message)
        msg = [service_host, service_name, model.exit_status, message].join("\t")
        cmd = "#{ utility(:zabbix_sender) }" +
              " -z '#{ zabbix_host }'" +
              " -p '#{ zabbix_port }'" +
              " -s #{ service_host }"  +
              " -k #{ item_key }"      +
              " -o '#{ msg }'"
        run("echo '#{ msg }' | #{ cmd }")
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 4 rubygems

Version Path
backup-4.1.12 lib/backup/notifier/zabbix.rb
backup-4.1.11 lib/backup/notifier/zabbix.rb
backup-ssh-4.1.10 lib/backup/notifier/zabbix.rb
backup-4.1.10 lib/backup/notifier/zabbix.rb
backup-4.1.9 lib/backup/notifier/zabbix.rb
backup-4.1.8 lib/backup/notifier/zabbix.rb
backup-4.1.7 lib/backup/notifier/zabbix.rb
backup-4.1.6 lib/backup/notifier/zabbix.rb
backup-4.1.5 lib/backup/notifier/zabbix.rb
backup-4.1.4 lib/backup/notifier/zabbix.rb
backup-4.1.3 lib/backup/notifier/zabbix.rb
venet-backup-4.1.3 lib/backup/notifier/zabbix.rb
backup-4.1.2 lib/backup/notifier/zabbix.rb
backup-4.1.1 lib/backup/notifier/zabbix.rb
backup-4.1.0 lib/backup/notifier/zabbix.rb
backup-4.0.7 lib/backup/notifier/zabbix.rb
backup-4.0.6 lib/backup/notifier/zabbix.rb
backup-4.0.5 lib/backup/notifier/zabbix.rb
backup-4.0.4 lib/backup/notifier/zabbix.rb
backup_zh-4.0.3.1 lib/backup/notifier/zabbix.rb