Raygun Application Performance Monitoring
Ruby Profiler for Raygun Application Performance Monitoring.
Distributed as a precompiled native gem.
Supported platforms
-
x86-mingw32
-
x64-mingw32
-
x86-linux
-
x86_64-linux
-
universal-darwin
Contact us to support other platforms.
Supported Ruby versions
The profiler only supports CRuby, also known as Matz’s Ruby Interpreter (MRI).
-
2.5.x
-
2.6.x
-
2.7.x
-
3.0.x
Contact us to support other Ruby versions.
Agent Setup
The Profiler needs to be able to access the Raygun Agent over UDP.
Dockerized Agent
The Dockerized Agent is supported on all Ruby profiler platforms. We recommend this deployment model if your production infrastructure already depends on Docker.
Also a great way to explore on your Mac.
The RAYGUN_AGENT_TOKEN
needs to be supplied as an argument and is available under “Application Settings” within the Raygun Application Performance Monitoring UI
To launch Raygun Agent using docker
docker pull raygunowner/raygun-apm
docker run -v raygun-agent:/usr/share/Raygun -e "RAYGUN_AGENT_TOKEN=<token>" -p 2790:2790 -p 2788:2788 -p 2799:2799/udp -it raygunowner/raygun-apm:latest
Linux Agent
The Linux version can be installed either using systemd or via terminal
Windows Agent
On windows the agent can be installed either via MSI installer or on .NET core
Ruby on Rails
For Rails support see documentation of the railgun-apm-rails gem.
Profiler Setup
Include the gem in your Gemfile
gem 'raygun-apm'
Run bundle
to install the gem.
Alternatively install using rubygems gem install raygun-apm
.
Profiler configration
Multiple applications, one Agent
Set the ‘PROTON_API_KEY` environment variable to your API key, which is available under “Application Settings” within the Raygun Application Performance Monitoring UI.
Standalone ruby script / custom framework
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
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)
SQL 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)