Связка snmpd + mrtg

Давненько я хотел разобраться как мониторить сетевые интерфейсы локальной машины через snmp и рисовать графики через mrtg. Еще больше мне хотелось через тот же snmp мониторить загрузку CPU и памяти.

Вчера собственно я с этим и разобрался, о чем и хочу Вам поведать. :)

Ставим необходимый софт:

$ sudo apt-get install snmpd mrtg

После чего правим файл /etc/snmp/snmpd.conf всего лишь в одном месте. Было:

com2sec paranoid  default         public
#com2sec readonly  default         public
#com2sec readwrite default         private

Стало:

#com2sec paranoid  default         public
com2sec readonly  default         public
#com2sec readwrite default         private

Теперь перезапускаем snmpd:

$ sudo /etc/init.d/snmpd restart

SNMPd готов к использованию. Остается отрисовка графиков – mrtg. Правим файл /etc/mrtg.cfg, приводя его к примерно следующему виду:

# Global configuration

HtmlDir: /path/to/htdocs
ImageDir: /path/to/htdocs/images
LogDir: /path/to/htdocs/logs
EnableIPv6: no

###########################
# Сетевой интерфейс маршрутизатора

Title[eth0]: Output interface
PNGTitle[eth0]: Interface to Internet
MaxBytes[eth0]: 64000
AbsMax[eth0]: 128000
Options[eth0]: growright, bits
SetEnv[eth0]: MRTG_INT_IP=»192.168.0.1″ MRTG_INT_DESCR=»eth0″
Target[eth0]: 2:public@localhost:
PageTop[eth0]: <h1> Output interface</h1>
YLegend[eth0]: bits/s
ShortLegend[eth0]: b/s
Legend1[eth0]: Incoming Traffic
Legend2[eth0]: Outgoing Traffic
Legend3[eth0]: Maximum Incoming Traffic
Legend4[eth0]: Maximum Outgoing Traffic
LegendI[eth0]: &nbsp;In:
LegendO[eth0]: &nbsp;Out:
WithPeak[eth0]: ymwd

###########################
# CPU

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
RouterUptime[cpu]: public@127.0.0.1
MaxBytes[cpu]: 100
Title[cpu]: CPU Load
PageTop[cpu]: <H1>Active CPU Load %</H1>
Unscaled[cpu]: ymwd
ShortLegend[cpu]: %
YLegend[cpu]: CPU Utilization
Legend1[cpu]: Active CPU in % (Load)
Legend2[cpu]:
Legend3[cpu]:
Legend4[cpu]:
LegendI[cpu]: Active
LegendO[cpu]:
Options[cpu]: growright,nopercent

###########################
# Memory

LoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost
PageTop[mem]: <H1>Free Memory</H1>
Options[mem]: nopercent,growright,gauge,noinfo
Title[mem]: Free Memory
MaxBytes[mem]: 1000000
kMG[mem]: k,M,G,T,P,X
YLegend[mem]: bytes
ShortLegend[mem]: bytes
LegendI[mem]: Free Memory:
LegendO[mem]:
Legend1[mem]: Free memory, not including swap, in bytes

Итого мы имеем отрисовку графиков сетевого интерфейса, загрузку процессора, использования памяти. Остается только нарисовать общий файл со всеми графиками:

$ sudo indexmaker /etc/mrtg.cfg > /path/to/htdocs/index.html

Собственно синтаксис файла конфигурации прост до безобразия. Кому интересно разобраться – милости прошу читать.

Поделиться этой заметкой с друзьями:

Добавь меня:

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

30 комментариев(я)

  • 16.02.2009 13:08, Vovanys сказал:

    У меня почему то из коробки никак проц не хотел заводится никаким способом. Потом написал сам. Выкладываю вдруг пригодится )
    cat /etc/mrtg.cfg

    LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
    Target[cpu]: `/etc/mrtg/cpu`
    MaxBytes[cpu]: 100
    Title[cpu]: CPU Load
    PageTop[cpu]: Active CPU Load %
    Unscaled[cpu]: ymwd
    ShortLegend[cpu]: %
    YLegend[cpu]: CPU Utilization
    Legend1[cpu]: Active CPU in % (Load)
    Legend2[cpu]:
    Legend3[cpu]:
    Legend4[cpu]:
    LegendI[cpu]: Active
    LegendO[cpu]:
    Options[cpu]: growright,nopercent

    cat /etc/mrtg/cpu

    #!/bin/bash
    user=`snmpwalk -v1 -c public localhost ssCpuRawUser.0 |awk {'print $4'}`
    system=`snmpwalk -v1 -c public localhost ssCpuRawSystem |awk {'print $4'}`
    nice1=`snmpwalk -v1 -c public localhost ssCpuRawNice |awk {'print $4'}`

    sum=`echo $user + $system + $nice1 | bc -ql `
    echo $sum

    • 23.02.2009 22:02, Arhnt сказал:

      2 Endo – проблема в том что новые дистрибутивы не парсят v2 MIBы и единственное решение, которая я нашел – это замена имен на OIDы. Работает, хоть немного и некрасиво – пример

      • 24.02.2009 09:59, Arhnt сказал:

        @Arhnt:
        Правка комментария выше, не отобразился пример:
        Target[cpu]:.1.3.6.1.4.1.2021.11.50.0&.1.3.6.1.4.1.2021.11.50.0:public@localhost+.1.3.6.1.4.1.2021.11.52.0&.1.3.6.1.4.1.2021.11.52.0:public@localhost+.1.3.6.1.4.1.2021.11.51.0&.1.3.6.1.4.1.2021.11.51.0:public@localhost

        Наиболее употребительные OID:

        * ssCpuRawUser .1.3.6.1.4.1.2021.11.50
        * ssCpuRawSystem .1.3.6.1.4.1.2021.11.52
        * ssCpuRawNice .1.3.6.1.4.1.2021.11.51
        * memAvailReal 1.3.6.1.4.1.2021.4.6
        * memTotalReal 1.3.6.1.4.1.2021.4.5
        * dskPercent .1.3.6.1.4.1.2021.9.1.9

        То же самое и для графика утилизации памяти
        http://www.mcm.net.ua/wiki/tiki-index.php?page=MRTG

        • 04.06.2009 02:49, TpaBa сказал:

          Так все же как разобрались с пустыми графиками? В чем проблема?

          • 11.09.2009 17:54, Александр сказал:

            Добрый день!

            Я пытаюсь русифицировать html странички статистики mrtg, чтобы они были видны в кодировке UTF8. В KOI-8R и windows 1251 указываем язык russian либо russian 1251 – и никаких проблем, с UTF8 не получается….. Подскажите пожалуйста!

            И еще вопросик: как рисовать графики с отрицательные величинами? у нас одна кошка запитана от -24 В, датчик напряжения есть и snmp статистику вполне можно снимать………

            С уважением……

            • 05.11.2009 18:57, Pavel сказал:

              Александр, вы решили проблемму отрицательных величин? Бьюсь с аналогичным. SNMPGET выдает нормально с устройства отрицательное значение, а в лог mrtgы пишется 0

              • 21.01.2010 01:46, LXj сказал:

                Target[eth0]: 2:public@localhost:

                – так и не понял, откуда тут 2 :)

                YLegend[eth0]: bits/s

                – а тут случаем не bytes должны быть?

                Ну и самое главное ты забыл добавить — что всё это нужно повесить на cron

              • 21.01.2010 13:14, LXj сказал:

                Нет, похоже, всё-таки bits :)

                • [...] это сделать – можно почитать перейдя по этой ссылке http://silverghost.org.ua/2008/05/04/svyazka-snmpd-mrtg/ (SNMPв этом случае не [...]

                  • 20 старых комментариев не отображается. Нажмите, чтобы отобразить все.
                  (Обязательно)
                  (Обязательно, не публикуется)

                  Hастоящий админ знает только об одном типе архивов - tgz.