Здравствуйте!ОС FreeBSD 7.1-RELEASE
Озадачили вопросом - нужно считать траффик на интерфейсе сервера.
Кол-во ОЗУ там ограничено, поэтому очень не хочется, чтобы SNMPd постоянно в памяти висел.Кто-нибудь сталкивался с подобной проблемой? Если да - как решалось?
Подумывал я брать данные скриптом из netstat -ib, но думаю, что погрешность "измерений" будет очень большая. Существуют ли консольные программки, которые просто бы выводили данные значения? (как тот нетстат, к примеру - кол-во бит К/ОТ)?
>[оверквотинг удален]
>
> Озадачили вопросом - нужно считать траффик на интерфейсе сервера.
>Кол-во ОЗУ там ограничено, поэтому очень не хочется, чтобы SNMPd постоянно в
>памяти висел.
>
>Кто-нибудь сталкивался с подобной проблемой? Если да - как решалось?
> Подумывал я брать данные скриптом из netstat -ib, но думаю, что
>погрешность "измерений" будет очень большая. Существуют ли консольные программки, которые просто
>бы выводили данные значения? (как тот нетстат, к примеру - кол-во
>бит К/ОТ)?ipa stat
>>[оверквотинг удален]
>>
>ipa statЧестно говоря, в портах нашел только ipa (но, думаю, это не совсем то, что мне нужно).
>>>[оверквотинг удален]
>>>
>>ipa stat
>
>Честно говоря, в портах нашел только ipa (но, думаю, это не совсем
>то, что мне нужно).можно снимать статистику прямо с файрвола... куда уж точнее :)
ipfw show
>>>>[оверквотинг удален]
>>>>
>>>ipa stat
>>
>>Честно говоря, в портах нашел только ipa (но, думаю, это не совсем
>>то, что мне нужно).
>
>можно снимать статистику прямо с файрвола... куда уж точнее :)
>ipfw showдля особо одаренных
ipa как раз и снимает корректно трафик с ipfw
нагрузка на проц - ПРОТО НИКАКОЙ НЕТ!
>[оверквотинг удален]
>>>
>>>Честно говоря, в портах нашел только ipa (но, думаю, это не совсем
>>>то, что мне нужно).
>>
>>можно снимать статистику прямо с файрвола... куда уж точнее :)
>>ipfw show
>
>для особо одаренных
>ipa как раз и снимает корректно трафик с ipfw
>нагрузка на проц - ПРОТО НИКАКОЙ НЕТ!особо одаренным непонятен формат команды ipfw show ?
>>[оверквотинг удален]
>
>особо одаренным непонятен формат команды ipfw show ?Это вы друг с другом спорите, типа что лучше? Или оба пытаетесь меня оскорбить?
Я по поводу ipfw ничего и не говорил, в принципе.
Спасибо за подсказку, меня такой вариант устраивает :)
>[оверквотинг удален]
>>>>то, что мне нужно).
>>>
>>>можно снимать статистику прямо с файрвола... куда уж точнее :)
>>>ipfw show
>>
>>для особо одаренных
>>ipa как раз и снимает корректно трафик с ipfw
>>нагрузка на проц - ПРОТО НИКАКОЙ НЕТ!
>
>особо одаренным непонятен формат команды ipfw show ?особо одаренные будут искать нужные в сотни правил ipfw?
особо одаренные в уме пересчитывают счетчики с учетом их сброса?
особо одаренные не учитывают ручной сброс счетчиков и сброс при перезагрузках?
особо одаренные не умеют искать в портах?
на надо быть особо одаренным, особенно когда все за тебя уже сделано.для особо одаренных
usr/ports/net/ipa_ipfwIPA_IPFW -- IPA accounting module for FreeBSD IP Firewall
Main features:
- The module is designed for traffic accounting from FreeBSD IP
Firewall (including IPFW2) rules byte counters;
- The module understands IP Firewall rules byte counters overflow;
- It is possible to summarize and subtract statistics from IP Firewall
rules byte counters;
- It is possible to distinguish IP Firewall rules with the same
numbers;
- IP Firewall rules can be dynamically added to and deleted from
>на надо быть особо одаренным, особенно когда все за тебя уже сделано.Чтобы хамить и гнуть пальцы- достаточно быть просто бездарным...
Но кажется человек который спрашивал совета уже удовлетворился решением...так что вы выступаете тут в пустоту...
>>на надо быть особо одаренным, особенно когда все за тебя уже сделано.
>
>Чтобы хамить и гнуть пальцы- достаточно быть просто бездарным...простите что задел вашу ранимую душу ... бездарный вы наш ...
>Но кажется человек который спрашивал совета уже удовлетворился решением...так что вы выступаете
>тут в пустоту...готов поспорить - данный форум не только для помощи конкретным людям - также есть целая куча людей которая умеет пользоваться поиском и найдет решение данной проблемы не создавая новый топ
да и я с гуглом его частенькр индексируют )
ЗЫ мохз он чобы дууумать ...
>>>на надо быть особо одаренным, особенно когда все за тебя уже сделано.
>>
>>Чтобы хамить и гнуть пальцы- достаточно быть просто бездарным...
>
>простите что задел вашу ранимую душу ... бездарный вы наш ...хамите и гнете пальцы вы а не я... так что... :)
>хамите и гнете пальцы вы а не я... так что... :)Да не обращайте на него внимания, он уже неоднократно тут опозорился, проявив редкостное ламерство, и при этом все продолжает хамить и нести чушь.
>>хамите и гнете пальцы вы а не я... так что... :)
>
>Да не обращайте на него внимания, он уже неоднократно тут опозорился, проявив
>редкостное ламерство, и при этом все продолжает хамить и нести чушь.
>ваше ... я неадекват ...
ананим всегда прав!
>[оверквотинг удален]
>
> Озадачили вопросом - нужно считать траффик на интерфейсе сервера.
>Кол-во ОЗУ там ограничено, поэтому очень не хочется, чтобы SNMPd постоянно в
>памяти висел.
>
>Кто-нибудь сталкивался с подобной проблемой? Если да - как решалось?
> Подумывал я брать данные скриптом из netstat -ib, но думаю, что
>погрешность "измерений" будет очень большая. Существуют ли консольные программки, которые просто
>бы выводили данные значения? (как тот нетстат, к примеру - кол-во
>бит К/ОТ)?Здаров.
Скажу, что сам очень долго искал метод подсчета траффика, который был бы точным и с мин. потреблением системных ресурсов.
Остановился на следующем: ng_ntflow + flow-tools.
Для этого в ядро нада вкомпилить потдержку netgraph.
Реализация:
1. Снимаем флоу-поток с интерфейса.#!/bin/sh
# PROVIDE: ngnetflow
# REQUIRE: DAEMON
# KEYWORD: shutdown. /etc/rc.subr
name="ngnetflow"
rcvar=`set_rcvar`
command="/usr/sbin/ngctl"
load_rc_config $name
: ${ngnetflow_enable="NO"}
: ${ngnetflow_iface=""}
: ${ngnetflow_dst=""}start_cmd="${name}_start"
stop_cmd="${name}_stop"ngnetflow_start() {
/usr/sbin/ngctl -f- <<-SEQ
mkpeer ${ngnetflow_iface}: netflow lower iface0
name ${ngnetflow_iface}:lower netflow
connect netflow: ${ngnetflow_iface}: iface1 upper
connect netflow: netflow: out0 out1
mkpeer netflow: ksocket export inet/dgram/udp
name netflow:export ksocket
msg ksocket: connect inet/${ngnetflow_dst}
SEQ
}ngnetflow_stop() {
/usr/sbin/ngctl -f- <<-SEQ
shutdown netflow:
SEQ
}run_rc_command "$1"
естественно, прописываем в /etc/rc.conf параметры
ngnetflow_enable=""
ngnetflow_iface=""
ngnetflow_dst=""думаю, тут все понятно.
2. С помощью flow-tools захватываем и обрабатываем данные.
#!/bin/sh
RPT_Y=`/bin/date -v-1d +%Y`
RPT_M=`/bin/date -v-1d +%m`
RPT_D=`/bin/date -v-1d +%d`RPT_DIR="/usr/local/www/data"
RPT_DATE=${RPT_Y}-${RPT_M}-${RPT_D}
RPT_NAME=${RPT_DIR}/${RPT_DATE}.html
FLOW_DIR="/var/db/flows"
INDEX="/usr/local/www/data/index.html"## WEB index.html
#echo -e "<HTML>\n<HEAD>\n<TITLE> Traffic statistics for LAN #Users</TITLE>\n</HEAD>\n<BODY>\n \
#<h2 align="center"><font color="blue">Traffic statistics for LAN Users</font></h2>" > #$INDEX
#echo -e "</BODY>\n</HTML>\n" >> ${INDEX}
echo -e "<p align="left"><a href="${RPT_DATE}.html"> Pere-IP statistics for LAN during \
<strong>${RPT_DATE}</strong></a></p>" >> ${INDEX}Поясню вышенаписанное. Сначала надо раскоментировать первые 5 строк, что бы скрипт сгенерировал Индекс-страничку для страницы отчетов. Перед вторым запуском их надо закоментирвать, и тогда будут добавляться только ссылки на страницы с отчетами за определенный день.
## DOWNLOADED
echo -e "<HTML>\n<HEAD>\n<TITLE>${RPT_DATE}</TITLE>\n</HEAD>\n<BODY>\n<H2>${RPT_DATE} DOWNLOADED</H2>\n" > ${RPT_NAME}
/usr/local/bin/flow-cat ${FLOW_DIR}/${RPT_Y}/${RPT_Y}-${RPT_M}/${RPT_Y}-${RPT_M}-${RPT_D} \
|/usr/local/bin/flow-filter -f /usr/local/etc/flow-tools/flow.acl -Sinternet -Dlocalnet \
|/usr/local/bin/flow-report -s /usr/local/etc/flow-tools/report_down.conf -S localnet \
|/usr/local/bin/flow-rptfmt -f html -H -s -octets >> ${RPT_NAME}echo -e "</BODY>\n" >> ${RPT_NAME}
### UPLOADED
echo -e "<BODY>\n<H2>${RPT_DATE} UPLOADED</H2>\n" >> ${RPT_NAME}
/usr/local/bin/flow-cat ${FLOW_DIR}/${RPT_Y}/${RPT_Y}-${RPT_M}/${RPT_Y}-${RPT_M}-${RPT_D} \
|/usr/local/bin/flow-filter -f /usr/local/etc/flow-tools/flow.acl -Slocalnet -Dinternet \
|/usr/local/bin/flow-report -s /usr/local/etc/flow-tools/report_up.conf -S localnet \
|/usr/local/bin/flow-rptfmt -f html -H -s -octets >> ${RPT_NAME}echo -e "</BODY>\n</HTML>\n" >> ${RPT_NAME}
### REMOVE OLD
RM_Y=`/bin/date -v-4d +%Y`
RM_M=`/bin/date -v-4d +%m`
RM_D=`/bin/date -v-4d +%d`rm -Rf ${FLOW_DIR}/${RM_Y}/${RM_Y}-${RM_M}/${RM_Y}-${RM_M}-${RM_D}
-----
flow.aclip access-list standard localnet permit 10.0.100.0 0.0.0.255
ip access-list standard localnet deny any
ip access-list standard internet deny 10.0.100.0 0.0.0.255
ip access-list standard internet permit any-----
report_down.confstat-report localnet
type ip-destination-address
output
format ascii
options +header,+xheader,+totals
fields -flows,-packets,-duration
stat-definition localnet
report localnet
----
report_up.confstat-report localnet
type ip-source-address
output
format ascii
options +header,+xheader,+totals
fields -flows,-packets,-duration
stat-definition localnet
report localnet
-------
3. В крон записываем, что бы генерировался отчет:
5 2 * * * root /usr/local/etc/flow-tools/stat_daily.sh4. Устанавливаем Apache, заходим на страничку и смотрим статистику.
Чего пока здесь нету? Хотелось бы выводить статистику за день не только по IP, но и суммарную по всей подсети. Но пока до этого руки не дошли, так что если кто допишет, киньте плиз.
Что бы это все реализовать мне помогли 2 статьи:
http://ylsoftware.com/news/492
http://tmp.barev.net/htmlart/unix/pres-ngnetflow.xml#1Вобщем разьяснять каждую строчку мне влом, так что если кому чего непонятно - пишите.
Забыл добавить.
В /etc/rc.conf добавляем запись на запуск flow-captureflow_capture_enable="YES"
flow_capture_localip="127.0.0.1"
flow_capture_remoteip="127.0.0.1"
flow_capture_port="2001"
flow_capture_flags="-E 1024M -n 95 -N 3 -p /var/run/flow-capture/flow-capture.pid -V 5 -w /var/db/flows -z 9"Удачи!
>[оверквотинг удален]
>В /etc/rc.conf добавляем запись на запуск flow-capture
>
>flow_capture_enable="YES"
>flow_capture_localip="127.0.0.1"
>flow_capture_remoteip="127.0.0.1"
>flow_capture_port="2001"
>flow_capture_flags="-E 1024M -n 95 -N 3 -p /var/run/flow-capture/flow-capture.pid -V 5 -w /var/db/flows
>-z 9"
>
>Удачи!гыгыгы - нетфло типа совсем не грузит проц? ))
челу надо то было счетчики снимать
>гыгыгы - нетфло типа совсем не грузит проц? ))
>челу надо то было счетчики сниматьДа ты прежде чем гыгыкать, поюзал бы такое решение на боевом серваке. У меня сервак слабенький (Селерон 2ГГц и сетевухи риалтеки 100мбит) пропускает за месяц до 3 Тбайт. И нормально все считается и сервер "не ложится" в отличии от решений типа захват пакетов на сетевухе с помощью libcap.
>
>>гыгыгы - нетфло типа совсем не грузит проц? ))
>>челу надо то было счетчики снимать
>
>Да ты прежде чем гыгыкать, поюзал бы такое решение на боевом серваке.
>У меня сервак слабенький (Селерон 2ГГц и сетевухи риалтеки 100мбит) пропускает
>за месяц до 3 Тбайт. И нормально все считается и сервер
>"не ложится" в отличии от решений типа захват пакетов на сетевухе
>с помощью libcap.ты бы прочитал внимательно для начала топ - потом предлогал
чел говорит что для него snmpd запустить уже тяжко ибо машина слабая (или вы незнаете чем принципиально отличается сбор счетчиков с snmp от netflow ?) а ты говоришь про netflow.
селка 2Ггц это далеко не слабенький сервак - у меня например шлюзы робят на пнях 200 и селках 300
машины такова класса от нетфлоу загнуться нахрен
>ты бы прочитал внимательно для начала топ - потом предлогал
>чел говорит что для него snmpd запустить уже тяжко ибо машина слабая
>(или вы незнаете чем принципиально отличается сбор счетчиков с snmp от
>netflow ?) а ты говоришь про netflow.
>селка 2Ггц это далеко не слабенький сервак - у меня например шлюзы
>робят на пнях 200 и селках 300
>машины такова класса от нетфлоу загнуться нахренПо поводу того, что то, что я предложил не совсем подходит автору поста может еще и соглашусь. Зато эта инфа может быть полезна еще кому-то.
ipacctd и к нему прикрутить скрипты от trafd. можно, к примеру, взять с сайта lisyara ру? или написать свои. если ваш целерон совсем беспощен то можно кидать логи на другую машину.
>ipacctd и к нему прикрутить скрипты от trafd. можно, к примеру, взять
>с сайта lisyara ру? или написать свои. если ваш целерон совсем
>беспощен то можно кидать логи на другую машину.угу и сесси которые этот демон хранит в памяти тоже хранить в озу другой машины?