9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/passenger_datadog.rb', line 9
def run
status = `passenger-status --show=xml`
return if status.empty?
statsd = Statsd.new
statsd.batch do |s|
status = status.split("\n")[3..-1].join("\n") unless status.start_with?('<?xml')
parsed = Nokogiri::XML(status)
pool_used = parsed.xpath('//process_count').text
s.gauge('passenger.pool.used', pool_used)
pool_max = parsed.xpath('//max').text
s.gauge('passenger.pool.max', pool_max)
request_queue = parsed.xpath('//supergroups/supergroup/group/get_wait_list_size').text
s.gauge('passenger.request_queue', request_queue)
parsed.xpath('//supergroups/supergroup/group').each do |group|
GROUP_STATS.each do |stat|
s.gauge("passenger.#{stat}", group.xpath(stat).text)
end
end
parsed.xpath('//supergroups/supergroup/group/processes/process').each_with_index do |process, index|
PROCESS_STATS.each do |stat|
s.gauge("passenger.#{stat}", process.xpath(stat).text, :tags => ["passenger-process:#{index}"])
end
end
end
end
|