91

Надо соответствующий запрос завести, что то подобное "поддержка разных языков WEB-интерфейса". И наверно данный функционал нужно реализовывать в версии "0.1-beta" (т.е. в текущей активной). Т.к. потом данный функционал будет сложнее прикрутить, больше кода придется перелопачивать.

92

Протестировал выполнение скрипта и нашел причину "тупления" выполнения cron скрипта - запись в базу данных иногда доходит до 2-3 сек на 100 записей ac , иногда в начале запроса очень быстро, а под конец еще медленней ac

может кто-то скинуть свои настройки сервера mySQL, а то по рецептах с инета не помогает, или ссылку на нормальную статью настройки, а то не верю что хоть и атом- но двоядренный так может тормозить ac

93

oleg_krv, у тебя с каким периодом 'cron' запускает выгрузку данных? Должно быть каждые 5 минут:

# Run trafcron.pl
*/5 * * * * /usr/libexec/trafstat/trafcron.pl 2>&1 > /dev/null

Если скрипт выгрузки данных и будет выполнятся в течении 2 - 10 сек. каждые пять минут, то это не страшно.

94

У меня работает на мускуле с коробки никаких донастроек я его не проводил. только запустил скрипт  по настройке безопасности и всё. А что за система? И когда будет идти выгрузка в базу запусти top  и посмотри что занимает проца?

Trouble  in WINDOWS reboot, trouble in UNIX be root.

95

Система :
Operating system    Ubuntu Linux 10.04
Webmin version    1.510
Time on system    Wed Aug 18 13:26:26 2010
Kernel and CPU    Linux 2.6.32-24-server on x86_64
Processor information    Intel(R) Atom(TM) CPU D510 @ 1.66GHz, 4 cores
ОЗУ    2Гб

я сейчас играюсь и запускаю ручками и прописал в скрипт счетчики и вывод времени после каждых 100 итераций цикла записи в базу

Вот часть лога
[*]
28:29 - Выгружаем дамп
28:29 - Начало обработки
28:29 - Сбросили дамп
28:29 - Получили лог файл - off
28:29 - Начало цикла записи
28:30 - 100 запись
28:30 - 200 запись
28:30 - 300 запись
28:30 - 400 запись
28:31 - 500 запись
28:31 - 600 запись
28:31 - 700 запись
28:31 - 800 запись
28:32 - 900 запись
28:32 - 1000 запись
28:32 - 1100 запись
28:33 - 1200 запись
28:33 - 1300 запись
28:34 - 1400 запись
28:35 - 1500 запись
28:35 - 1600 запись
28:36 - 1700 запись
28:37 - 1800 запись
28:37 - 1900 запись
28:38 - 2000 запись
28:38 - 2100 запись
[/*]

Часть вывода top:
[*]
Tasks: 159 total,   1 running, 158 sleeping,   0 stopped,   0 zombie
Cpu(s): 17.7%us,  8.0%sy,  0.0%ni, 73.6%id,  0.0%wa,  0.2%hi,  0.4%si,  0.0%st
Mem:   2040568k total,  1571404k used,   469164k free,   180008k buffers
Swap:  5976056k total,   268440k used,  5707616k free,   584012k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                         
10046 mysql     20   0  473m  53m 7148 S   98  2.7   2:33.13 mysqld                                                                                                                                         
19387 root      20   0 47812 7700 3092 S    3  0.4   0:01.27 trafsave.pl                                                                                                                                     
20622 trafd     20   0 20480 5616 2532 S    3  0.3   2:02.21 trafd                                                                                                                                           
19225 oleg      20   0 19220 1444 1048 R    1  0.1   0:00.75 top                                                                                                                                             
    1 root      20   0 23696 1620 1080 S    0  0.1   0:05.30 init                                                                                                                                           
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      RT   0     0    0    0 S    0  0.0   0:01.70 migration/0                                                                                                                                     
    4 root      20   0     0    0    0 S    0  0.0   0:01.18 ksoftirqd/0
[/*]

Видно что работает mysql толко на одном потоке ac

96

oleg_krv, что то много записей 'trafd' отдает. Покажи что он ('trafd') выкидывает в лог после сброса статистики в дамп. Должно быть примерно следующее:

...
Aug 18 14:50:02 vm-linux trafctl[853]: (eth0) signaling trafd to backup
Aug 18 14:50:02 vm-linux trafd[397]: (eth0) stats (real/user/sys/pkts/drops) since start: 3417.86/0.10/0.49/659/0, since last info: 300.13/0.00/0.05/11/0
Aug 18 14:50:02 vm-linux trafd[871]: (eth0) 3 records append to /trafd.eth0
Aug 18 14:50:02 vm-linux trafd[397]: (eth0) 3 records cleared
...

97

Да еще oleg_krv, покажи свою структуру таблицы 'traffic'. Должно быть следующее:

mysql> describe traffic;
+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| date     | datetime         | NO   | MUL | NULL    |       |
| srcIp    | int(10) unsigned | NO   | MUL | NULL    |       |
| dstIp    | int(10) unsigned | NO   |     | NULL    |       |
| dstPort  | int(11)          | NO   |     | NULL    |       |
| pId      | tinyint(4)       | NO   |     | NULL    |       |
| inBytes  | int(10) unsigned | NO   |     | NULL    |       |
| outBytes | int(10) unsigned | NO   |     | NULL    |       |
+----------+------------------+------+-----+---------+-------+
7 rows in set (0.04 sec)

98

Aug 18 14:16:03 sigmack trafd[25249]: (eth1) traffic collector started
Aug 18 14:16:08 sigmack trafctl[25257]: (eth1) signaling trafd to backup
Aug 18 14:16:08 sigmack trafd[25249]: (eth1) stats (real/user/sys/pkts/drops) since start: 5.57/0.00/0.07/3588/0, since last info: 5.57/0.00/0.07/3588/0
Aug 18 14:16:08 sigmack trafd[25277]: (eth1) 1035 records append to /trafd.eth1
Aug 18 14:16:08 sigmack trafd[25249]: (eth1) 1035 records cleared

А можно Ваши настройки для trafd?
А как сбросить статистику для trafd? Чтобы перезапустить службу и попробовать с нуля, я работаю просто в ручном режиме а не по cron-u

99 (18.08.2010 15:40:50 отредактировано Serg79)

oleg_krv, ну 1035 записей это не много. А 'trafd' после выгрузки данных в дамп сбрасывает всю свою статистику. Ты можешь примерно сказать сколько времени выполняется скрипт выгружающий данные, 10 сек, минуту или 10 минут? Так же ты не показал структуру таблицы 'traffic' в базе.

Вот мои настройки для 'trafd':

[root@vm-linux ~]# cat /etc/trafd/trafctl.conf
### sample configuration file for trafctl
### copy to trafctl.conf and edit
### $RISS: trafd/trafctl/trafctl.conf-sample.in,v 1.2 2004/11/17 09:21:02 count Exp $

### defaults

### interfaces to run trafd on. if empty, defaults to
### all interfaces that are up, excluding those matching exclude_interfaces
interfaces="eth0"
### intefaces for exclusion, regexp, this default is suitable for us
#exclude_interfaces="lo|(lo|tun|gif|nge|vmnet|bridge|gre|enc)[0-9]+"
#rotate_savefile_prefix="/var/spool/trafd/trafd."
### number of savefiles to keep when rotating
#rotate_num=5
#trafd_program="/usr/sbin/trafd"
#trafslice_program="/usr/sbin/trafslice"
### don't put interfaces into promisc mode, restore on start,
### change credentials to those of user "nobody"
trafd_flags="-p -r -u nobody -g nobody -C"
#trafd_pid_prefix="/var/spool/trafd/run/trafd."
#trafd_sock_prefix="/var/spool/trafd/tmp/trafd."
### pcap expression
#trafd_expression=""
### slice option
#split_period="month"
#split_prefix_month="/var/spool/trafd/%Y%m.trafd."

### you can cpecify overrides for parameters of particular interface

#trafd_an0_flags=""
#trafd_an0_expression=""

#trafd_eth0_expression="(tcp and (portrange 1-1023 and not broadcast)) or (udp and (portrange 1-1023 and not broadcast))"
trafd_eth0_expression="tcp or udp"

Вот конфиг MySQL, показываю только то что касается самого 'mysqld'. Это у меня для тестовой конфигурации и поэтому все параметры для MySQL указаны по минимуму.

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/run/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id       = 1

# Uncomment the following if you want to log updates
#log-bin=mysql-bin

# Disable Federated by default
skip-federated

# Uncomment the following if you are NOT using BDB tables
#skip-bdb

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

100

Serg79, буду колупать MySQL  а то сразу после перезагрузки сервиса быстрее выполняется а потом замедляется
Работа trafcron.pl

6:21 - Выгружаем дамп
6:21 - Начало обработки
6:21 - Сбросили дамп
6:21 - Получили лог файл - off
6:21 - Начало цикла записи
6:26 - 100 запись
6:32 - 200 запись
6:39 - 300 запись
6:45 - 400 запись
6:51 - 500 запись
6:57 - 600 запись
7:3 - 700 запись
7:10 - 800 запись
7:16 - 900 запись
7:24 - 1000 запись
7:31 - 1100 запись
7:39 - 1200 запись
7:45 -Обработано 1284 записей

Запись в Log-е

Aug 18 15:06:21 sigmack trafctl[32069]: (eth1) signaling trafd to backup
Aug 18 15:06:21 sigmack trafd[32046]: (eth1) stats (real/user/sys/pkts/drops) since start: 27.88/0.09/0.25/15484/0, since last info: 27.88/0.09/0.25/15484/0
Aug 18 15:06:21 sigmack trafd[32089]: (eth1) 1296 records append to /trafd.eth1
Aug 18 15:06:21 sigmack trafd[32046]: (eth1) 1296 records cleared
+8 WARNING

Спасибо за помощь - буду искать решение по MySQL

101

Да oleg_krv, 1 мин. 24 сек. на выгрузку 1284 записи это много. Ты кстати не показал структуру своей таблицы 'traffic'. У меня есть подозрения что ты используешь старую версию TrafStat. Ты откуда получал исходники, через SVN загрузил или архив скачал?

102 (18.08.2010 16:47:05 отредактировано oleg_krv)

Serg79,  брал с svn 14 августа

Таблица traffic

Поле    Тип            Сравнение    Атрибуты        Null    По умолчанию    
date      datetime                                Нет    Нет                                       
srcIp     int(10)                     UNSIGNED    Нет    Нет                                       
dstIp    int(10)                     UNSIGNED    Нет    Нет                                       
dstPort    int(11)                                Нет    Нет                                       
pId            tinyint(4)                                Нет    Нет                                       
inBytes    int(10)                     UNSIGNED    Нет    Нет                                       
outBytes    int(10)                     UNSIGNED    Нет    Нет                                      
CREATE TABLE IF NOT EXISTS `traffic` (
  `date` datetime NOT NULL,
  `srcIp` int(10) unsigned NOT NULL,
  `dstIp` int(10) unsigned NOT NULL,
  `dstPort` int(11) NOT NULL,
  `pId` tinyint(4) NOT NULL,
  `inBytes` int(10) unsigned NOT NULL,
  `outBytes` int(10) unsigned NOT NULL,
  KEY `key1` (`date`),
  KEY `key2` (`pId`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=koi8u;

103

oleg_krv, я тут с индексами игрался и пришел к выводу что ключ "KEY `key2` (`pId`,`date`)" не очень эффективен. Замени индекс `key2` на "KEY `key2` (`srcIp`,`date`)".

Вот патч посмотри:

--- sql/base.sql  (revision 111)
+++ sql/base.sql  (working copy)
@@ -9,7 +9,7 @@
  `inBytes` int unsigned not null,
  `outBytes` int unsigned not null,
  key `key1` (`date`),
- key `key2` (`pId`, `date`)
+ key `key2` (`srcIp`, `date`)
 ) engine = MyISAM;

 drop table if exists `proto`;

104

Появился маленький мануал для AltLinux - http://redmine.shelek.su/projects/trafs … ux_install  smile

105

Serg79 пишет:

Система учета Интернет трафика.

Сайт проекта: http://redmine.shelek.su/projects/trafstat/wiki

Ведет статистику по доступу к внешним серверам из локальной сети. Позволяет просматривать статистику как за день так и за месяц. Так же реализована панель управления пользователями, которые могут просматривать всю информацию о трафике хранящуюся в базе.

Вот как выдается информация о трафике:
admin

Так выглядит админка управления пользователями:
admin

собрать в деб пакет можно? а то на сайте видел только тарбол

...не важно что и как мы начинаем важно то как мы это заканчиваем...

106

remonik почему нельзя, есть желание собирай. Но текущая версия 0.1-beta находится в активной разработке, сейчас перелопачивается полностью структура хранения трафика, имей это в виду.

107

судя по скринам всё грамотно какие виды авторизации есть?
по поводу дебпакета глянь в сторону самса вещь глюкавая знают (дебпакеты есть рпмпакеты и тарболы) всё и однако даже фряшники кричат что это самая адекватная система по по учёту трафа с авторизацией по домену, именно по домену
хотелось бы увидеть по ип+мак также управление сквидом из админки же

...не важно что и как мы начинаем важно то как мы это заканчиваем...

108

remonik, повторю еще раз. Сейчас не имеет смысла собирать какие либо пакеты.

Если хочешь попробовать, то получай исходники из SVN и настраивай систему. Там ничего сложного нет, требуются базовые знания. Тем более что dwak подготовил довольно не плохой мануал (http://redmine.shelek.su/projects/trafs … ux_install) по развертыванию системы. А что бы не засорять систему, можешь все вынести в отдельную директорию, например в /home/trafstat.

109

какие виды авторизации есть? вапрошаю потому что ну сам подсуди нафихх малой конторе контроллер домена?
а по ип+мак самое то логично я поднял шлюз с нуля прикрутил снорт фчек отправку логов по почте трипваре фчек и кое что ишо bx  но вот вапрос с авторизацией не решил придётся наверное подымать КД..
прошу прощения что задел наверное тебя

...не важно что и как мы начинаем важно то как мы это заканчиваем...

110

remonik да не задел ты меня. Я просто пытаюсь донести, что сейчас все быстро изменяется и собирать какие либо пакеты бессмысленно. Да же тот TAR-архив который там выложен уже устарел. Текущую версию надо получать с SVN.

На счет авторизации. Система не является каким либо контроллером к доступу во внешний мир (Интернет или внешние сети). Система выполняет только учет проходящего через машину трафика и не более. В дальнейшем планируется расширение функционала, но не в этой версии.

Авторизация по паролю присутствует к WEB-интерфейсу вывода статистики.

111

понял
тогда можно надеется что ты прикрутишь авторизацию по маку и ип плюс управление сквидом?

...не важно что и как мы начинаем важно то как мы это заканчиваем...

112

remonik пишет:

понял
тогда можно надеется что ты прикрутишь авторизацию по маку и ип плюс управление сквидом?

Это все планируется. В частности "контроль ограничения по трафику" смотри запрос  #34. Squid так же планируется, так как я сам им активно пользуюсь. Но это все ждет реализации в последующих версиях. Сейчас требуется отладить и стабилизировать базовый функционал, учет проходящего трафика.

113

спасибо молодец что ещё можно сказать? чем могу помочь тебе?

одна из истин на последок
"... И помни дорогу осилит идущий!.."-Лао Дцы ab

...не важно что и как мы начинаем важно то как мы это заканчиваем...

114

oleg_krv пишет:

Протестировал выполнение скрипта и нашел причину "тупления" выполнения cron скрипта - запись в базу данных иногда доходит до 2-3 сек на 100 записей ac , иногда в начале запроса очень быстро, а под конец еще медленней ac

может кто-то скинуть свои настройки сервера mySQL, а то по рецептах с инета не помогает, или ссылку на нормальную статью настройки, а то не верю что хоть и атом- но двоядренный так может тормозить ac

oleg_krv, можешь сказать какая версия MySQL у тебя?

115 (22.09.2010 01:56:00 отредактировано Serg79)

Доступна новая версия системы учета трафика TrafStat.

Основные изменения

Учитывается весь трафик, такой как TCP, ICMP, EGP и т.п.

Полностью изменилась структура хранения трафика в базе, что позволило существенно сократить размеры таблиц для хранения трафика. Если раньше, при доступе к внешним сетям Internet ~60 пользователей таблица в которой храниться трафик за сутки разрасталась до 48 Мбайт и в ней насчитывалось порядка 304448 строк, то сейчас за 30 суток контроля трафика для тех же 60 пользователе таблица имеет размер в 167 Мбайт и число строк 2906580.

Так же полностью изменен алгоритм хранения данных. Теперь весь хранимый трафик разделяется на два вида: "текущий" и "архивный". Статистика по "текущему трафику" (про размер этой таблицы как раз разговор шел выше) доступна с разрешением в один час, а статистика по "архивному трафику" доступна с разрешением в один месяц (что позволяет еще сильнее сжать данные о трафике). Срок хранения трафика по умолчанию в "текущей статистике" равняется 30 дней, в "архивной статистике" равняется 5 годам. Все эти параметры можно изменять через WEB-админку (на данный момент реализация этой фичи в процессе, см. #53).

Одним словом, текущая реализация алгоритма хранения данных трафика является базовой и все остальное в версии 0.1-beta будет добавляться по верх данной структуры базы.

Отдельное спасибо хочется сказать пользователю kisil, его вклад в тестирование TrafStat не возможно переоценить.

Как настроить работу TrafStat

Основные параметры настройки системы для работы TrafStat остались не измены. Это настройки имени базы данных и пользователя для доступа к данной базе. Эти параметры указываются в файле /etc/trafstat/trafstat.conf и ./www/htdocs/trafstat/config.php. Так же необходимо указать коллектору трафика trafd имя интерфейса с которого снимать трафик, данный интерфейс прописывается в файле /etc/trafd/trafctl.conf, параметр interfaces="eth0".

Ну и настроить автоматический запуск скриптов обслуживания съема трафика и базы данных в crond:

# Run trafcron.pl at every 5 minutes
*/5 * * * * /usr/libexec/trafstat/trafcron.pl --daemon 2>&1 > /dev/null
# Run trafarch.pl at 4:23 every day
23 4 * * * /usr/libexec/trafstat/trafarch.pl --daemon 2>&1 > /dev/null
# Run trafclean.pl at 4:28 every day
28 4 * * * /usr/libexec/trafstat/trafclean.pl --daemon 2>&1 > /dev/null
# Run trafserve.pl at 4:33 every day
33 4 * * * /usr/libexec/trafstat/trafserve.pl --daemon 2>&1 > /dev/null

Как получить новую версию

Загрузить новую версию можно непосредственно в виде tar-архива или из SVN-репозитария с ветки 'trunk': http://svn.shelek.su/public/trafstat/trunk/ .

116 (05.11.2011 18:51:17 отредактировано lateich)

delete

117

lateich пишет:

Не подскажите куда копать?

Необходимо установить библиотеку 'libpcap'.

118

Спасибо smile

119

а с netflow умеет работать? (или будет в перспективе?)

120

antaeus пишет:

а с netflow умеет работать? (или будет в перспективе?)

Нет, с netflow данный коллектор работать не умеет. Но если встанет такая необходимость, то добавить поддержку netflow не составить труда. Здесь главное найти источник генерации netflow трафика, для отладки данного функционала.)))