Апр 15 2010

Строим графики работы с помощью 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

На этом настройка закончена.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть