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