[lang_en]How To Get Data For Mrtg Without Running SNMP Daemon?[/lang_en][lang_ru]Как Получить Данные Для Mrtg Не Запуская SNMP-Сервер?[/lang_ru]
5 Apr2006

[lang_en]

Plotting traffic graphs is one of the most popular UNIX admin tasks. 😉 Mrtg is a great tool and it is widely used for plotting traffic graphs. It can be easily set up to plot statistics for any SNMP-enabled device (including Linux servers running snmpd). But sometimes we can not setup snmp daemon in Linux server because of small amount of memory or because of some another reasons. How we can plot our favourite graphs in such cases?

[/lang_en]

[lang_ru]

Рисование графиков загрузки сетевых интерфейсов – это, наверное, одно из самых популярных занятий UNIX-администраторов. 😉 Отличным инфтрументом для этого является утилита mrtg. Она может быть без проблем настроена на создание графиков загрузки интерфейсов любого поддерживающего SNMP устройства (в том числе и Linux-сервера с запущенным на нем snmpd). Но, иногда, мы не можем запустить snmp-демон на Linux сервере из-за маленького обхема оперативной памяти или еще по каким-то объективным причинам. Как же быть в такой ситуации, если графики все-таки нужны, но нет SNMP?

[/lang_ru]

[lang_en]

When I have installed my home server to connect my home network to Internet, there was too small amount of RAM and spending free memory to run snmpd was not possible. As a solution I have created small Perl script, that can get information from /proc/net/dev and pass it to mrtg script.

If you want to try this script, you need to make following simple steps on your server:

  1. Download my script, rename it to get_if_stats.pl and put it to /usr/local/bin directory on your server.
  2. Make it executable:

    # chmod +x usr/local/bin/get_if_stats.pl
    

  3. Add new entry to mrtg.conf (example is for eth0 interface):

    Title[new_graph]: World channel (eth0)
    PageTop[new_graph]: <h1>Some new mrtg graph (eth0)</h1>
    Target[new_graph]: `/usr/local/bin/get_if_stats.pl eth0`
    MaxBytes[new_graph]: 100000000
    

That is all! Now you can plot graphs for any interface without running huge snmp daemons in your server memory

[/lang_en]

[lang_ru]

Когда я устанавливал свой домашний сервер для подключения домашней сети к Internet, на машине было очень мало оперативной памяти и тратить ее на запуск snmpd было просто не допустмимо. В качестве решения в этой ситуации я написал маленький Perl-скрипт, который получает информацию из /proc/net/dev и передает ее скрипту mrtg.

Если у Вас есть желание попробовать этот скрипт в действии, Вам нужно выполнить всего несколько простых шагов на Вашем сервере:

  1. Скачайте мой скрипт, переименуйте его в get_if_stats.pl и положите в каталог /usr/local/bin на Вашем сервере.
  2. Сделайте его исполняемым:

    # chmod +x usr/local/bin/get_if_stats.pl
    

  3. Добавьте новую запись в mrtg.conf (приведенный пример предназначен для интерфейса eth0):

    Title[new_graph]: World channel (eth0)
    PageTop[new_graph]: <h1>Some new mrtg graph (eth0)</h1>
    Target[new_graph]: `/usr/local/bin/get_if_stats.pl eth0`
    MaxBytes[new_graph]: 100000000
    

Вот и все! Теперь Вы можете создавать различные графики для любых сетевых интерфейсов не держа постоянно в памяти сервера огромного демона snmpd.

[/lang_ru]