Profiling custom Ruby scripts
For standalone scripts, context start-end needs to be marked specifically and optionally extended events can be called.
#!/usr/bin/env ruby
require 'raygun/apm'
class Hello
def rdoc
sleep 0.5
end
end
tracer = Raygun::Apm::Tracer.new
tracer.udp_sink!
tracer.start_trace
Hello.new.rdoc
tracer.end_trace
tracer.process_ended
Extended events can be sent where appropiate to capture web requests and SQL queries manually.
HTTP Incoming event
event = Raygun::Apm::Event::HttpIn.new
event[:pid] = Process.pid
event[:tid] = 0
event[:timestamp] = tracer.now
event[:url] = 'https://google.com/'
event[:verb] = 'GET'
event[:status] = 200
event[:duration] = 1000
tracer.emit(event)
DB Query
event = Raygun::Apm::Event::Sql.new
event[:pid] = Process.pid
event[:tid] = 0
event[:timestamp] = tracer.now
event[:provider] = 'postgres'
event[:host] = 'localhost'
event[:database] = 'rails'
event[:query] = 'SELECT * from FOO;'
event[:duration] = 1000
tracer.emit(event)