Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Программа абсолютно копеечного размера (15кб), но самый главный плюс оказался не в этом - если у Вы удосужились прикрутить русский язык к консоли, то сможете лицезреть ман по этой программе на русском :) Собственно по этой причине не буду расписывать ключи, и прочее.
Работает через IPFW - пришлось пересобрать ядро и поднять файрволл. Извращаться особо не стал, забил совсем немного правил - машина с одним интерфейсом, смотрящим в локалку:
/etc/rc.firewall
|
Учтите, что правила надо добавлять в самом верху файрволла до остальных (сразу после -f flush). Также добавляем следующие строки в /etc/rc.conf (для двух интерфейсов - lo0 и sk0)
|
После чего запускаем ipacctd:
|
и перезагружаем правила файрволла:
|
Всё. Траффик считается. Осталось привенуть скрипт, который, будет всё это складывать в БД. Я чуть-чуть модифицировал свой скрипт, написанный для trafd:
|
Доработки минимальны - изменилась команда сохранения траффика, и одна колонка сменилась - вместо `all_bytes` стало `paketov`... После чего пихаем скрипт в планировщик - я всунул его на запуск раз в минуту (все звёздочки, кроме команды)...
P.S. По прошествии нескольких дней обратил внимание, что в моменты пиковой загрузки (когда всех припёрло лезть в инет) скрипт работает долго - 20-30 секунд на нененагруженной машине... Пару раз, когда машина была загруженна, даже не успевал отработать. Причина нашлась быстро - сильно возросло число строк в логах - trafd все порты больше 10000 обзывал client а ipacctd честно их писал... Подумавши, настругал такой скрипт на перл:
|
Он прекрасно заменяет тот же шелловый скрипт. Тока работает раз в 10-15 быстрей :))) Также есть и нововведения (колонка unix_time и unic_id) - понадобились для работы. Если заменять существующий shell скрипт колонку unix_time надо добавить, а если с нуля - то сам всё создаст. Также убрана временная таблица. Тут она не нужна.
P.S. Ненавижу перл.
|
nikolay, 2006-06-09 в 9:51:12
пустые строку появляются после каждого запуска скрипта
покрайней мере который написан на sh
Alextriam, 2006-07-06 в 18:37:47
Я с фрей недавно, в портах есть netams, он и считает неплохо и статистику генерит в html.
red, 2006-08-31 в 9:20:52
месяц в виде вдузначного числа
=====================================
#!/usr/bin/perl
use strict;
use vars qw( $year $month );
($year, $month) = (localtime)[5,4];
$year += 1900;
$month = ++$month < 10 ? "0$month" : $month;
print "$year\t$month\n";
=====================================
red, 2006-08-31 в 9:25:31
фигню сморозил...
гораздо правильней так:
$month = sprintf('%02d', ++$month);
dik), 2006-09-01 в 17:38:11
Есть флаг в ipacctd: -c Он меняет местами кол-во пакетов байтов.
Efendy, 2006-10-18 в 6:54:34
substr('0'.(1+localtime->mon),-2,2)
WarWar, 2006-10-25 в 21:05:03
Можно еще посмотреть в сторону ipcad (есть в портах)
Из приятного: умеет суммировать нужные порты (меньше инфы вливается в временную таблицу да и быстрей это происходит естественно), и удаленно можно статистику снимать.
Ghost, 2006-12-05 в 19:44:23
В последнеи скрипте
# очищаем файло
system("cat /dev/null > $otkuda");
# создаём таблицу, где будет храниться траффик
последний комментарий случайно затесался, или должна еще создаваться таблица?
lissyara, 2006-12-06 в 8:45:03
наверно - случаяно :)))
Закомменчено же :)))
io, 2007-01-11 в 21:20:29
а вею морда с trafd сюда подходит?
Aldaron, 2007-01-12 в 11:06:13
Вопрос такой - а если это шлюз с двумя интерфейсами, NAT дивертится двумя правилами в ipfw, то тогда каким образом должна выглядеть свзка дивертов для ipacctd и для NAT соответсвенно?Сейчас стоит trafd, делал по статье, врет ужасно...
fabi, 2007-01-15 в 18:38:21
Aldaron, не новость а вот как это лечить, если это возможно???
Да и вообсче хотелось бы узнать у знающих людей о честности считалок(trafd,ipacctd и др).
VladB, 2007-01-18 в 19:52:11
Привет, стоит сервер с двумя интерфейсами [в сеть и инет] на нем ipacctd + mysql (обновляется каждые 10мин.) . Сверил статистику за последние пол года: разница в 50Мб (ipacctd показал больше провайдера). Так что с точностью подсчета, по моему, проблем нет. Единственное неудобство это большой объем БД и длительное время математического подсчета трафика. На подсчет месячного трафика (~3-4Gb) уходит около ~50Mb., ~500,000 записей и ~5-10 сек. для подсчета.
P.S. cat Thanks >> Lissyara.su ;)
mick, 2007-07-12 в 21:02:47
eсть такая фича для очистки файла (вместо cat /dev/null > filename.txt)
: > filename.txt
Zont, 2007-08-25 в 19:32:53
не надо пользовать ipacctd, он теряет пакеты как и trafd. юзайте ng_ipacct!
Maikeru, 2007-10-16 в 8:53:09
я так понимаю ограничения в количестве интерфейсов для повсчета и системные требования ipacctd и trafd одинаковы?
valerakr.net, 2007-12-11 в 23:24:11
Вопрос:
умеет ли он считать на нодах mpd?
Dushes, 2008-01-02 в 16:17:34
ага ещё бы хоть кто нить внятно написал как поднять этот ng_ipacct ...
Dushes, 2008-01-02 в 19:00:50
насчёт даты я думаю правельнее будет так
my $datetime = localtime (time);
$hour = $datetime->hour();
$min = $datetime->min();
$sec = $datetime->sec();
$mday = $datetime->mday();
$mon = $datetime->mon() + 1;
$year = $datetime->year() + 1900;
Luck, 2008-01-08 в 14:22:39
Внятно о ng_ipacct
http://lcl.sytes.net:3880/doc/netgraph.html
Inri, 2008-12-28 в 20:48:00
while read stroka
do
from_IP=`echo "${stroka}" | awk '{print $1}'`
port_from_IP=`echo "${stroka}" | awk '{print $2}'`
to_IP=`echo "${stroka}" | awk '{print $3}'`
port_to_IP=`echo "${stroka}" | awk '{print $4}'`
protocol=`echo "${stroka}" | awk '{print $5}'`
bytes=`echo "${stroka}" | awk '{print $6}'`
paketov=`echo "${stroka}" | awk '{print $7}'`
etc...
=
cat /var/log/traffic_${iface}.log | while read from_IP port_from_IP to_IP port_to_IP protocol bytes paketov
lissyara, 2008-12-28 в 21:14:28
Если столбцов окажется больше - что будет в последней переменной?
adre, 2009-06-14 в 10:17:11
Поменял что ли переменный ipacctd в rc.conf? раньше по другому было вроде...
max, 2010-02-16 в 9:21:53
Во первых, Спасибо to lissyara. Много что позаимствовано, и много, что подтолкнуло в нужную сторону благодаря данному ресурсу.
Второе. Возможно не я первый но...
Большая часть кода (perl или sh) по большому счету используется для построчного добавления данных в БД и главное добавления даты и времени в строки полученные от ipacctd. Долго. Ресурсоемко.
Для того чтоб данные запихивались в БД совсем быстро можно применить оператор SQL «LOAD DATA INFILE»:
LOAD DATA INFILE '/путь/к/файлу' INTO TABLE 'имя_таблицы' (souceip,sport,destip,dport,proto,bytes,pkts) SET date=DATE(NOW()), time=TIME(NOW()).
Поля 'uniq_id' и 'unix_time' не используются, но и это не проблема.
К примеру пихаем 1`100`000 строк в БД.
Скрипт на perl (по принципу описанному в статье) отработал за 9 минут.
sh скрипт, а собственно не важно на чем написан, с применением LOAD DATA INFILE отрабатывает за 6 секунд!
Все это довольно несложно реализуется.
Еще раз, сенькю Лиссяре.
Pattern®, 2011-09-19 в 12:11:53
Прикольная програмулина, хорошая замена trafd.
Lissyara, как всегда - отличная работа!
Единственный минус ipacctd в том, что он не пишет в лог время чтения пакета. А время, которое вбивается скриптом в БД, является текущим по отработке самого скрипта. И при средней нагрузке за одну минуту набивается 2к-3к записей, но при методе написанным max'ом, все эти записи отличаются 2-3 секунды. Пока с этим не сталкиваешься, не обращаешь внимания. Чисто как подсчет общего трафика - ipacctd самодостаточен. Но если из всех данных нужно выбрать какой то конкретный за определенный период, получаешь свалку логов.
freesky, 2014-02-04 в 2:41:18
Спасибо Лису большое за статью!
Хочу присоединиться к комментарию max и добавить свои 5 копеек. Не очень удобно то, что в БД записи, содержащие дату/время будут содержать их сдвинутыми на то число секунд (минимум, а то и более), чем указано в sleep. Поэтому предлагаю воспользоваться MySQL'ными функциями для выгребания кругленькой даты из текущей. Вот мой кусок перлового кода, пихающий всю эту радость из лога в БД:
$dbh->do("LOAD DATA INFILE '/var/log/traffic_$iface.log' INTO TABLE traffic_tmp (ip_from, s_port, ip_to, d_port, proto, bytes, packets) SET datetime = STR_TO_DATE(CONCAT(DATE(NOW()), ' ', TIME(CONCAT(HOUR(TIME(NOW())), ':00:00'))), '%Y-%m-%d %H:%i:%s')");
Обратите внимание, здесь нет полей date и time по отдельности - я предпочитаю использовать совмещённое datetime для дальнейшего облегчения поиска по БД при построении отчёта
nikola93, 2015-03-04 в 13:39:22
У кого ошибка Can't locate Mysql.pm in @INC
выложил на форум исправление
http://forum.lissyara.su/viewtopic.php?f=3&t=361&sid=9fd2a0d1eea4ab83b5026ba72e17184a&start=75
nikola93, 2015-03-04 в 13:40:24
Пост nikola93 » 2015-03-04 14:35:52
nikola93, 2015-03-04 в 13:40:26
Пост nikola93 » 2015-03-04 14:35:52
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
вверх
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
комплект закиси азота купить
Комментарии пользователей [29 шт.]