lib/splash/cli/logs.rb in prometheus-splash-0.8.0 vs lib/splash/cli/logs.rb in prometheus-splash-0.8.1
- old
+ new
@@ -10,65 +10,77 @@
include Splash::Logs
# Thor method : running Splash configured logs monitors analyse
desc "analyse", "analyze logs defined in Splash config"
def analyse
- log = get_logger
- results = LogScanner::new
- res = results.analyse
- log.info "SPlash Configured log monitors :"
- full_status = true
- results.output.each do |result|
- if result[:status] == :clean then
- log.ok "Log : #{result[:log]} with label : #{result[:label]} : no errors"
- log.item "Detected pattern : #{result[:pattern]}"
- log.item "Nb lines = #{result[:lines]}"
- elsif result[:status] == :missing then
- log.ko "Log : #{result[:log]} with label : #{result[:label]} : missing !"
- log.item "Detected pattern : #{result[:pattern]}"
- else
- log.ko "Log : #{result[:log]} with label : #{result[:label]} : #{result[:count]} errors"
- log.item "Detected pattern : #{result[:pattern]}"
- log.item "Nb lines = #{result[:lines]}"
+ if is_root? then
+ log = get_logger
+ results = LogScanner::new
+ res = results.analyse
+ log.info "SPlash Configured log monitors :"
+ full_status = true
+ results.output.each do |result|
+ if result[:status] == :clean then
+ log.ok "Log : #{result[:log]} with label : #{result[:label]} : no errors"
+ log.item "Detected pattern : #{result[:pattern]}"
+ log.item "Nb lines = #{result[:lines]}"
+ elsif result[:status] == :missing then
+ log.ko "Log : #{result[:log]} with label : #{result[:label]} : missing !"
+ log.item "Detected pattern : #{result[:pattern]}"
+ else
+ log.ko "Log : #{result[:log]} with label : #{result[:label]} : #{result[:count]} errors"
+ log.item "Detected pattern : #{result[:pattern]}"
+ log.item "Nb lines = #{result[:lines]}"
+ end
+
+ full_status = false unless result[:status] == :clean
end
- full_status = false unless result[:status] == :clean
- end
-
- if full_status then
- log.ok "Global status : no error found"
+ if full_status then
+ log.ok "Global status : no error found"
+ else
+ log.error "Global status : some error found"
+ end
+ splash_exit case: :quiet_exit
else
- log.error "Global status : some error found"
+ splash_exit case: :not_root, :more => "Log analysis"
end
- splash_exit case: :quiet_exit
end
# Thor method : running Splash configured logs monitors analyse and sending to Prometheus Pushgateway
desc "monitor", "monitor logs defined in Splash config"
def monitor
- log = get_logger
- log.level = :fatal if options[:quiet]
- result = LogScanner::new
- result.analyse
- splash_exit result.notify
+ if is_root? then
+ log = get_logger
+ log.level = :fatal if options[:quiet]
+ result = LogScanner::new
+ result.analyse
+ splash_exit result.notify
+ else
+ splash_exit case: :not_root, :more => "Log analysis"
+ end
end
# Thor method : display a specific Splash configured log monitor
desc "show LOG", "show Splash configured log monitoring for LOG"
def show(logrecord)
- log = get_logger
- log_record_set = get_config.logs.select{|item| item[:log] == logrecord or item[:label] == logrecord.to_sym}
- unless log_record_set.empty? then
- record = log_record_set.first
- log.info "Splash log monitor : #{record[:log]}"
- log.item "pattern : /#{record[:pattern]}/"
- log.item "label : #{record[:label]}"
- splash_exit case: :quiet_exit
+ if is_root? then
+ log = get_logger
+ log_record_set = get_config.logs.select{|item| item[:log] == logrecord or item[:label] == logrecord.to_sym}
+ unless log_record_set.empty? then
+ record = log_record_set.first
+ log.info "Splash log monitor : #{record[:log]}"
+ log.item "pattern : /#{record[:pattern]}/"
+ log.item "label : #{record[:label]}"
+ splash_exit case: :quiet_exit
+ else
+ splash_exit case: :not_found, :more => "log not configured"
+ end
else
- splash_exit case: :not_found, :more => "log not configured"
+ splash_exit case: :not_root, :more => "Log analysis"
end
end
# Thor method : display the full list of Splash configured log monitors
desc "list", "List all Splash configured logs monitoring"
@@ -76,20 +88,69 @@
Show configured logs monitoring\n
with --detail, show logs monitor details
LONGDESC
option :detail, :type => :boolean, :aliases => "-D"
def list
- log = get_logger
- log.info "Splash configured log monitoring :"
- log_record_set = get_config.logs
- log.ko 'No configured commands found' if log_record_set.empty?
- log_record_set.each do |record|
- log.item "log monitor : #{record[:log]} label : #{record[:label]}"
- if options[:detail] then
- log.arrow "pattern : /#{record[:pattern]}/"
+ if is_root? then
+ log = get_logger
+ log.info "Splash configured log monitoring :"
+ log_record_set = get_config.logs
+ log.ko 'No configured commands found' if log_record_set.empty?
+ log_record_set.each do |record|
+ log.item "log monitor : #{record[:log]} label : #{record[:label]}"
+ if options[:detail] then
+ log.arrow "pattern : /#{record[:pattern]}/"
+ end
end
+ splash_exit case: :quiet_exit
+ else
+ splash_exit case: :not_root, :more => "Log analysis"
end
- splash_exit case: :quiet_exit
+ end
+
+
+ # Thor method : show logs monitoring history
+ long_desc <<-LONGDESC
+ show logs monitoring history for LABEL\n
+ LONGDESC
+ option :table, :type => :boolean, :aliases => "-t"
+ desc "history LABEL", "show logs monitoring history"
+ def history(label)
+ if is_root? then
+ log = get_logger
+ log.info "Log : #{label}"
+ config = get_config
+ if options[:table] then
+ table = TTY::Table.new do |t|
+ t << ["Start Date", "File","Status", "Nb errors", "Nb lines"]
+ t << ['','','','','']
+ LogsRecords::new(label).get_all_records.each do |item|
+ record =item.keys.first
+ value=item[record]
+
+ t << [record, value[:file], value[:status].to_s, value[:errors], value[:lines]]
+ end
+ end
+ if check_unicode_term then
+ puts table.render(:unicode)
+ else
+ puts table.render(:ascii)
+ end
+
+ else
+ LogsRecords::new(label).get_all_records.each do |item|
+ record =item.keys.first
+ value=item[record]
+ log.item record
+ log.arrow "Status : #{value[:status].to_s}"
+ log.arrow "nb files : #{value[:errors]}"
+ log.arrow "nb lines : #{value[:lines]}"
+ end
+ end
+ splash_exit case: :quiet_exit
+ else
+ splash_exit case: :not_root, :more => "Log analysis"
+ end
end
end
end