Skip to content

Instantly share code, notes, and snippets.

@sgirones
Created December 20, 2012 10:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sgirones/4344520 to your computer and use it in GitHub Desktop.
Save sgirones/4344520 to your computer and use it in GitHub Desktop.
Calculate resque jobs duration in seconds examining workers' logs
#!/usr/bin/env ruby
require 'time'
if not ARGV[0]
puts "Usage: ./calculate_jobs_time.rb <log_file>"
exit 1
end
init_job_lines = {}
times = {}
File.open(ARGV[0], "r").each_line do |line|
if line.include? "got:"
parts = line.split("got:")
message = parts[1]
init_time = parts[0].split()[1][1..-1]
init_job_lines[message] = init_time
elsif line.include? "done:"
parts = line.split("done:")
message = parts[1]
end_time = parts[0].split()[1][1..-1]
times[message] = (Time.parse(end_time) - Time.parse(init_job_lines[message])).to_i if init_job_lines[message]
end
end
level = 10 # seconds
puts times.values.select{|t| t > level}.sort{|x,y| y <=> x }.join(" ")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment