#IP-MIB::ipSystemStatsOutNoRoutes.ipv6 = Counter32: 0 #IP-MIB::ipSystemStatsHCOutForwDatagrams.ipv4 = Counter64: 0 #IP-MIB::ipSystemStatsHCOutForwDatagrams.ipv6 = Counter64: 0 #IP-MIB::ipSystemStatsOutDiscards.ipv4 = Counter32: 205 #IP-MIB::ipSystemStatsOutDiscards.ipv6 = Counter32: 0 #IP-MIB::ipSystemStatsOutFragFails.ipv4 = Counter32: 0 #IP-MIB::ipSystemStatsOutFragFails.ipv6 = Counter32: 0 #IP-MIB::ipSystemStatsOutFragCreates.ipv4 = Counter32: 0 #IP-MIB::ipSystemStatsOutFragCreates.ipv6 = Counter32: 68 #IP-MIB::ipSystemStatsDiscontinuityTime.ipv4 = Timeticks: (0) 0:00:00.00 #IP-MIB::ipSystemStatsDiscontinuityTime.ipv6 = Timeticks: (0) 0:00:00.00 #IP-MIB::ipSystemStatsRefreshRate.ipv4 = Gauge32: 30000 milli-seconds #IP-MIB::ipSystemStatsRefreshRate.ipv6 = Gauge32: 30000 milli-seconds // FIXME instead of checking for blacklist, shouldn't we just add it to ALL devices, then use is_device_mib ? // This code means you can't disable IP-MIB from the web interface and have it actually work. if (!in_array("IP-MIB", get_device_mibs_blacklist($device))) { print_cli_data("Collecting", 'ipSystemStats', 2); $ipSystemStats = snmpwalk_cache_oid($device, "ipSystemStats", NULL, "IP-MIB"); if ($ipSystemStats) { print_cli_data_field("Address Families", 2); foreach ($ipSystemStats as $af => $stats) { echo " {$af}"; $oids = array('ipSystemStatsInReceives', 'ipSystemStatsInHdrErrors', 'ipSystemStatsInAddrErrors', 'ipSystemStatsInUnknownProtos', 'ipSystemStatsInForwDatagrams', 'ipSystemStatsReasmReqds', 'ipSystemStatsReasmOKs', 'ipSystemStatsReasmFails', 'ipSystemStatsInDiscards', 'ipSystemStatsInDelivers', 'ipSystemStatsOutRequests', 'ipSystemStatsOutNoRoutes', 'ipSystemStatsOutDiscards', 'ipSystemStatsOutFragFails', 'ipSystemStatsOutFragCreates', 'ipSystemStatsOutForwDatagrams'); // Use HC counters instead if they're available. if (isset($stats['ipSystemStatsHCInReceives'])) { $stats['ipSystemStatsInReceives'] = $stats['ipSystemStatsHCInReceives']; } if (isset($stats['ipSystemStatsHCInForwDatagrams'])) { $stats['ipSystemStatsInForwDatagrams'] = $stats['ipSystemStatsHCInForwDatagrams']; } if (isset($stats['ipSystemStatsHCInDelivers'])) {
// TCP $netstats_poll['tcp']['mib'] = 'TCP-MIB'; $netstats_poll['tcp']['graphs'] = array('netstat_tcp_stats', 'netstat_tcp_segments', 'netstat_tcp_currestab'); $netstats_poll['tcp']['oids_t'] = array('tcpInSegs', 'tcpOutSegs'); $netstats_poll['tcp']['oids'] = array('tcpActiveOpens', 'tcpPassiveOpens', 'tcpAttemptFails', 'tcpEstabResets', 'tcpCurrEstab', 'tcpInSegs', 'tcpOutSegs', 'tcpRetransSegs', 'tcpInErrs', 'tcpOutRsts'); # 'tcpHCInSegs', 'tcpHCOutSegs' // ? Counter64 = 1,844674407 × 10^19 // UDP $netstats_poll['udp']['mib'] = 'UDP-MIB'; $netstats_poll['udp']['graphs'] = array('netstat_udp_datagrams', 'netstat_udp_errors'); $netstats_poll['udp']['oids_t'] = array('udpInDatagrams', 'udpOutDatagrams'); $netstats_poll['udp']['oids'] = array('udpInDatagrams', 'udpOutDatagrams', 'udpInErrors', 'udpNoPorts'); // SNMP $netstats_poll['snmp']['mib'] = 'SNMPv2-MIB'; $netstats_poll['snmp']['graphs'] = array('netstat_snmp_stats', 'netstat_snmp_packets'); $netstats_poll['snmp']['oids'] = array('snmpInPkts', 'snmpOutPkts', 'snmpInBadVersions', 'snmpInBadCommunityNames', 'snmpInBadCommunityUses', 'snmpInASNParseErrs', 'snmpInTooBigs', 'snmpInNoSuchNames', 'snmpInBadValues', 'snmpInReadOnlys', 'snmpInGenErrs', 'snmpInTotalReqVars', 'snmpInTotalSetVars', 'snmpInGetRequests', 'snmpInGetNexts', 'snmpInSetRequests', 'snmpInGetResponses', 'snmpInTraps', 'snmpOutTooBigs', 'snmpOutNoSuchNames', 'snmpOutBadValues', 'snmpOutGenErrs', 'snmpOutGetRequests', 'snmpOutGetNexts', 'snmpOutSetRequests', 'snmpOutGetResponses', 'snmpOutTraps', 'snmpSilentDrops', 'snmpProxyDrops'); $mibs_blacklist = get_device_mibs_blacklist($device); foreach ($netstats_poll as $type => $netstats) { // FIXME same as ipSystemStats: shouldn't we just use is_device_mib and make sure those MIBs are assigned to all devices by default? // You can't turn them off in the web interface now. if (in_array($netstats['mib'], $mibs_blacklist)) { continue; } // Skip blacklisted MIBs $oids = $netstats['oids']; if (isset($netstats['oids_t'])) { $oids_string = implode('.0 ', $netstats['oids_t']) . '.0'; $data = snmp_get_multi($device, $oids_string, '-OQUs', $netstats['mib']); // get testing oids if (!count($data)) { continue; }
function get_device_mibs($device, $check_sysORID = TRUE, $mibs_order = NULL) { global $config, $cache; if (is_numeric($device)) { $device_id = $device; $device = device_by_id_cache($device_id); } else { $device_id = $device['device_id']; } // Set custom mibs order $mibs_order_default = array('model', 'os', 'group', 'default'); if (empty($mibs_order)) { // Default order: per-model mibs (if model set) -> os mibs -> os group mibs -> default mibs $mibs_order = $mibs_order_default; } else { if (!is_array($mibs_order)) { // Order can passed as string with comma: 'model,os,group,default' $mibs_order = explode(',', $mibs_order); } } // Check if custom order used, than set first from passed argument, second from default if ($mibs_order_custom = $mibs_order !== $mibs_order_default) { // Set first from passed argument, second $mibs_order = array_unique(array_merge($mibs_order, $mibs_order_default)); } // Cache main device MIBs list if (!isset($cache['devices']['mibs'][$device_id])) { $mibs = array(); foreach ($mibs_order as $order) { switch ($order) { case 'model': if (isset($config['os'][$device['os']]['model'])) { $model = $config['os'][$device['os']]['model']; $sysObjectID = preg_match('/^\\.\\d[\\d\\.]+$/', $device['sysObjectID']) ? $device['sysObjectID'] : 'WRONG_ID'; krsort($config['model'][$model]); // Resort array by key with high to low order! foreach ($config['model'][$model] as $key => $entry) { if (isset($entry['mibs']) && strpos($sysObjectID, $key) === 0) { $mibs = array_merge($mibs, (array) $entry['mibs']); break; } } } break; case 'os': $mibs = array_merge((array) $mibs, (array) $config['os'][$device['os']]['mibs']); break; case 'group': $mibs = array_merge((array) $mibs, (array) $config['os_group'][$config['os'][$device['os']]['group']]['mibs']); break; case 'default': $mibs = array_merge((array) $mibs, (array) $config['os']['default']['mibs']); break; } } $mibs = array_unique($mibs); //$mibs = array_unique(array_merge((array)$mibs, (array)$config['os'][$device['os']]['mibs'], // (array)$config['os_group'][$config['os'][$device['os']]['group']]['mibs'], // (array)$config['os']['default']['mibs'])); // Remove blacklisted MIBs from array $mibs = array_diff($mibs, get_device_mibs_blacklist($device)); $cache['devices']['mibs'][$device_id] = $mibs; } else { $mibs = $cache['devices']['mibs'][$device_id]; } // Add and cache sysORID supplied MIBs if any if ($check_sysORID) { if (!isset($cache['devices']['mibs_sysORID'][$device_id])) { $sysORID = json_decode(get_entity_attrib('device', $device, 'sysORID'), TRUE); if (is_array($sysORID)) { // Leave only not exist in main MIBs and blacklist $sysORID = array_diff($sysORID, get_device_mibs_blacklist($device), (array) $cache['devices']['mibs'][$device_id]); } else { $sysORID = array(); // Leave empty } $cache['devices']['mibs_sysORID'][$device_id] = $sysORID; } // Attach sysORID MIBs $mibs = array_merge((array) $cache['devices']['mibs'][$device_id], (array) $cache['devices']['mibs_sysORID'][$device_id]); } // Do not cache MIBs if custom order used if ($mibs_order_custom) { unset($cache['devices']['mibs'][$device_id]); } return $mibs; }