Ruby
How to send metrics using Ruby
Installing the Ruby Gem
A Hosted Graphite Ruby Gem is available on github, and can be installed directly by typing:
gem install hosted_graphite
Using the Gem to send via TCP
HostedGraphite.protocol = HostedGraphite::TCP
HostedGraphite.send_metric('foo.rb-tcp', 1.2)
Using the Gem to send via UDP
HostedGraphite.protocol = HostedGraphite::UDP
HostedGraphite.send_metric('foo.rb-udp', 1.2)
Using the Gem to send via HTTP
HostedGraphite.protocol = HostedGraphite::HTTP
HostedGraphite.send_metric('foo.rb-http', 1.2)
Using the Gem to send via StatsD
require 'hosted_graphite'
require 'statsd-ruby'
HostedGraphite.api_key = '<your-api-key>'
HostedGraphite.protocol = :statsd
HostedGraphite.<gauge-count-or-timing>('foo.rb-statsd', 1.2)
Basic Ruby
Here are some ways to send custom metric via TCP, UDP, HTTP, and StatsD directly from your code.
Sending a metric via TCP
require 'socket'
conn = TCPSocket.new 'YOUR-UID.carbon.hostedgraphite.com', 2003
conn.puts "YOUR-API-KEY.foo 1.2\n"
conn.close
Sending a metric via UDP
require 'socket'
sock = UDPSocket.new
sock.send "YOUR-API-KEY.foo 1.2\n", 0, "YOUR-UID.carbon.hostedgraphite.com", 2003
Sending a metric via HTTP POST
require 'net/http'
uri = URI("https://www.hostedgraphite.com/api/v1/sink")
api_key = "YOUR-API-KEY"
req = Net::HTTP::Post.new(uri.request_uri)
req.basic_auth api_key, nil
req.body = "foo 1.2"
res = Net::HTTP.start(uri.host, uri.port) do |http|
http.request(req)
end
Sending a metric via StatsD
require 'socket'
statsd_host = 'statsd.hostedgraphite.com'
statsd_port = 8125
metric_key = 'YOUR-API-KEY.foo.ruby-statsd'
metric_value = 1.2
metric_message = "#{metric_key}:#{metric_value}|<c/g/ms>"
sock = UDPSocket.new
sock.send(metric_message, 0, statsd_host, statsd_port)
sock.close
NOTE: when sending standard ruby StatsD metrics, be sure to define counters (c), gauges (g), or timers (ms).
Your API key can be found on your account home page.
Last updated
Was this helpful?