diff --git a/plugins/thin/thin_memory b/plugins/thin/thin_memory index afbb20d9..cf7814df 100755 --- a/plugins/thin/thin_memory +++ b/plugins/thin/thin_memory @@ -41,10 +41,11 @@ module Munin # run main method def run - pids = get_pids() - pids.sort.each do |pid| + instances = get_pids() + instances.each do |instance| + pid, port = instance.split("|") rss = (pid_rss(pid).to_i)/1024 - puts "thin_#{pid}.value #{rss}" + puts "thin_#{port}.value #{rss}" end end @@ -60,7 +61,7 @@ module Munin # fetch all pids that match thin def get_pids - pids = `pgrep thin`.split + pids = `pgrep -f 'thin' -l | awk -F " " '{ if (substr( $4, 10, 4)>=1) print $1"|"substr( $4, 10, 4)}'`.split(/\r?\n/) end def autoconf @@ -80,11 +81,12 @@ when "config" puts "graph_args --base 1024 -l 0" puts "graph_scale yes" puts "graph_info Tracks the size of individual thin processes" - mpm.get_pids.sort.each do |pid| - puts "thin_#{pid}.label thin_#{pid}" - puts "thin_#{pid}.info Process memory" - puts "thin_#{pid}.type GAUGE" - puts "thin_#{pid}.min 0" + mpm.get_pids.sort.each do |instance| + pid, port = instance.split("|") + puts "thin_#{port}.label thin_#{port}" + puts "thin_#{port}.info Process memory" + puts "thin_#{port}.type GAUGE" + puts "thin_#{port}.min 0" end when "autoconf" if mpm.autoconf diff --git a/plugins/thin/thin_threads b/plugins/thin/thin_threads index 1f39b906..16cbd567 100755 --- a/plugins/thin/thin_threads +++ b/plugins/thin/thin_threads @@ -41,10 +41,11 @@ module Munin class ThinThreads def run - pids = get_pids() - pids.sort.each do |pid| - res = (get_threads(pid).to_i) - puts "thin_#{pid}.value #{res}" + instances = get_pids() + instances.each do |instance| + pid, port = instance.split("|") + rss = (get_threads(pid).to_i)/1024 + puts "thin_#{port}.value #{rss}" end end @@ -61,13 +62,10 @@ module Munin return res end end - - - # Get pis using lsof (list open files) - # look for listening tcp applications - # that match the name thin + + # fetch all pids that match thin def get_pids - pids = `pgrep thin`.split + pids = `pgrep -f 'thin' -l | awk -F " " '{ if (substr( $4, 10, 4)>=1) print $1"|"substr( $4, 10, 4)}'`.split(/\r?\n/) end def autoconf @@ -87,11 +85,12 @@ when "config" puts "graph_args -l 0" puts "graph_scale yes" puts "graph_info Tracks how many threads per thin processes" - mpm.get_pids.sort.each do |pid| - puts "thin_#{pid}.label thin_#{pid}" - puts "thin_#{pid}.info Threads per Thin process" - puts "thin_#{pid}.type GAUGE" - puts "thin_#{pid}.min 0" + mpm.get_pids.sort.each do |instance| + pid, port = instance.split("|") + puts "thin_#{port}.label thin_#{port}" + puts "thin_#{port}.info Threads per Thin process" + puts "thin_#{port}.type GAUGE" + puts "thin_#{port}.min 0" end when "autoconf" if mpm.autoconf diff --git a/plugins/thin/thins_peak_memory b/plugins/thin/thins_peak_memory index 4d9b7123..049fda29 100755 --- a/plugins/thin/thins_peak_memory +++ b/plugins/thin/thins_peak_memory @@ -38,9 +38,9 @@ module Munin class ThinPeakMemory def run - pids = get_pids() - port_list = Hash.new - pids.sort.each do |pid, port| + instances = get_pids() + instances.each do |instance| + pid, port = instance.split("|") hwm = (pid_hwm(pid).to_i)/1024 puts "thin_#{port}.value #{hwm}" end @@ -61,18 +61,9 @@ module Munin end end - # Get pis using lsof (list open files) - # look for listening tcp applications - # that match the name thin + # fetch all pids that match thin def get_pids - pids_ports = [] - pids = `pgrep thin`.split - pids.each do |t| - port = `lsof -p #{t} | grep LISTEN`.split[8] - port = port.split(":")[1] - pids_ports << [t,port] - end - pids_ports + pids = `pgrep -f 'thin' -l | awk -F " " '{ if (substr( $4, 10, 4)>=1) print $1"|"substr( $4, 10, 4)}'`.split(/\r?\n/) end def autoconf @@ -92,7 +83,8 @@ when "config" puts "graph_args -l 0" puts "graph_scale yes" puts "graph_info Tracks the peak memory of thin processes, aka High Water Mark." - mpm.get_pids.sort.each do |pid,port| + mpm.get_pids.sort.each do |instance| + pid, port = instance.split("|") puts "thin_#{port}.label thin_#{port}" puts "thin_#{port}.info Peak Memory" puts "thin_#{port}.type GAUGE"