Sha256: 2a01c5c71a37343f85b123d5a24bacd63d00fb35a4d3f3b39f7d398836db9f87
Contents?: true
Size: 1.65 KB
Versions: 145
Compression:
Stored size: 1.65 KB
Contents
#!/usr/bin/env ruby require 'yaml' # Exit status OK = 0 WARNING = 1 CRITICAL = 2 # use options instead application = ARGV[0] cluster_config_file = "/etc/mongrel_cluster/#{application}.yml" def running?(pid) # check if pid is running ps_output = `ps -p #{pid}` ps_output =~ /mongrel_rails/ end def chdir_cwd pwd = Dir.pwd Dir.chdir(@options["cwd"]) if @options["cwd"] yield Dir.chdir(pwd) if @options["cwd"] end def read_pid(port) pid_file = port_pid_file(port) pid = 0 chdir_cwd do pid = File.read(pid_file) end pid end # Load cluster config from YAML file begin cluster_config = YAML.load_file(cluster_config_file) port = cluster_config['port'].to_i servers = cluster_config['servers'] ports = (port..port+servers-1).collect if cluster_config['pid_file'].match(/^\//) pid_file_base = cluster_config['pid_file'] else pid_file_base = File.join(cluster_config['cwd'], cluster_config['pid_file']) end rescue print 'CRITICAL' puts " Could not load mongrel cluster file (#{cluster_config_file})" exit CRITICAL end # Check each mongrel running = [] not_running = [] ports.each {|port| pidfile = pid_file_base.sub('.pid',".#{port}.pid") if File.readable?(pidfile) pid = File.read(pidfile) if running?(pid) running << port else not_running << port end else not_running << port end } # Print response and exit if not_running.empty? print 'OK ' puts "mongrel running on ports #{running.join(', ')}" exit OK else print 'CRITICAL ' puts "mongrel not running on #{not_running.join(', ')}. #{'Running on ' + running.join(', ') unless running.empty?}" exit CRITICAL end
Version data entries
145 entries across 145 versions & 6 rubygems