Как настроить collectd-snmp для опроса роутера?

Я пытаюсь использовать Raspberry Pi для опроса интерфейса MIB (IF:MIB) маршрутизатора TP-LINK, а затем отправить метрики в Librato. Настроить collectd и интегрировать его с Librato вообще не проблема — я успешно отслеживаю другие метрики (процессор, память и т. д.). Проблема, с которой я столкнулся, связана с конфигурацией плагина collectd-snmp.

Я установил net-snmp и могу "видеть" роутер:

pi@raspberrypi ~ $ snmpwalk -v 1 -c public 192.168.0.1 IF-MIB::ifInOctets
IF-MIB::ifInOctets.2 = Counter32: 1206812646
IF-MIB::ifInOctets.3 = Counter32: 1548296842
IF-MIB::ifInOctets.5 = Counter32: 19701783
IF-MIB::ifInOctets.10 = Counter32: 0
IF-MIB::ifInOctets.11 = Counter32: 0
IF-MIB::ifInOctets.15 = Counter32: 0
IF-MIB::ifInOctets.16 = Counter32: 0
IF-MIB::ifInOctets.22 = Counter32: 0
IF-MIB::ifInOctets.23 = Counter32: 0

Pi находится на 192.168.0.20, маршрутизатор на 192.168.0.1. Мой collectd.conf выглядит следующим образом:

<Plugin snmp>
  <Data "ifmib_if_octets32">
    Type "if_octets"
    Table true
    Instance "IF-MIB::ifDescr"
    Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets"
  </Data>
  <Host "localhost">
    Address "192.168.0.1"
    Version 1
    Community "public"
    Collect "ifmib_if_octets32"
    Interval 60
  </Host>
</Plugin>

Когда я перезапускаю collectd, я получаю следующую ошибку:

pi@raspberrypi ~ $ sudo service collectd restart
[....] Restarting statistics collection and monitoring daemon: collectdNo log handling enabled - turning on stderr logging
MIB search path: $HOME/.snmp/mibs:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
Cannot find module (IF-MIB): At line 0 in (none)
[2015-01-24 23:01:31] snmp plugin: read_objid (IF-MIB::ifDescr) failed.
[2015-01-24 23:01:31] snmp plugin: No such data configured: `ifmib_if_octets32'
No log handling enabled - turning on stderr logging
MIB search path: $HOME/.snmp/mibs:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
Cannot find module (IF-MIB): At line 0 in (none)
[2015-01-24 23:01:33] snmp plugin: read_objid (IF-MIB::ifDescr) failed.
[2015-01-24 23:01:33] snmp plugin: No such data configured: `ifmib_if_octets32'
. ok

Очевидно, что он не может найти MIB, похоже, он даже не смотрит на IP-адрес маршрутизатора. Любые предложения о том, как настроить это правильно?


person Nik    schedule 24.01.2015    source источник


Ответы (1)


Я понял:

<Plugin snmp>
  <Data "if_Octets">
    Type "if_octets"
    Table true
    Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets"
  </Data>
  <Host "tp-link">
    Address "192.168.0.1"
    Version 1
    Community "public"
    Collect "if_Octets"
    Interval 60
  </Host>
</Plugin>
person Nik    schedule 27.01.2015
comment
@ Bruno9779 хочешь уточнить? Я понятия не имею, что я здесь делаю - как правильно? - person Nik; 01.09.2015
comment
Номера OID не читаются человеком; для этого и нужны файлы SNMP MIB. Это обходной путь, потому что вместо решения проблемы с загрузкой файлов MIB вы вообще избегаете использования MIB. Я думаю, что collectd зависит от mibs, включенных в snmpd.conf. попробую, напишу ответ - person Bruno9779; 04.09.2015
comment
Решение на самом деле довольно простое — я следовал примеру Manpage до буквы и использовал префикс OID всех значений для запроса, поэтому IF-MIB::ifInOctets и IF-MIB::ifOutOctets. - person Nik; 02.10.2015
comment
В чем разница между этим и оригиналом? Спаси меня от прокрутки вверх и вниз, прокрутки вверх и вниз, пытаясь разобраться... - person Lightness Races in Orbit; 05.01.2020