class PassengerDatadog
Public Instance Methods
run()
click to toggle source
# File lib/passenger_datadog.rb, line 12 def run status = `passenger-status --show=xml` return if status.empty? # Good job Passenger 4.0.10. Return non xml in your xml output. status = status.split("\n")[3..-1].join("\n") unless status.start_with?('<?xml') statsd = Datadog::Statsd.new parsed = Nokogiri::XML(status) statsd.batch do |batch| run_in_batch(batch, parsed) end end
Private Instance Methods
normalize_prefix(prefix)
click to toggle source
# File lib/passenger_datadog.rb, line 43 def normalize_prefix(prefix) prefix.gsub(/(-|\s)/, '_').gsub(/(\W|\d)/i, '') end
run_in_batch(batch, parsed)
click to toggle source
# File lib/passenger_datadog.rb, line 29 def run_in_batch(batch, parsed) Parsers::Root.new(batch, parsed.xpath('//info')).run multiple_supergroups = parsed.xpath('//supergroups/supergroup').count > 1 parsed.xpath('//supergroups/supergroup').each do |supergroup| prefix = multiple_supergroups ? normalize_prefix(supergroup.xpath('name').text) : nil Parsers::Group.new(batch, supergroup.xpath('group'), prefix: prefix).run supergroup.xpath('group/processes/process').each_with_index do |process, index| Parsers::Process.new(batch, process, prefix: prefix, tags: ["passenger-process:#{index}"]).run end end end