Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Система учета Internet трафика (TrafStat)  (Прочитано 51330 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« : 10-01-2010 18:18 » 

В связи с тем что TrafStat обзавелся своей "Системой Управления Проектом", всю информацию о развитии  проекта теперь можно получить на сайте http://redmine.shelek.su/projects/trafstat.

В связи с этим событием, обновление данной страницы более не будет осуществляться.

10-03-2010

Краткое описание

Система TrafStat предназначена для учета и хранения информации о Internet трафике. Накопленная статистика хранится в SQL сервере, визуализация накопленной  статистики осуществляется через WEB-интерфейс. TrafStat на данный момент не имеет единой установочной последовательности. Необходимо проводить конфигурацию под каждую отдельную систему.


Комплекс состоит из следующих компонентов

  • Коллектор информации о проходящем трафике.
  • Периодически запускающиеся скрипты для сбора информации у коллектора и служебного обслуживания базы данных. Запуск скриптов производится системным демоном crond.
  • Хранилище информации о трафике база данных MySQL
  • WEB-интерфейс реализован на PHP. В качестве WEB-сервера используется HTTP сервер Apache.


Реализовано следующее

Статистика по месяцам:


Статистика за месяц:


Статистика за месяц по пользователю:


Статистика запросов к удаленному серверу пользователем за месяц:



Руководство по развертыванию системы

Разработка комплекса видеться под операционную систему Linux, но он так же будет работать под любой UNIX подобной системой. Загрузить проект можно с SVN сервера форума http://svn.shelek.su/ .

* img1.PNG (29.32 Кб - загружено 3316 раз.)
* img2.PNG (47.04 Кб - загружено 2931 раз.)
* img3.PNG (46.63 Кб - загружено 3421 раз.)
* img4.PNG (40.97 Кб - загружено 3247 раз.)
« Последнее редактирование: 09-03-2010 21:02 от Serg79 » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 15-01-2010 21:42 » 

Извечный вопрос: что делать? Улыбаюсь

Заданий нет. Если нужны идеи, то нужно обозначить цели проекта и требования к разрабатываемой системе.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 15-01-2010 21:47 » 

У меня вопрос другого порядка, а сейчас это кому-то нужно? И это при сегодняшних мегабитных каналах и анлим трафиках?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-01-2010 22:29 » 

Для начала хочу построить WEB-интерфейс аналогичный SARG. Отличие от SARG в учете трафика проходящего через маршрутизатор и хранение информации в базе данных, SARG работает с логами Squid и формирует статические HTML-ки. Далее хочу прикрутить ограничение на трафик для пользователей, думаю реализовывать через iptables. Ну а также добавить прокси Squid и так же отображать статистику по нему.

Для рисования графиков использую JpGraph, с его помощью нарисовать можно много чего. Подскажите, какие еще графики можно добавить?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 15-01-2010 22:34 » 

Serg79, посмотри в сторону lightsquid, так же настраивается на логи squida. Соответственно, можно написать свой скрипт добавления в таблицу файрвола правил для ограничения трафика.

И все же ты не ответил на вопрос - кому это нужно?
Хотя да, помню. Ты жаловался на "короткий" интерент канал.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 15-01-2010 22:35 » 

Вот такие две диаграммы хочу прикрутить к каждой таблице:


Только пока не знаю какую информацию на них повесить.

* img.PNG (5.02 Кб - загружено 3216 раз.)
Записан
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 15-01-2010 22:40 » 

Sla, да много где нужно. Мне например нужно. Улыбаюсь

Хочу уточнить, что я не хочу делать подобие билинговой системы. Это прежде всего будет визуализация статистики по пользованию Internet, ну а далее ограничение его использования. Улыбаюсь
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 15-01-2010 22:46 » 

понятно что squide'е биллинг не построишь.
Посмотри в сторону lightsquid. Намного легче sarg, отчеты текстовые, привязаться можно к ip-адресам.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 23-02-2010 09:39 » 

Обновил описание проекта.

Требуется идея)))
На странице статистики (смотри первый пост) два раза отображается одна и та же круговая диаграмма, это сделано для заглушки пустого места в строке графиков. Подскажите, какую информацию еще можно отобразить с помощью круговой диаграммы или иного графика, что бы заменить дублирующую картинку?
« Последнее редактирование: 23-02-2010 09:41 от Serg79 » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 23-02-2010 09:48 » 

Serg79, а почему в требованиях не сказано что требуется trafd?
или я не понял откуда берутся логи?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 23-02-2010 09:51 » 

Sla, убрал при редактировании так как он находиться в проекте и сторонней его инсталляции не требуется.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 23-02-2010 10:14 » 

Кстати, а чем ты рисуешь русские буквы на графиках?
чесслово - лень лезть в проект - проще спросить.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 23-02-2010 10:31 » 

JpGraph плюс TrueType шрифты.
Записан
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 23-02-2010 12:54 » 

Повторюсь:
Обновил описание проекта.

Требуется идея)))
На странице статистики (смотри первый пост) два раза отображается одна и та же круговая диаграмма, это сделано для заглушки пустого места в строке графиков. Подскажите, какую информацию еще можно отобразить с помощью круговой диаграммы или иного графика, что бы заменить дублирующую картинку?
Нужна идея для еще одного графика. Подскажите, что еще можно отобразить в картинке?
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #14 : 23-02-2010 13:02 » 

* Ошибки?
* Отношения разного трафика (HTTP/SSL, Text/images/stream/etc)?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 23-02-2010 13:06 » 

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

Но хочется добавить визуализацию какого то другого параметра, так как круговые диаграммы и так перерисовываются при выборе сортировки по разным параметрам.
Записан
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 23-02-2010 13:13 » 

* Ошибки?
Не понял какие ошибки имеются ввиду...

* Отношения разного трафика (HTTP/SSL, Text/images/stream/etc)?
Отношение трафика показывается при выборе статистики пользователя при доступе к удаленному серверу, показываются порты к которым направлялся трафик.
На счет 'Text/images/stream/etc', коллектор не снифит трафик (для этого пришлось бы собирать все потоки) он только ведет учет проходящего IP трафика.
Записан
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 09-03-2010 21:03 » 

В связи с тем что TrafStat обзавелся своей "Системой Управления Проектом", всю информацию о развитии  проекта теперь можно получить на сайте http://redmine.shelek.su/projects/trafstat.

В связи с этим событием, обновление данной темы более не будет осуществляться.

10-03-2010
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 09-03-2010 22:01 » 

Вопрос: если хочу оставить комментарий к проекту (скажем, критику или предложение), то как это сделать? Создавать новую задачу?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 09-03-2010 22:42 » 

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

Все вопросы касающиеся разработки, комментарии по реквестам и тому подобное лучше конечно оставлять в Redmine. Там они будут, можно так сказать, более близки к обсуждаемой теме.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 10-03-2010 07:19 » 

Я посмотрел в репозитории директорию /trunk/sql/ и на основе запросов пытался проанализировать корректность индексов. Индексы плохие. Особенно при использовании GROUP BY - без индекса это работает очень медленно. Когда данных будет много, тормоза будут хорошо ощущаться. Единственный индекс, который там работает - по дате. Индесы по proto и srcPort имеют плохую cardinality и выбор будет в пользу даты. Вообще, правильнее было бы сделать один-два составных индекса.
Например:

Код: (SQL)
INDEX by_src (proto, srcPort, `date`, dstIp),
INDEX by_dst (proto, dstPort, `date`, srcIp)

(!!! Рекомендую после создания индексов сделать ANALYZE TABLE - соберется статистика по составным индексам и оптимизатор будет работать лучше.)
Эти индексы должны подойти (точнее покажет только отладка с EXPLAIN) для statistic.sql.
Не ясно, как они подойдут для period.sql (используется (srcPort, date) и (dstPort, date)), для server.sql и для user.sql (добавляется srcIp и dstIp).
Индексы dstPort и protoID можно смело удалять. Если конечно не скрываются от глаз другие запросы, где они - основной выбор, но я сомневаюсь, т.к. от даты никуда не уйдешь. Значит, универсальный индекс только:

Код:
INDEX by_date (`date`)

Для оптимизации GROUP BY лучше иметь набор составных индексов, где первый будет - дата, а второй - поле группировки.

Код:
INDEX sort_dstIp (date, dstIp),
INDEX sort_srcIp (date, srcIp),
INDEX sort_dstPort (date, dstPort),
INDEX sort_srcPort (date, stcPort)

На чем остановиться, покажет только EXPLAIN на значительном объеме данных.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 10-03-2010 07:28 » 

Вопрос: если хочу оставить комментарий к проекту (скажем, критику или предложение), то как это сделать? Создавать новую задачу?
Я посмотрел ....

ИМХО это можно написать через новую задачу с трекером "Улучшение"
Записан
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 10-03-2010 07:30 » 

Не знал что можно делать составные индексы. Я так понимаю, что они обязуют MySQL использовать сразу два поля в качестве индексов? Погоняю сегодня вечером (по возможности) все перечисленные группы индексов из под EXPLAIN-a и можно будет определяться со структурой индексов.

RXL, знаешь еще с какой проблемой столкнулся. При добавлении большого количества индексов, служебный файл MySQL для хранения индексированных значений (traffic.MYI) начинает занимать больше места на жестком диске чем сам файл содержащий данные (traffic.MYD).
Записан
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 10-03-2010 07:37 » 

Вопрос: если хочу оставить комментарий к проекту (скажем, критику или предложение), то как это сделать? Создавать новую задачу?
Я посмотрел ....

ИМХО это можно написать через новую задачу с трекером "Улучшение"
Согласен. Все вопросы связанные с улучшением, замечания и т.п. которые могут потребовать внесения изменений в исходный код проекта желательно оставлять в Redmine.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #24 : 10-03-2010 08:55 » 

Переношу тему туда.

Рост индексов - это нормальное явление. При правильно составленных запросах объем просматриваемых индексов ограничен (к тому же это дерево). В случае же сканирования по данным могут быть выбраны все данные, что существенно напряжнее, особенно с переходом объемов на гигабайты.

По части индексов скажу здесь:

1. Для каждого запроса или подзапроса используется только один индекс выбираемый оптимизатором или назначаемый программистом. Исключение - слияние индексов на OR:
http://dev.mysql.com/doc/refman/5.0/en/index-merge-optimization.html

2. Составные индексы. Не обязательно использовать все поля в запросе. Т.к. это двоичное дерево, то работает любое количество левых полей. Кроме ON и WHERE, индекс используется для GROUP BY и ORDER BY в следующем порядке: сперва условия выборки, потом группировка, а в конце - сортировка.

Код:
INDEX (a, b, c)

WHERE a = 1 AND b = 2 AND c = 3 /* OK */
WHERE a = 1 AND b = 2 /* OK */
WHERE a = 1 /* OK */
WHERE a = 1 AND c = 3 /* OK. Только для "a". */
WHERE b = 2 AND c = 3 /* Индекс не используется. */

WHERE a = 1 AND b = 2 GROUP BY c /* Используется полный индекс. */
WHERE a = 1 GROUP BY c /* Используется только для "a". */

WHERE a = 1 ORDER BY b /* Используется для "a" и "b". */
WHERE a = 1 GROUP BY b ORDER BY c /* Используется полный индекс. */
GROUP BY b ORDER BY c /* Индекс не используется. */

3. Оптимизации для диапазонов (здесь по диапазону выбирается поле date):
http://dev.mysql.com/doc/refman/5.0/en/range-optimization.html

4. Полезно знать тонкости оптимизации, т.к. они, в общем то, простые.
http://dev.mysql.com/doc/refman/5.0/en/optimization.html
« Последнее редактирование: 10-03-2010 08:58 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Модератор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #25 : 10-03-2010 09:37 » 

Да RXL, запости реквест там. С SQL-запросами давно назрела необходимость разобраться.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 10-03-2010 09:46 » new

А я запостил уже.
http://redmine.shelek.su/issues/9
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines