. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace LibreNMS\OS\Traits; use LibreNMS\Device\Processor; trait HostResources { /** * Discover processors. * Returns an array of LibreNMS\Device\Processor objects that have been discovered * * @return array Processors */ public function discoverProcessors() { echo "Host Resources: "; $processors = array(); try { $hrProcessorLoad = $this->getCacheByIndex('hrProcessorLoad', 'HOST-RESOURCES-MIB'); if (empty($hrProcessorLoad)) { // no hr data, return return array(); } $hrDeviceDescr = $this->getCacheByIndex('hrDeviceDescr', 'HOST-RESOURCES-MIB'); } catch (\Exception $e) { return array(); } foreach ($hrProcessorLoad as $index => $usage) { $usage_oid = '.1.3.6.1.2.1.25.3.3.1.2.' . $index; $descr = $hrDeviceDescr[$index]; if (!is_numeric($usage)) { continue; } $device = $this->getDevice(); if ($device['os'] == 'arista-eos' && $index == '1') { continue; } if (empty($descr) || $descr == 'Unknown Processor Type' // Windows: Unknown Processor Type || $descr == 'An electronic chip that makes the computer work.' ) { $descr = 'Processor'; } else { // Make the description a bit shorter $remove_strings = array( 'GenuineIntel: ', 'AuthenticAMD: ', 'CPU ', '(TM)', '(R)', ); $descr = str_replace($remove_strings, '', $descr); $descr = str_replace(' ', ' ', $descr); } $old_name = array('hrProcessor', $index); $new_name = array('processor', 'hr', $index); rrd_file_rename($this->getDevice(), $old_name, $new_name); $processor = Processor::discover( 'hr', $this->getDeviceId(), $usage_oid, $index, $descr, 1, $usage, null, null, $index ); if ($processor->isValid()) { $processors[] = $processor; } } return $processors; } }