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_graphiteUsing 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.closeSending a metric via UDP
require 'socket'
sock = UDPSocket.new
sock.send "YOUR-API-KEY.foo 1.2\n", 0, "YOUR-UID.carbon.hostedgraphite.com", 2003Sending 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)
endSending 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.closeNOTE: 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?