Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Add port number and fix process matching #259

Merged
merged 3 commits into from

2 participants

@tomav

Hi,

As explained here, this is a pull request which allow better readability.
Today, graph label are thin_xxxx where xxxx is the pid number. After each restart, pid changes so you can't collect data.
This pull request will replace pid by port which is static.

@tomav

Hmm, found an error... I'm fixing it.

@kenyon kenyon merged commit fc63981 into munin-monitoring:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
20 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
View
29 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
View
22 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"
Something went wrong with that request. Please try again.