Строим графики работы с помощью snmp и MRTG.
Графики работы системы — один из мощных инструментов сисадмина с помощью которых легко анализировать сетевую обстановку. По графикам наглядно видно откуда берется трафик, в какой интерфейс уходит, где появилась необычная сетевая активнойсть, где наоборот пропал трафик.
Для того, что бы построить систему графиков, нужно начать с установки snmp. Я писал в статье MRTG, провалы в графиках о проблеме переполнения счетчиков на гигабитных интерфейсах. Решение приведенное в той статье не совсем корректно.
Правильное решение — использовать SNMPv2 и 64bit счетчики. Для этого нужно специально собрать net-snmp(bsnmp мне не удалось заставить работать с 64bit счетчиками).
Так вот для того, что бы включить 64bit счетчики нужно собирать так:
cd /usr/ports/net-mgmt/net-snmp make install clean |
А в диалоге настройке сборки выбираем такие опции:
┌────────────────────────────────────────────────────────────────────┐ │ Options for net-snmp 5.4.2.1_6 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] IPV6 Build with IPv6 support │ │ │ │ [X] MFD_REWRITES Build with 64-bit Interface Counters │ │ │ │ [X] PERL Install additional perl modules │ │ │ │ [X] PERL_EMBEDDED Build embedded perl │ │ │ │ [ ] TKMIB Install graphical MIB browser │ │ │ │ [X] DUMMY Enable dummy values as placeholders │ │ │ │ [ ] DMALLOC Enable dmalloc debug memory allocator │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘ |
MFD_REWRITES — это именно та опция которая включает 64 bit счетчики.
После того, как сборка окончится, можно приступать к настройке.
Конфигурационный файл snmpd находится в директории /usr/local/share/snmp/, называется он snmpd.conf.
Содержимое его такое:
syslocation home syscontact noc@hilik.org.ua rocommunity netstat 192.168.0.0/24 rocommunity netstat 127.0.0.0/8 |
Тут мы указываем syslocation — местоположение оборудование. Контакт ответственного лица — syscontact.
Комьюнити только для чтения для SNMPv1 и SNMPv2. У меня в конфиге оно указано 2 раза для того, что бы можно было снимать показания с локалхоста(127.0.0.0/8) и что бы можно было снимать удаленно с внутренней сети(192.168.0.0/24).
Теперь разрешим запуск:
echo 'snmpd_enable="YES"' >> /etc/rc.conf |
и запустим:
/usr/local/etc/rc.d/snmpd start |
Теперь можно проверить с помощью утилиты snmpwalk работает ли у нас snmp и главное проверим наличие Counter64:
snmpwalk -Os -v2c -c netstat localhost |grep Counter64 |
Если все настроено нормально, вы должны увидеть примерно такое:
hrSWRunParameters.26108 = STRING: "Counter64" ifHCInOctets.1 = Counter64: 0 ifHCInOctets.2 = Counter64: 104418691 ifHCInOctets.3 = Counter64: 487901 ifHCInOctets.4 = Counter64: 0 ifHCInUcastPkts.1 = Counter64: 0 ifHCInUcastPkts.2 = Counter64: 22917026 ifHCInUcastPkts.3 = Counter64: 6473 ifHCInUcastPkts.4 = Counter64: 0 |
Теперь можно переходить к установке и настройке MRTG.
cd /usr/ports/net-mgmt/mrtg/ make install clean |
После сборки создадим конфигурационный файл с помощью cfgmaker.
cfgmaker я запускаю так:
/usr/local/bin/cfgmaker --global "Options[_]: growright,bits" --snmp-options=:::::2 netstat@127.0.0.1 > mrtg.cfg |
В итоге выполнения команды у нас получится конфигурационный файл mrtg.cfg. Для дальнейшего использования его требуется немного подправить.
Находим строку:
# for UNIX # WorkDir: /home/http/mrtg |
И в переменную WorkDir вписываем путь к директории вебсервера, в которой вы будете отображать графики. К примеру так:
# for UNIX WorkDir: /usr/local/www/mrtg |
Еще рекомендую пройти по конфигу и вписать вручную описания интерфейсов в строки Title и PageTop.
И теперь сгенерировать index.html с помощью утилиты indexmaker.
Я не люблю смотреть графики расположенные в 2 ряда, поэтому indexmaker запускаю так:
indexmaker --columns=1 mrtg.cfg > /usr/local/www/mrtg/index.cfg |
Теперь осталось сделать так, что бы графики обновлялись. Есть 2 пути. Запустить mrtg демоном или через cron. Я всегда ставлю его на крон. 1 раз в 5 минут.
*/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg |
На этом настройка закончена.