
Wenn ich den Netzwerkverkehr auf meinen Linux-Servern mit SNMP herausfinden möchte, verwende ich die OIDs ifOutOctets und ifInOctets in einer SNMPGET-Anfrage. Woher beziehen diese OIDs die Daten?
Antwort1
Unter Ubuntu scheinen die OIDs „ifInOctets“ und „ifOutOctets“ die Daten aus dem Verzeichnis „/proc“ zu sammeln.
Dies kann mithilfe von überprüft werden strace -p <pid of SNMP>
. Strace zeichnet die Systemaufrufe des Prozesses auf. Strace erzeugt bei der Ausführung viel Ausgabe auf dem Terminal, die Verwendung der Option -e trace=open
filtert jedoch die Ausgabe auf die Dateien, auf die SNMP verweist.
Die Ausführung des folgenden Befehls strace -p <pid Of SNMP> -e trace=open
auf meinem Ubuntu-Gerät gibt Folgendes aus:
open("/proc/stat", O_RDONLY|O_LARGEFILE) = 13
open("/proc/vmstat", O_RDONLY|O_LARGEFILE) = 13
open("/proc/net/dev", O_RDONLY|O_LARGEFILE) = 13
open("/proc/net/if_inet6", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv4/neigh/ppp0/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv4/neigh/lo/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/neigh/lo/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/conf/lo/forwarding", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/neigh/lo/base_reachable_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv4/neigh/eth0/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/neigh/eth0/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/conf/eth0/forwarding", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/neigh/eth0/base_reachable_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv4/neigh/eth1/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/neigh/eth1/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/conf/eth1/forwarding", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv6/neigh/eth1/base_reachable_time_ms", O_RDONLY|O_LARGEFILE) = 15
open("/proc/diskstats", O_RDONLY|O_LARGEFILE) = 13
open("/proc/net/dev", O_RDONLY|O_LARGEFILE) = 13
open("/proc/net/if_inet6", O_RDONLY|O_LARGEFILE) = 15
open("/proc/sys/net/ipv4/neigh/ppp0/retrans_time_ms", O_RDONLY|O_LARGEFILE) = 15
Die Datei /proc/net/dev enthält Paket- und Byteinformationen zu allen Schnittstellen. Dies ist wahrscheinlich die Datenquelle für ifInOctets- und ifOutOctets-OIDs unter Ubuntu.