コード例 #1
0
#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'])) {
コード例 #2
0
ファイル: netstats.inc.php プロジェクト: Natolumin/observium
// 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;
        }
コード例 #3
0
ファイル: common.inc.php プロジェクト: Natolumin/observium
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;
}