class Mysql_status

Public Class Methods

get_slave_status(db) click to toggle source
# File bin/pancollect-mysql_status, line 23
def self.get_slave_status (db)
  rs = db.query('SHOW SLAVE STATUS')
  h = rs.fetch_hash or return {}
  raise "too many results" if rs.num_rows > 1
  return Hash[* h.keys.map {|k| [k.downcase, h[k]]}.flatten]
end
get_status(db) click to toggle source
# File bin/pancollect-mysql_status, line 14
def self.get_status (db)
  rs = db.query("SHOW STATUS")
  h = {}
  while( r = rs.fetch_row )
    h[r[0].downcase] = r[1]
  end
  return h
end
run(config) click to toggle source
# File bin/pancollect-mysql_status, line 30
def self.run (config)
  db = Mysql.new(*
    %w{hostname username password database port socket}.
    map {|k| config[k]})

  m = get_status(db)
  m.merge(get_slave_status(db))
  info = {}
  m.keys.each {|k|
    n = m[k].as_number
    if n
      m[k] = n
    else
      info[k] = m.delete(k)
    end
  }
  m[:_info] = info if info.length > 0
  puts JSON::generate(m)
end