class Salus::ZabbixCli
Constants
- ZABBIX_CACHE_FILE
Public Instance Methods
bulk(group=nil)
click to toggle source
# File lib/salus/cli/zabbix.rb, line 76 def bulk(group=nil) Salus.logger.level = options[:debug] ? Logger::DEBUG : Logger::WARN load_files(get_files(options)) cache_file = options.fetch(:cache, Salus.var(:zabbix_cache_file, File.join(Dir.pwd, ZABBIX_CACHE_FILE))) cache = load_cache(cache_file) re = group.nil? ? // : /^#{Regexp.escape(group)}\./ keys = cache.keys.grep(re) if !keys.empty? && (keys.reduce(true) { |x, v| x &= !expired?(cache[v], options) }) result = {} keys.each do |key| name = key.sub(re, '') name = name.gsub(/\.\[/, '[') parts = name.split(/\./) node = result parts[0...-1].each do |part| node[part] = {} unless node.key?(part) node = node[part] end node[parts.last] = cache[key][:value] end STDOUT.puts result.to_json return end state_file = get_state_file(options) load_state(state_file) Salus.renders.clear Salus.render(ZabbixBulkRenderer.new(group: group)) render = ZabbixCacheRenderer.new Salus.render(render) Salus.tick cache = render.data save_state(state_file) save_cache(cache_file, cache) end
discover(name)
click to toggle source
# File lib/salus/cli/zabbix.rb, line 28 def discover(name) Salus.logger.level = options[:debug] ? Logger::DEBUG : Logger::WARN load_files(get_files(options)) puts Salus.discovery(name) end
parameter(name)
click to toggle source
# File lib/salus/cli/zabbix.rb, line 40 def parameter(name) Salus.logger.level = options[:debug] ? Logger::DEBUG : Logger::WARN load_files(get_files(options)) cache_file = options.fetch(:cache, Salus.vars.fetch(:zabbix_cache_file, File.join(Dir.pwd, ZABBIX_CACHE_FILE))) cache = load_cache(cache_file) if (cache.key?(name) && !expired?(cache[name], options)) STDOUT.puts cache[name][:value] unless cache[name][:value].nil? return end state_file = get_state_file(options) load_state(state_file) render = ZabbixCacheRenderer.new Salus.renders.clear Salus.render(render) Salus.tick cache = render.data if (cache.key?(name)) STDOUT.puts cache[name][:value] unless cache[name][:value].nil? end save_state(state_file) save_cache(cache_file, cache) raise "Unknown parameter #{name}" unless cache.key?(name) end
Private Instance Methods
expired?(metric, options={})
click to toggle source
# File lib/salus/cli/zabbix.rb, line 120 def expired?(metric, options={}) return true if metric.nil? ttl = options.fetch(:cache_ttl, metric[:cache_ttl]) ttl ||= 0 (Time.now.to_f > metric[:timestamp] + ttl) end
load_cache(file)
click to toggle source
# File lib/salus/cli/zabbix.rb, line 127 def load_cache(file) return {} unless file begin if File.exists?(file) YAML.load(read_file(file)) else {} end rescue Exception => e log ERROR, "Failed to load state #{file}: " + e.message {} end end
save_cache(file, data)
click to toggle source
# File lib/salus/cli/zabbix.rb, line 141 def save_cache(file, data) return unless file begin write_file(file, data.to_yaml) rescue Exception => e log ERROR, "Failed to save state #{file}: " + e.message end end