Откуда SNMP OID получают данные?
Если я хочу узнать сетевой трафик на моих Linux-серверах, используя SNMP. Я использую ifOutOctets. и ifInOctets. OID в запросе snmpget. Откуда эти OID получают данные?
1 ответ
На Ubuntu это казалось бы ifInOctets. и ifOutOctets. OID собирают данные из каталога /proc.
Это можно проверить используя strace -p <pid of SNMP>
, Strace записывает системные вызовы процесса. Strace производит много вывода на терминал при выполнении, однако используя опцию -e trace=open
фильтрует вывод на файлы, на которые ссылается SNMP.
Выполнение следующей команды strace -p <pid Of SNMP> -e trace=open
на моем устройстве Ubuntu выводит:
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
Файл /proc/net/dev содержит информацию о пакетах и байтах на всех интерфейсах. Это вероятный источник данных для идентификаторов ifInOctets и ifOutOctets в Ubuntu.