Доброго времени суток! Появилась задача мониторить значение, так называемое pps (packets per second), для мониторинга остальных параметров системы уже использую связку rrd + snmp.
Накидал запрос, который должен снимать эти показатели, но столкнулся с проблемой:
Данные снятые по snmp сильно не совпадают с данными получаемыми в выводе netstat -w 1 -i $if
Сначала думал, что где то напутал, но потом решил сравнить оба метода, для этого в случае snmp решил использовать snmpdelta, которая предназначена считать изменение того или иного параметра. Что получаю:
# /usr/local/bin/snmpdelta -v 1 -c public -Os -Oq localhost ifInUcastPkts.1
ifInUcastPkts.1 /1 sec: 1601
ifInUcastPkts.1 /1 sec: 1512
ifInUcastPkts.1 /1 sec: 1878
ifInUcastPkts.1 /1 sec: 851
ifInUcastPkts.1 /1 sec: 1208
ifInUcastPkts.1 /1 sec: 984
ifInUcastPkts.1 /1 sec: 1644
ifInUcastPkts.1 /1 sec: 1661
ifInUcastPkts.1 /1 sec: 1510
ifInUcastPkts.1 /1 sec: 1437
ifInUcastPkts.1 /1 sec: 1742# netstat -w 1 -i xl0
input (Total) output
packets errs bytes packets errs bytes colls
8098 0 930808 13332 0 26002652 0
7954 0 959920 13052 0 25513362 0
9983 0 1031555 16751 0 32663900 0
6369 0 876104 9995 0 19500473 0
6483 0 941331 10269 0 19378140 0
5901 0 784597 9720 0 18774583 0
4526 0 801880 6645 0 10980835 0
8752 0 977147 14590 0 28431173 0
7229 0 949867 11674 0 21770093 0
6853 0 817639 11232 0 21376701 0Соответственно нас интересует значение input в выводе netstat. Что интересно, решил вручную посчитать разницу с вывода netstat -i $if, снял топорно, 2 команды с периодом 1 секунда (секунду отмерил по часам), получилось значение близкое к снятому по snmp.
Вопрос, кто врёт? snmp или netstat -w ? Или я веду речь о разных вещах?
поди snmp не с того интерфейса дергается ))
>поди snmp не с того интерфейса дергается ))Всё от куда надо, дёргается.
>>поди snmp не с того интерфейса дергается ))
>
>Всё от куда надо, дёргается.да ну? )
Subsidiary references (single level)
1.3.6.1.2.1.2.2.1.1 - ifIndex
1.3.6.1.2.1.2.2.1.2 - ifDescr
1.3.6.1.2.1.2.2.1.3 - ifType
1.3.6.1.2.1.2.2.1.4 - ifMtu
1.3.6.1.2.1.2.2.1.5 - ifSpeed
1.3.6.1.2.1.2.2.1.6 - ifPhysAddress
1.3.6.1.2.1.2.2.1.7 - ifAdminStatus
1.3.6.1.2.1.2.2.1.8 - ifOperStatus
1.3.6.1.2.1.2.2.1.9 - ifLastChange
1.3.6.1.2.1.2.2.1.10 - ifInOctets
1.3.6.1.2.1.2.2.1.11 - ifInUcastPkts
1.3.6.1.2.1.2.2.1.12 - ifInNUcastPkts
1.3.6.1.2.1.2.2.1.13 - ifInDiscards
1.3.6.1.2.1.2.2.1.14 - ifInErrors
1.3.6.1.2.1.2.2.1.15 - ifInUnknownProtos
1.3.6.1.2.1.2.2.1.16 - ifOutOctets
1.3.6.1.2.1.2.2.1.17 - ifOutUcastPkts
1.3.6.1.2.1.2.2.1.18 - ifOutNUcastPkts
1.3.6.1.2.1.2.2.1.19 - ifOutDiscards
1.3.6.1.2.1.2.2.1.20 - ifOutErrors
1.3.6.1.2.1.2.2.1.21 - ifOutQLen
1.3.6.1.2.1.2.2.1.22 - ifSpecificчето твой OID на эти не похожжжжжжж ... (это жжжж неспроста!)
>[оверквотинг удален]
>1.3.6.1.2.1.2.2.1.15 - ifInUnknownProtos
>1.3.6.1.2.1.2.2.1.16 - ifOutOctets
>1.3.6.1.2.1.2.2.1.17 - ifOutUcastPkts
>1.3.6.1.2.1.2.2.1.18 - ifOutNUcastPkts
>1.3.6.1.2.1.2.2.1.19 - ifOutDiscards
>1.3.6.1.2.1.2.2.1.20 - ifOutErrors
>1.3.6.1.2.1.2.2.1.21 - ifOutQLen
>1.3.6.1.2.1.2.2.1.22 - ifSpecific
>
>чето твой OID на эти не похожжжжжжж ... (это жжжж неспроста!)И чем мой ifInUcastPkts.1 не похож на твой 1.3.6.1.2.1.2.2.1.11 - ifInUcastPkts ?
.1 в моём случае означает № ИФа, который определяется значением выше. И нет никакого смысла городить не нужные конструкции из OIDов или как их там, когда можно точно указать на нужный мне параметр, по его названию.
Да, и перестань говорить загадками... (это я про "жжжжжж")
1.3.6.1.2.1.2.2.1.11 это (частично переведу):
1.3.6.1.2.1.2.ifTable.ifEntry.ifInUcastPkts.1
а у тебя:
ifInUcastPkts.1вот поэтому сильно терзают сомнения что это именно тот счетчик
покажи это:
snmpwalk -c public -v 2c -O bn localhost 1.3.6.1.2.1.2.2.1
>1.3.6.1.2.1.2.2.1.11 это (частично переведу):
> 1.3.6.1.2.1.2.ifTable.ifEntry.ifInUcastPkts.1
>а у тебя:
> ifInUcastPkts.1
>
>вот поэтому сильно терзают сомнения что это именно тот счетчик
>
>покажи это:
>snmpwalk -c public -v 2c -O bn localhost 1.3.6.1.2.1.2.2.1Зря терзают. smnpwalk прекрасно умеет работать, как с OID, так и с Descriptor.
В данном случае флаги -Os -Oq тупо отсекают не нужный мне вывод.
# /usr/local/bin/snmpwalk -v 1 -Os -Oq -c public localhost 1.3.6.1.2.1.2.2.1.11.1
ifInUcastPkts.1 1455157891Без них:
# /usr/local/bin/snmpwalk -v 1 -c public localhost 1.3.6.1.2.1.2.2.1.11.1
IF-MIB::ifInUcastPkts.1 = Counter32: 1455387250
# snmptranslate -On IF-MIB::ifInUcastPkts.1
.1.3.6.1.2.1.2.2.1.11.1ну и до кучи:
#man mibhelp
ifInUcastPkts
Descriptor: ifInUcastPkts
Identifier: 1.3.6.1.2.1.2.2.1.11
ASN.1 Syntax: Counter32The number of subnetwork-unicast packets delivered to a higher-layer protocol.
Так, что это именно тот счётчик.Вывод snmpwalk -c public -v 2c -O bn localhost 1.3.6.1.2.1.2.2.1 - не жалко, вот он:
# snmpwalk -c public -v 2c -O bn localhost 1.3.6.1.2.1.2.2.1
.1.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
.1.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2
.1.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3
.1.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
.1.3.6.1.2.1.2.2.1.1.5 = INTEGER: 5
.1.3.6.1.2.1.2.2.1.1.6 = INTEGER: 6
.1.3.6.1.2.1.2.2.1.2.1 = STRING: xl0
.1.3.6.1.2.1.2.2.1.2.2 = STRING: nfe0
.1.3.6.1.2.1.2.2.1.2.3 = STRING: plip0
.1.3.6.1.2.1.2.2.1.2.4 = STRING: lo0
.1.3.6.1.2.1.2.2.1.2.5 = STRING: bridge0
.1.3.6.1.2.1.2.2.1.2.6 = STRING: tap0
.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: para(34)
.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: softwareLoopback(24)
.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: bridge(209)
.1.3.6.1.2.1.2.2.1.3.6 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.4.1 = INTEGER: 1500
.1.3.6.1.2.1.2.2.1.4.2 = INTEGER: 1500
.1.3.6.1.2.1.2.2.1.4.3 = INTEGER: 1500
.1.3.6.1.2.1.2.2.1.4.4 = INTEGER: 16384
.1.3.6.1.2.1.2.2.1.4.5 = INTEGER: 1500
.1.3.6.1.2.1.2.2.1.4.6 = INTEGER: 1500
.1.3.6.1.2.1.2.2.1.5.1 = Gauge32: 100000000
.1.3.6.1.2.1.2.2.1.5.2 = Gauge32: 100000000
.1.3.6.1.2.1.2.2.1.5.3 = Gauge32: 0
.1.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0
.1.3.6.1.2.1.2.2.1.5.5 = Gauge32: 0
.1.3.6.1.2.1.2.2.1.5.6 = Gauge32: 10000000
.1.3.6.1.2.1.2.2.1.6.1 = STRING: 0:3:99:8a:50:e2
.1.3.6.1.2.1.2.2.1.6.2 = STRING: 0:1f:d0:5c:b0:df
.1.3.6.1.2.1.2.2.1.6.3 = STRING:
.1.3.6.1.2.1.2.2.1.6.4 = STRING:
.1.3.6.1.2.1.2.2.1.6.5 = STRING: 12:4:1d:4a:fc:d4
.1.3.6.1.2.1.2.2.1.6.6 = STRING: 0:bd:e2:80:4:0
.1.3.6.1.2.1.2.2.1.7.1 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.7.2 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.7.3 = INTEGER: down(2)
.1.3.6.1.2.1.2.2.1.7.4 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.7.5 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.7.6 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.8.1 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.8.2 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.8.3 = INTEGER: down(2)
.1.3.6.1.2.1.2.2.1.8.4 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.8.5 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.8.6 = INTEGER: up(1)
.1.3.6.1.2.1.2.2.1.9.1 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.2.1.9.2 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.2.1.9.3 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.2.1.9.4 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.2.1.9.5 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.2.1.9.6 = Timeticks: (16765240) 1 day, 22:34:12.40
.1.3.6.1.2.1.2.2.1.10.1 = Counter32: 3703558237
.1.3.6.1.2.1.2.2.1.10.2 = Counter32: 2896018710
.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.10.4 = Counter32: 757686477
.1.3.6.1.2.1.2.2.1.10.5 = Counter32: 489170200
.1.3.6.1.2.1.2.2.1.10.6 = Counter32: 3104628186
.1.3.6.1.2.1.2.2.1.11.1 = Counter32: 1455428759
.1.3.6.1.2.1.2.2.1.11.2 = Counter32: 1477608935
.1.3.6.1.2.1.2.2.1.11.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.11.4 = Counter32: 991192
.1.3.6.1.2.1.2.2.1.11.5 = Counter32: 1938033398
.1.3.6.1.2.1.2.2.1.11.6 = Counter32: 460845030
.1.3.6.1.2.1.2.2.1.12.1 = Counter32: 63737830
.1.3.6.1.2.1.2.2.1.12.2 = Counter32: 486440
.1.3.6.1.2.1.2.2.1.12.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.12.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.12.5 = Counter32: 1320846
.1.3.6.1.2.1.2.2.1.12.6 = Counter32: 173983
.1.3.6.1.2.1.2.2.1.13.1 = Counter32: 0
.1.3.6.1.2.1.2.2.1.13.2 = Counter32: 1041
.1.3.6.1.2.1.2.2.1.13.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.13.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.13.5 = Counter32: 0
.1.3.6.1.2.1.2.2.1.13.6 = Counter32: 0
.1.3.6.1.2.1.2.2.1.14.1 = Counter32: 16684
.1.3.6.1.2.1.2.2.1.14.2 = Counter32: 1
.1.3.6.1.2.1.2.2.1.14.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.14.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.14.5 = Counter32: 0
.1.3.6.1.2.1.2.2.1.14.6 = Counter32: 1
.1.3.6.1.2.1.2.2.1.15.1 = Counter32: 20
.1.3.6.1.2.1.2.2.1.15.2 = Counter32: 0
.1.3.6.1.2.1.2.2.1.15.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.15.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.15.5 = Counter32: 0
.1.3.6.1.2.1.2.2.1.15.6 = Counter32: 0
.1.3.6.1.2.1.2.2.1.16.1 = Counter32: 360558247
.1.3.6.1.2.1.2.2.1.16.2 = Counter32: 3916366599
.1.3.6.1.2.1.2.2.1.16.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.16.4 = Counter32: 757678560
.1.3.6.1.2.1.2.2.1.16.5 = Counter32: 2734396512
.1.3.6.1.2.1.2.2.1.16.6 = Counter32: 3927221306
.1.3.6.1.2.1.2.2.1.17.1 = Counter32: 1669213033
.1.3.6.1.2.1.2.2.1.17.2 = Counter32: 2499259165
.1.3.6.1.2.1.2.2.1.17.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.17.4 = Counter32: 991263
.1.3.6.1.2.1.2.2.1.17.5 = Counter32: 2868924216
.1.3.6.1.2.1.2.2.1.17.6 = Counter32: 369639216
.1.3.6.1.2.1.2.2.1.18.1 = Counter32: 0
.1.3.6.1.2.1.2.2.1.18.2 = Counter32: 0
.1.3.6.1.2.1.2.2.1.18.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.18.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.18.5 = Counter32: 0
.1.3.6.1.2.1.2.2.1.18.6 = Counter32: 0
.1.3.6.1.2.1.2.2.1.19.1 = Counter32: 0
.1.3.6.1.2.1.2.2.1.19.2 = Counter32: 0
.1.3.6.1.2.1.2.2.1.19.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.19.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.19.5 = Counter32: 0
.1.3.6.1.2.1.2.2.1.19.6 = Counter32: 0
.1.3.6.1.2.1.2.2.1.20.1 = Counter32: 1
.1.3.6.1.2.1.2.2.1.20.2 = Counter32: 0
.1.3.6.1.2.1.2.2.1.20.3 = Counter32: 0
.1.3.6.1.2.1.2.2.1.20.4 = Counter32: 0
.1.3.6.1.2.1.2.2.1.20.5 = Counter32: 0
.1.3.6.1.2.1.2.2.1.20.6 = Counter32: 308
.1.3.6.1.2.1.2.2.1.2.1 = STRING: xl07
.1.3.6.1.2.1.2.2.1.2.2 = STRING: nfe07
.1.3.6.1.2.1.2.2.1.2.3 = STRING: plip0
.1.3.6.1.2.1.2.2.1.2.4 = STRING: lo0
.1.3.6.1.2.1.2.2.1.2.5 = STRING: bridge0
.1.3.6.1.2.1.2.2.1.2.6 = STRING: tap07мож это из-а активного бриджа?
>.1.3.6.1.2.1.2.2.1.2.1 = STRING: xl07
>.1.3.6.1.2.1.2.2.1.2.2 = STRING: nfe07
>.1.3.6.1.2.1.2.2.1.2.3 = STRING: plip0
>.1.3.6.1.2.1.2.2.1.2.4 = STRING: lo0
>.1.3.6.1.2.1.2.2.1.2.5 = STRING: bridge0
>.1.3.6.1.2.1.2.2.1.2.6 = STRING: tap07
>
>мож это из-а активного бриджа?Сбриджованны внутри nfe0 и tap0, xl0 внешний, к нему это не относится. Была мысль, что из-за самого счётчика Ucast, который не учитывает multicast и broadcast, но потом посмотрел кол-во таких пакетов - оно ничтожно мало 15-20 в сек, а разница явно на 1-3к пакетов.