lib/arborist/monitor/snmp/memory.rb
changeset 14 d5cb8bd33170
parent 8 e0b7c95a154f
child 26 54f2f57cc0b0
equal deleted inserted replaced
13:6723f3b07536 14:d5cb8bd33170
   129 	###
   129 	###
   130 	def get_windows( snmp )
   130 	def get_windows( snmp )
   131 		info  = { memory: {}, swap: {} }
   131 		info  = { memory: {}, swap: {} }
   132 		mem_idx, swap_idx = nil
   132 		mem_idx, swap_idx = nil
   133 
   133 
   134 		snmp.walk( MEMORY[:windows][:label] ).each_with_index do |(_, val), i|
   134 		snmp.walk( oid: MEMORY[:windows][:label] ).each_with_index do |(_, val), i|
   135 			mem_idx  = i + 1 if val =~ /physical memory/i
   135 			mem_idx  = i + 1 if val =~ /physical memory/i
   136 			swap_idx = i + 1 if val =~ /virtual memory/i
   136 			swap_idx = i + 1 if val =~ /virtual memory/i
   137 		end
   137 		end
   138 		return info unless mem_idx
   138 		return info unless mem_idx
   139 
   139 
   146 
   146 
   147 	### Format usage and available amount, given an OID hash.
   147 	### Format usage and available amount, given an OID hash.
   148 	###
   148 	###
   149 	def calc_memory( snmp, oids )
   149 	def calc_memory( snmp, oids )
   150 		info = { usage: 0, available: 0 }
   150 		info = { usage: 0, available: 0 }
   151 		avail = snmp.get( oids[:avail] ).varbinds.first.value.to_f
   151 		avail = snmp.get( oid: oids[:avail] ).to_f
   152 		total = snmp.get( oids[:total] ).varbinds.first.value.to_f
   152 		total = snmp.get( oid: oids[:total] ).to_f
   153 		used  = total - avail
   153 		used  = total - avail
   154 
   154 
   155 		return info if avail.zero?
   155 		return info if avail.zero?
   156 
   156 
   157 		info[ :usage ]     = (( used / total ) * 100 ).round( 2 )
   157 		info[ :usage ]     = (( used / total ) * 100 ).round( 2 )
   164 	###
   164 	###
   165 	def calc_windows_memory( snmp, idx)
   165 	def calc_windows_memory( snmp, idx)
   166 		info = { usage: 0, available: 0 }
   166 		info = { usage: 0, available: 0 }
   167 		return info unless idx
   167 		return info unless idx
   168 
   168 
   169 		units = snmp.get( MEMORY[:windows][:units] + ".#{idx}" ).varbinds.first.value
   169 		units = snmp.get( oid: MEMORY[:windows][:units] + ".#{idx}" )
   170 		total = snmp.get( MEMORY[:windows][:total] + ".#{idx}" ).varbinds.first.value.to_f * units
   170 		total = snmp.get( oid: MEMORY[:windows][:total] + ".#{idx}" ).to_f * units
   171 		used  = snmp.get( MEMORY[:windows][:used] + ".#{idx}" ).varbinds.first.value.to_f * units
   171 		used  = snmp.get( oid: MEMORY[:windows][:used] + ".#{idx}" ).to_f * units
   172 
   172 
   173 		info[ :usage ]     = (( used / total ) * 100 ).round( 2 )
   173 		info[ :usage ]     = (( used / total ) * 100 ).round( 2 )
   174 		info[ :available ] = (( total - used ) / 1024 / 1024 ).round( 2 )
   174 		info[ :available ] = (( total - used ) / 1024 / 1024 ).round( 2 )
   175 		return info
   175 		return info
   176 	end
   176 	end