k0st1an
Рейтинг
+0.55
Сила
0.11

k0st1an

Константин

avatar
Искал инфу и заметил сообщение. Тема конечно интересная и пригодится для автоматизации. Вполне реально рутину переложить на базу. Вижу что в работе с базой у тебя больше опыта…
avatar
Ну что делать, но flow-tools работает стабильно. Но мне уже хочется написать свой коллектор ))
avatar
Для подобных вещей есть очередь.

Но в каком виде это будет я еще не решил. Может быть проще использовать тот же flow-tools и только разобрать его формат файлов. Че изобретать велосипед. Время подумать еще есть )
avatar
Я говорил про то, что мне не хочется хранить сырые данные. Я их обрабатываю и кладу в базу. Так занимает меньше места. Может в этом непонятка вышла. Например для локального IP 192.168.42.22 ведется подсчет какой трафик был, какие протоколы использовались, какие порты были задействованы, сколько пакетов принято и отправлено, с какими удаленными хостами была связь и о каждом хосте, опять же, есть статистика. Все это суммируется по каждому пункту и пишется в базу. Но хранить все данные я не хочу, потому как через какое-то время этих данных будет очень много и на каждый запрос будет уходить все больше времени. Но признаю, что в сыром виде эти данные можно крутить как угодно в любой момент.
avatar
Я не хочу хранить необработанные данные в базе. flow-tools нужен пока только как вынужденное звено. Как только будет сформирован рабочий вариант анализатора примусь за написание коллектора. Распылять силы не хочется.
avatar
Конечно оставить в базе сырые данные удобнее для будущего верчения во все стороны. Но место съест много. Дальнейшая разработка в какую сторону двинется?

Я пишу проект по анализу трафика пользователей по данным netflow. Я решил сразу эти данные анализировать и писать в базу. Да не так гибко. У меня пока только одна проблема — коллектор. Мне приходится использовать flow-tools: из формата flow-tools, конвертировать данные в csv, а уже потом анализировать. Тут два пути: а) анализировать flow файлы flow-tools своими силами; б) писать свой коллектор.

Кстати. flow-tools пишет netflow данные с своем формате — не встречал ли в сети спецификацию?? В рассылке по flow-tools автор указывает, что использовал API библиотеки ftlib. И все. Но разобрать как она работает у меня не получилось, C не знаю. Нашел статью aleph-nought.blogspot.ru/2009/01/format-of-flow-capture-flow-file.html, но разбор не детальный, автор пишет явно для тех кто сечет в С.
avatar
fist и last это я из flow-export взял. Из твоей таблички: start и end. Это Время когда сенсор сработал? Не могу найти точной информации по данному вопросу.
avatar
Подскажите. Время (first и last) — это что за время?? Когда данные поступили на коллектор или когда они были захвачены сенсором??
avatar
Не хотел его использовать. Да и не мог, ssh -X не заработало в связке с Mac OS. Я всегда стараюсь пользоваться только тем, что не зависит от удаленно машины. Так правильней.
avatar
да уж, куда проще ))
Как умудрился пропустить данную опцию не понимаю %(
avatar
У меня почему-то нет прав даже в свой блог писать. Потому отвечу тут.

Решение для centos 6.3 x64. В файле configure на строках 11789 и 11829 жестко указаны директории, где должны быть библиотеки от mysql. Надо всего на всего поменять пути вот так:

11789: LDFLAGS="$LDFLAGS -L$WHERE_MYSQL/lib64/mysql"
(...)
11829: MYSQLLDFLAGS="-L$WHERE_MYSQL/lib64/mysql"

И заново собрать flow-tools:

% ./configure --with-mysql
% gmake
% gmake install
avatar
Пересел с centos 5.8 x32 на 6.3 x64, поставил из реп flow-tools, при импорте в базу выдает: flow-export: Format not supported. Поискал в сети. Типа собрана моя версия без поддержки mysql (в этом я сильно сомневаюсь). Ну не вопрос: ./configure --with-mysql && gmake && gmake install. Результат все тот же. Для тестов пробовал такое:

/usr/local/flow-tools/bin/flow-export -f3 -mSRCADDR,DSTADDR -u "traffic:traffic:localhost:3306:traffic:netflow" < ft-v05.2013-02-28.020001+0400


(это уже собрано из исходников). В ASCII CSV замечательно пишет. В чем может быть проблема??! На ровном месте…

Исходные данные:

mysql> desc netflow;
+-----------+-------------+------+-----+-------------------+-----------------------------+
| Field     | Type        | Null | Key | Default           | Extra                       |
+-----------+-------------+------+-----+-------------------+-----------------------------+
| UNIX_SECS | int(255)    | NO   |     | NULL              |                             |
| DOCTETS   | int(255)    | NO   |     | NULL              |                             |
| SRCADDR   | varchar(45) | NO   |     | NULL              |                             |
| DSTADDR   | varchar(45) | NO   |     | NULL              |                             |
| PROT      | int(11)     | NO   |     | NULL              |                             |
| SRCPORT   | int(5)      | NO   |     | NULL              |                             |
| DSTPORT   | int(5)      | NO   |     | NULL              |                             |
| DPKTS     | int(11)     | NO   |     | NULL              |                             |
| FIRST     | int(255)    | NO   |     | NULL              |                             |
| LAST      | int(255)    | NO   |     | NULL              |                             |
| time      | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-----------+-------------+------+-----+-------------------+-----------------------------+

mysql> show grants for traffic@localhost;
+----------------------------------------------------------------------------------------------------------------+
| Grants for traffic@localhost                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'traffic'@'localhost' IDENTIFIED BY PASSWORD '*1FB82F6DFC05F43BC9A0AE4B8CC1D7D6D04E83C9' |
| GRANT ALL PRIVILEGES ON `traffic`.* TO 'traffic'@'localhost'                                                   |
+----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.01 sec)
avatar
Еще хочу сделать как в ligthsquid: у кого какой трафик в определенный момент времени. Но это не скоро, пока даже не представляю как это сделать.
avatar
Я стал записывать данные в базу и хотел было начать их обрабатывать. Но потом как-то руки не доходили. Трафик стал безлимитным и вот уже нет первоочередной необходимости видеть кто сколько накачал. В середине января стал изучать python: есть новый для меня язык, есть задача = идеально для изучения нового языка (если уже знаете 2-3 языка изучить новый не так сложно). Вот и история.

Я хоту обрабатывать данные в базе, потом писать туда результат, вести историю. Исходные данные удалять. Если дотянусь — строить графики.
avatar
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| UNIX_SECS | int(255)    | NO   |     | NULL    |       |
| DOCTETS   | int(255)    | NO   |     | NULL    |       |
| SRCADDR   | varchar(45) | NO   |     | NULL    |       |
| DSTADDR   | varchar(45) | NO   |     | NULL    |       |
| PROT      | int(11)     | NO   |     | NULL    |       |
| SRCPORT   | int(5)      | NO   |     | NULL    |       |
| DSTPORT   | int(5)      | NO   |     | NULL    |       |
| DPKTS     | int(11)     | NO   |     | NULL    |       |
| FIRST     | int(255)    | NO   |     | NULL    |       |
| LAST      | int(255)    | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
avatar
Я все данные кладу в базу. Уже около 120млн строк накопилось (около 9GB за 4 месяца). Недавно начал писать на python обработчик этих самых данных. Все получилось, но так как Перфекционизм взял верх, переписываю. Уж больно сильно хотелось получить первые результаты. Пока все выводится в консоль (можно '>>'). Но в планах выдавать результат в html.

В день набегает около 1.5млн. записей. Выборка этих записей около 3.5-4 минут, подсчет трафика для каждого хоста (55-70) еще минуты 2. В планах сделать еще более детальный отчет для каждого хоста.