LinuxForum.Fans
Тема

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

Автор: Serg79 175 сообщений 67906 просмотров
#68662

Нет у меня всё нормально работало, только новую версию ещё не опробовал. Завтра обязательно попробую, отпишусь

#68706

kisil, ты не тяни с новой версией базы.))) Я сейчас готовлю переход на уплотнение данных (каждый год в новой таблице, а количество хранимых годов управляется через настройки), так что ты тимлидер группы тестирования.)))

Кстати kisil, для того что бы добавлять самому реквесты (request) и принимать участие в обсуждении запросов, достаточно только зарегистрироваться на Redmine TrafStat.

#68708
oleg_krv написал:
Вопрос к пользователям:
Система стала с помощью небольшого напильника (в основном пути в скриптах). Поставил сброс статистики через 5 минут в кроне, и ночью случилась беда: видно perl скрипт не успел занести данные в базу и был вызван повторно в результате утром бред в статистике и куча запущенных процессов... :(

кто-то с таким сталкивался?

Странно, выгрузка статистики о трафике из коллектора в базу занимает секунды и по идее скрипт выгрузки зависнуть не мог. Он прямолинеен и как таковой логики в нем нет. Если есть возможность, скажи какие процессы висят в системе ("куча запущенных процессов")? И что за бред в выводе статистики?

Да, весь вывод логов от системы сбора информации о трафике ("демон коллектор" трафика и скрипты выгрузки данных) отправляют данные в "syslog" с уровнем "local0". Я для сбора всей инфы добавил в "/etc/syslog.conf" следующую строчку:

text
# Trafd related logs:
local0.*                           -/var/log/trafd

В данном логе отражается вся инфа о работе коллектора съема трафика и скриптах выгрузки данных.

#68710
oleg_krv написал:
Маленькая просьба по web интерфейсу:
указать что базу создавать надо в кои8 кодировке и просьба добавить после установления связи с базой строку:

mysql_query("SET NAMES 'koi8r';");

- установка кодировки связи с базой

Сам этот вопрос досконально не прорабатывал, но если MySQL работает только для обслуживания базы "TrafStat" то думаю что лучше будет добавить строку локализации в конфиг для MySQL в файл "/etc/my.cnf" следующего вида:

text
default-character-set = koi8r

Или что то подобное.

P.S. а вообще не стесняйтесь сами добавлять запросы на баги и улучшения функционала. Для этого и была развернута система управления проектом TrafStat.

По этому oleg_krv если есть время, то добавь запрос по этой неточности в TrafStat, что бы он так сказать не потерялся.

#68770

Serg79 сегодня в 13.35 запустил оновленую систему. Базу не создавал новую а переконвертировал с помощью скрипта. Впечетляет база с 80 метров стала весить 13. Но вот что мне пишет syslog

text

Aug 17 13:40:05 rm-proxy trafsave.pl[10488]: WARNING: Protocol is not supported: srcIp = 192.168.0.18, srcPort = -1, dstIp = 192.168.0.1, dstPort = -1, pId = icmp 
Aug 17 13:45:06 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 192.168.0.18, srcPort = -1, dstIp = 192.168.0.1, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 95.52.219.147, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 93.81.167.224, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 77.222.19.179, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 114.40.178.231, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 123.49.46.11, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 59.161.103.10, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 83.28.26.176, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 87.251.142.11, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 213.16.105.133, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 83.2.170.195, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 91.209.51.149, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 212.72.100.130, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 124.182.25.223, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 183.178.126.81, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 189.27.133.37, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 85.49.227.138, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 219.85.29.7, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 212.178.11.8, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 90.58.89.240, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 86.7.3.213, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 59.145.117.22, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 216.108.169.145, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 178.164.181.54, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 193.239.179.10, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 
Aug 17 13:45:08 rm-proxy trafsave.pl[11700]: WARNING: Protocol is not supported: srcIp = 78.37.238.138, srcPort = -1, dstIp = 192.168.0.160, dstPort = -1, pId = icmp 

К чему бы это и как с ним боротса???

#68783
kisil написал:
К чему бы это и как с ним боротса???

На данный момент обрабатываются только протоколы TCP и UDP, а остальные протоколы игнорируются, но если другой протокол обнаружен кидается WARNING в лог. Учет трафика по протоколам отличным от TCP и UDP требует дополнительной проработки, данный вопрос я пока отложил на потом.

Надо добавить примерно следующее правило для съема трафика коллектору:
Файл: /etc/trafd/trafctl.conf

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

Хорошо Серг79. Попробуем поправить. Я создал вопрос на баг трекере по этой проблеме что удалять его. Посмотри?
Статистику какую надо собирать?

#68884
kisil написал:
Статистику какую надо собирать?

Ну тут все без изменений, надо посмотреть сколько будет весить база после сбора статистики в течении суток.))

Для большей загрузки базы можно фиксировать весь TCP и UDP трафик, т.е.:
Файл: /etc/trafd/trafctl.conf

text
trafd_eth0_expression="tcp or udp"
#68886

oleg_krv, спасибо что запрос про koi8r добавил.

А вообще, в дальнейшем однозначно надо будет переходить на utf8 и добавлять поддержку нескольких языков в WEB-интерфейсе.

#68970

Если пригодитса могу помочь перевести на украинский :D

#68983

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

#69155

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

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

#69159

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

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

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

#69163

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

#69173

Система :
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 толко на одном потоке :(

#69178

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

text
...
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
...
#69183

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

text
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)
#69188

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

#69195

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

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

text
[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 указаны по минимуму.

text
# 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

#69214

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

text

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-е

text

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

Войдите или зарегистрируйтесь, чтобы ответить.