Search in sources :

Example 6 with TableEvent

use of org.snmp4j.util.TableEvent in project mysql_perf_analyzer by yahoo.

the class SNMPClient method getNetIfData.

public Map<String, List<SNMPTriple>> getNetIfData(String device) throws IOException {
    Map<Integer, String> ifMaps = new HashMap<Integer, String>();
    Map<String, List<SNMPTriple>> resMap = new HashMap<String, List<SNMPTriple>>();
    Map<String, String> res = new HashMap<String, String>();
    TableUtils tUtils = new TableUtils(snmp, new DefaultPDUFactory());
    logger.fine("Query " + this.address + " for network interface, excluding lo");
    @SuppressWarnings("unchecked") List<TableEvent> events = tUtils.getTable(getTarget(), new OID[] { new OID("." + IF_TABLE_OID) }, null, null);
    for (TableEvent event : events) {
        if (event.isError()) {
            logger.warning("SNMP event error: " + event.getErrorMessage() + ", already returned: " + ifMaps);
            continue;
        //throw new RuntimeException(event.getErrorMessage());
        }
        for (VariableBinding vb : event.getColumns()) {
            String key = vb.getOid().toString();
            String value = vb.getVariable().toString();
            res.put(key, value);
            if (key.startsWith(IF_TABLE_DEVICE_OID + ".")) {
                if (device != null && !device.isEmpty() && !value.equalsIgnoreCase(device))
                    continue;
                if (value != null && !value.equalsIgnoreCase("lo")) {
                    logger.fine("Find device OID entry: " + key);
                    int index = -1;
                    String[] strs = key.split("\\.");
                    try {
                        index = Integer.parseInt(strs[strs.length - 1]);
                        ifMaps.put(index, value);
                    } catch (Exception ex) {
                    }
                }
            }
        }
    //for var
    }
    for (Map.Entry<Integer, String> entry : ifMaps.entrySet()) {
        int index = entry.getKey();
        String ifName = entry.getValue();
        //ignore the case with no incoming and no outgoing traffic
        if ("0".equals(res.get(IF_TABLE_OID + ".6." + index)) && "0".equals(res.get(IF_TABLE_OID + ".10." + index)))
            continue;
        resMap.put(ifName, new ArrayList<SNMPTriple>(IF_TABLE_ENTRIES.length));
        for (int i = 1; i < IF_TABLE_ENTRIES.length; i++) {
            if (IF_TABLE_ENTRIES[i].length() == 0)
                continue;
            resMap.get(ifName).add(new SNMPTriple("." + IF_TABLE_OID + "." + i + "." + index, IF_TABLE_ENTRIES[i], res.get(IF_TABLE_OID + "." + i + "." + index)));
        }
    }
    return resMap;
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) OctetString(org.snmp4j.smi.OctetString) OID(org.snmp4j.smi.OID) IOException(java.io.IOException) DefaultPDUFactory(org.snmp4j.util.DefaultPDUFactory) TableEvent(org.snmp4j.util.TableEvent) ArrayList(java.util.ArrayList) List(java.util.List) TableUtils(org.snmp4j.util.TableUtils) VariableBinding(org.snmp4j.smi.VariableBinding) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 7 with TableEvent

use of org.snmp4j.util.TableEvent in project mysql_perf_analyzer by yahoo.

the class SNMPClient method getDiskIndex.

private int getDiskIndex(String device) throws IOException {
    TableUtils tUtils = new TableUtils(snmp, new DefaultPDUFactory());
    logger.fine("Query " + this.address + " for disk data: " + device);
    @SuppressWarnings("unchecked") List<TableEvent> events = tUtils.getTable(getTarget(), new OID[] { new OID("." + DISK_TABLE_DEVICE_OID) }, null, null);
    for (TableEvent event : events) {
        if (event.isError()) {
            logger.warning("SNMP event error: " + event.getErrorMessage());
            continue;
        //throw new RuntimeException(event.getErrorMessage());
        }
        for (VariableBinding vb : event.getColumns()) {
            String key = vb.getOid().toString();
            String value = vb.getVariable().toString();
            if (value != null && value.equals(device)) {
                logger.fine("Find device OID entry: " + key);
                int index = -1;
                String[] strs = key.split("\\.");
                try {
                    index = Integer.parseInt(strs[strs.length - 1]);
                } catch (Exception ex) {
                }
                return index;
            }
        }
    }
    return -1;
}
Also used : DefaultPDUFactory(org.snmp4j.util.DefaultPDUFactory) TableEvent(org.snmp4j.util.TableEvent) TableUtils(org.snmp4j.util.TableUtils) OID(org.snmp4j.smi.OID) OctetString(org.snmp4j.smi.OctetString) VariableBinding(org.snmp4j.smi.VariableBinding) IOException(java.io.IOException)

Aggregations

OID (org.snmp4j.smi.OID)7 OctetString (org.snmp4j.smi.OctetString)7 DefaultPDUFactory (org.snmp4j.util.DefaultPDUFactory)7 TableEvent (org.snmp4j.util.TableEvent)7 TableUtils (org.snmp4j.util.TableUtils)7 VariableBinding (org.snmp4j.smi.VariableBinding)6 IOException (java.io.IOException)5 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 LinkedHashMap (java.util.LinkedHashMap)3 List (java.util.List)2 InetAddress (java.net.InetAddress)1 Map (java.util.Map)1 CommunityTarget (org.snmp4j.CommunityTarget)1 Snmp (org.snmp4j.Snmp)1 Target (org.snmp4j.Target)1 Address (org.snmp4j.smi.Address)1 UdpAddress (org.snmp4j.smi.UdpAddress)1 DefaultUdpTransportMapping (org.snmp4j.transport.DefaultUdpTransportMapping)1