class Bipbip::Plugin::FastcgiPhpApc

Public Instance Methods

_fetch_apc_stats() click to toggle source

@return [Hash]

# File lib/bipbip/plugin/fastcgi_php_apc.rb, line 13
def _fetch_apc_stats
  authority = config['host'].to_s + ':' + config['port'].to_s
  path = if config.key?('path')
           config['path'].to_s
         else
           File.join(Bipbip::Helper.data_path, 'apc-status.php')
         end

  env_backup = ENV.to_hash
  ENV['REQUEST_METHOD'] = 'GET'
  ENV['SCRIPT_NAME'] = File.basename(path)
  ENV['SCRIPT_FILENAME'] = path
  response = `cgi-fcgi -bind -connect #{authority.shellescape} 2>&1`
  ENV.replace(env_backup)

  body = response.split(/\r?\n\r?\n/)[1]
  raise "FastCGI response has no body: #{response}" unless body
  JSON.parse(body)
end
metrics_schema() click to toggle source
# File lib/bipbip/plugin/fastcgi_php_apc.rb, line 3
def metrics_schema
  [
    { name: 'opcode_mem_size', type: 'gauge', unit: 'b' },
    { name: 'user_mem_size', type: 'gauge', unit: 'b' },
    { name: 'used_mem_size', type: 'gauge', unit: 'b' },
    { name: 'used_mem_percentage', type: 'gauge', unit: '%' }
  ]
end
monitor() click to toggle source
# File lib/bipbip/plugin/fastcgi_php_apc.rb, line 33
def monitor
  stats = _fetch_apc_stats
  {
    opcode_mem_size: stats['opcode_mem_size'].to_i,
    user_mem_size: stats['user_mem_size'].to_i,
    used_mem_size: stats['used_mem_size'].to_i,
    used_mem_percentage: (stats['used_mem_size'].to_f / stats['total_mem_size'].to_f) * 100
  }
end