Sha256: 427f75a88a11f05412daf6cfb1513f4a83b9406278034618240ba416fbdb809c
Contents?: true
Size: 1.75 KB
Versions: 4
Compression:
Stored size: 1.75 KB
Contents
#! /usr/bin/env ruby # # newrelic-metrics # # DESCRIPTION: # Pull new relic metrics # # OUTPUT: # metric data # # PLATFORMS: # Linux # # DEPENDENCIES: # gem: sensu-plugin # gem: <?> # # USAGE: # example commands # # NOTES: # this is setup to only work if you have a single account under # your api key. # # LICENSE: # Copyright 2012 Pete Shima <me@peteshima.com> # Released under the same terms as Sensu (the MIT license); see LICENSE # for details. # require 'sensu-plugin/metric/cli' require 'net/http' require 'net/https' require 'uri' require 'socket' require 'crack' class NewRelicMetrics < Sensu::Plugin::Metric::CLI::Graphite option :apikey, short: '-k APIKEY', long: '--apikey APIKEY', description: 'Your New Relic API Key', required: true option :appname, short: '-n APPNAME', long: '--name APPNAME', description: 'Name of the new relic app you want', required: true option :scheme, description: 'Metric naming scheme, text to prepend to metric', short: '-s SCHEME', long: '--scheme SCHEME', default: "#{Socket.gethostname}.newrelic" def run rpm = 'http://rpm.newrelic.com' url = URI.parse(rpm) res = Net::HTTP.start(url.host, url.port) do |http| req = Net::HTTP::Get.new('/accounts.xml?include=application_health') req.add_field('x-api-key', config[:apikey]) http.request(req) end stats = Crack::XML.parse(res.body) app = stats['accounts'].first['applications'].find { |v| v['name'] == config[:appname] } app['threshold_values'].each do |v| metric_name = v['name'].gsub(/\s+/, '_').downcase output "#{config[:scheme]}.#{metric_name}", v['metric_value'] end ok end end
Version data entries
4 entries across 4 versions & 2 rubygems