Насчет идеи - ну легковеснее чем вот так, я лично не придумал:
А) локальный интерфейс, по которому надо считать траффик:
1) скриптик:
#!/bin/sh
myinterface='тут имя нужного интерфейса'
mylog='тут путь к логу'
# пишем в лог число принятых\отправленных через интерфейс байт
echo `date +%Y/%m/%d/-%H:%M:%S`' '\
`netstat -I ${myinterface} -b \
| grep 'Link' | tr -s ' ' | cut -f 7,10 -d ' '` \
>> ${mylog}
2) шедулишь в крон раз в минуту
3) имеешь поминутную статистику пробежавших через интерфейс байтов (с нарастанием)
Б) Удаленный SNMP-aware интерфейс:
1) ставишь себе netsnmp
2) читаешь такую же статистику через snmpbulkget (OIDs ifInOctets & ifOutOctets из стандартного IF-MIB в комплекте netsnmp) или snmpnetstat простейшим скриптиком из того же крона и с той же частотой. На ходу сочинять скриптец облом, уж не взыщи, но чет типа вот такого (это работает с киской):
...
# Сбор SNMP-статистики интерфейсов
# Получим кол-во интерфейсов
mymaxint=`${SNMPBINDIR}/snmpbulkget \
-c ${mycommunity} -v${mysnmpver} -Cr1 ${myrouter} \
ifNumber | cut -f 4 -d ':' | tr -d ' ' | tr -d "\n"`
# получим имена интерфейсов
${SNMPBINDIR}/snmpbulkget \
-c ${mycommunity} -v${mysnmpver} -Cr${mymaxint} ${myrouter} \
ifDescr | cut -f 4 -d ':' | tr -d ' ' > ${BASE}/data/${mypid}.1
# получим кол-во принятых байтов
${SNMPBINDIR}/snmpbulkget \
-c ${mycommunity} -v${mysnmpver} -Cr${mymaxint} ${myrouter} \
ifInOctets | cut -f 4 -d ':' | tr -d ' ' > ${BASE}/data/${mypid}.2
# получим кол-во переданных байтов
${SNMPBINDIR}/snmpbulkget \
-c ${mycommunity} -v${mysnmpver} -Cr${mymaxint} ${myrouter} \
ifOutOctets | cut -f 4 -d ':' | tr -d ' ' > ${BASE}/data/${mypid}.3
# получим текущий статус интерфейсов
${SNMPBINDIR}/snmpbulkget \
-c ${mycommunity} -v${mysnmpver} -Cr${mymaxint} ${myrouter} \
ifOperStatus | cut -f 4 -d ':' | cut -f 1 -d '(' | tr -d ' ' \
> ${BASE}/data/${mypid}.4
# построим файл данных
paste -d ' ' \
${BASE}/data/${mypid}.1 \
${BASE}/data/${mypid}.2 \
${BASE}/data/${mypid}.3 \
${BASE}/data/${mypid}.4 > ${BASE}/data/mydata.tmp.${mypid}
...
и далее попарсить файл на предмет нужного имени интерфейса и т.д.
3) имеешь аналогичную поминутную статистику пробежавших через интерфейс байтов (с нарастанием)
Для обоих вариантов:
4) парсишь лог чем, когда и как тебе удобно
5) если хоцца ГУИ, рисуешь картинку ну хоть с помощью fly и подсовываешь апачу.
Весит - копейки, также грузит систему. И сам себе констрюктор ;-)