Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Сетевые технологии > Как хранить статистику трафика?


Автор: konshyn 10.6.2014, 11:33
Добрый день. 
Собственно сам предмет обсуждения: как хранить статистику трафика? Где хранить? 
Что входит в статистику: количество пакетов в период времени 1 сек (входящих/исходящих), кол-во байт в единицу времени 1 сек (входящий/исходящий).
Есть 6 различных сетевых интерфейсов, для которых будет храниться статистика. По этим данных нужно будет рисовать график на web-страничке.
Как это делается? Как правильно сделать и почему?

Автор: Akina 10.6.2014, 12:37
Цитата(konshyn @  10.6.2014,  12:33 Найти цитируемый пост)
Что входит в статистику: количество пакетов в период времени 1 сек (входящих/исходящих), кол-во байт в единицу времени 1 сек (входящий/исходящий).

ТО есть ни адрес источника, ни адрес приёмника, ни протокол и прочая фигня не нужны? ну так сливай это всё в какую-нить БД, делов-то... 6 интерфейсов, 6 записей в секунду по 4 интеджера плюс штамп времени, полгига в год - мелочь.

Автор: konshyn 10.6.2014, 13:28
Цитата(Akina @  10.6.2014,  12:37 Найти цитируемый пост)
ТО есть ни адрес источника, ни адрес приёмника, ни протокол и прочая фигня не нужны? ну так сливай это всё в какую-нить БД, делов-то... 6 интерфейсов, 6 записей в секунду по 4 интеджера плюс штамп времени, полгига в год - мелочь. 

Не совсем. Есть и протокол, и задержки пакетов, и потери.
Для каждой задержки должна быть своя запись. Для каждого протокола тоже отдельная запись. За прошлые сутки вышло 2 млн записей. И это не всю статистику записывал.

Автор: tzirechnoy 10.6.2014, 15:02
График рисовать для начала rrdtoolом. Соответственно, аггрегированную статистику складывать, видимо, в него. Неаггрегированную... 2 млн записей/сутки -- можно тожэ в него, на самом деле. Но это так, близко к разумному пределу.

Автор: konshyn 10.6.2014, 17:09
tzirechnoy, спасибо. То, что нужно)

Автор: konshyn 20.6.2014, 14:52
Пытаюсь сделать графики через rrdtool.
Использую python.
Не могу понять, как мне получать данные  сколько байт было отправлено и получено на интерфейсах, и как мне организовать передачу данных с моего приложения (написано на с++) в базу данных rr?

Автор: tzirechnoy 22.6.2014, 11:49
<quote>&gt;Не могу понять, как мне получать данные  сколько байт было отправлено и
&gt; получено на интерфейсах</quote>

Взять исходники, например, collectd или netsaint и посмотреть, как там сделано. Ну, или ifconfig. Но лучшэ -- collectd. И вообще, этих мониторилок -- дофига, если тебе надо только сколько байт отправлено и получено -- то зачем писать свою?

<quote>&gt;и как мне организовать передачу данных с моего приложения (написано на
&gt; с++) в базу данных rr?</quote>

Так python или C++?

В любом случае, для python поиск по rrdtool python API выдаёт какие-то довольно вменяемые библиотеки, а для C -- в комплекте есть librrd, в котором из rrd.h можно понять смысл всяких rrd_update_r().

Автор: konshyn 23.6.2014, 10:40
Цитата(tzirechnoy @  22.6.2014,  11:49 Найти цитируемый пост)
Так python или C++?

приложение на с++, а графики собирался через питон делать.

Автор: konshyn 23.6.2014, 11:28
Что нужно смотреть, в общем-то:
1) CPU
2) Memory
3) NTP
4) Traffic (для начала общий,  в последствии нужно по отдельным протоколам)
5) Данные, которые я собираю в своем приложении, которое написано на С++.

Собираюсь все это делать на python, или почти все - создание базы данных, занесение, html страничку.
Так вот, данные с моего приложения планирую просто записывать в файл, а на питоне его парсить и заносить в rrdb.
для cpu нашел библиотеку kvm, но на Си; для трафика пока что ничего не нашел, кроме вывода ifconfig. NTP и memory пока не трогаю, в последнюю очередь. хоть бы с этим разобраться.
так вот, не могу понять, как это все собрать в кучу. собственно вопросы:
1) Когда rrdb создана, как туда каждые --steps заносится информация? Я так понял, что нужно написать скрипты, которые будут это делать и запускаться каждые --steps секунд. Допустим я эти скрипты написал, как сделать, чтобы они запускались переодически? С созданием графа тоже самое, похоже.
2) Откуда получать информацию о трафике?
3) насчет kvm, так планирую сделать тоже самое, как и со своим приложением. Написать отдельную программу, которую запускает скрипт, а после ее окончания парсит инфу с файла.

P.S. но конкретного понимания не имею, как это все собрать. 

Автор: tzirechnoy 23.6.2014, 13:02
Взять collectd, в котором 99.7% ужэ написана.

Автор: konshyn 23.6.2014, 15:43
Цитата(tzirechnoy @  23.6.2014,  13:02 Найти цитируемый пост)
Взять collectd, в котором 99.7% ужэ написана. 

Чем рисовать тогда графики? rrdtool?

Добавлено через 18 секунд
Имею в виду, что посоветовать можешь?

Автор: tzirechnoy 23.6.2014, 17:27
Цитата
Чем рисовать тогда графики? rrdtool?


Основной метод рисования графиков в collectd -- именно rrdtool. Впрочем, ещё раз: взять collectd или другой демон и именно его использовать, поскольку это и есть практически решэние твоей задачи -- это хорошая идея. Но если не хочешь почему-то, и хочешь написать свой -- возьми хотя бы исходник, и посмотри, как сделаны вещи, которых не знаешь совсем.

Автор: konshyn 7.7.2014, 11:16
Решил использовать cacti для сбора и отрисовки статистики. как написать к нему плагин или что-то похожее, чтобы cacti мог рисовать график по моим данным (данным, которые собирает мой демон)?

Автор: _zorn_ 8.7.2014, 04:10
В какти есть Data Input Method - Script/Command куда можешь прописать свой скрипт. 
Если на каждое значение нужен один график - скрипт должен выводить одно число, а в Input методе будет одно поле Output Fields. Какое именно значение выводить, можно определить например параметром передаваемым скрипту.
Если нужно несколько значений на одном графике - можешь посмотреть как сделано в "Unix - Get Load Average" (скрипт perl <path_cacti>/scripts/loadavg_multi.pl)

Автор: polls 8.7.2014, 10:14
на сервере запускаешь что то вроде tcpdump, чтобы он писал в файл,
далее,
пишешь к этом txt-файлу веб-интрфейс, через который можно будет визуально смотреть, что пишется в этот файл, и через ajax обновлять постоянно веб интерфейс.

В общем так должно быть верно.

Добавлено через 2 минуты и 46 секунд
я могу тебе помочь в этом,
напиши мне в ЛС,
возможно и получится.

Автор: konshyn 8.7.2014, 11:58
Цитата(_zorn_ @  8.7.2014,  04:10 Найти цитируемый пост)
Если нужно несколько значений на одном графике - можешь посмотреть как сделано в "Unix - Get Load Average" (скрипт perl <path_cacti>/scripts/loadavg_multi.pl) 

дам 12 строк, и единственная понятная - это первая строка)
там есть строчка 
Код

$avg = ~ s/^....куча кракозябр

что она значит?

Автор: tzirechnoy 8.7.2014, 17:44
Запусти -- результат должэн быть очевиден, по образу и подобию результат пишы на чём угодно.
 Впрочем, непосредственно на веб-сайте cacti есть примеры скриптов в совершэнно разных стилях, выбирай на вкус как говорится.

PS Да, =~ -- это перловский оператор сопоставления с регулярным выражэнием. perldoc perlre, если интересно.

Автор: _zorn_ 9.7.2014, 05:57
Цитата(konshyn @  8.7.2014,  19:58 Найти цитируемый пост)
что она значит?

Знакомься, это регекспы smile
Первая реакция на них такая же была smile

Добавлено @ 06:05
Цитата(polls @  8.7.2014,  18:14 Найти цитируемый пост)
на сервере запускаешь что то вроде tcpdump, чтобы он писал в файл,
далее,
пишешь к этом txt-файлу веб-интрфейс

Зачем ? Это все реализовано в какти через snmp. Стандартные OIDы ifTable.
И когда это tcpdump научился писать txt файлы вместо pcap ?

Автор: konshyn 9.7.2014, 10:38
Цитата(_zorn_ @  9.7.2014,  05:57 Найти цитируемый пост)

Зачем ? Это все реализовано в какти через snmp. Стандартные OIDы ifTable.

у меня cacti на самой машине стоит, которую я мониторю. и захожу на него через web-сервер.



Цитата(_zorn_ @  9.7.2014,  05:57 Найти цитируемый пост)

Знакомься, это регекспы smile
Первая реакция на них такая же была smile

попридумывают всего, а ты сиди и разбирайся:(



Цитата(_zorn_ @  9.7.2014,  05:57 Найти цитируемый пост)
И когда это tcpdump научился писать txt файлы вместо pcap ?

pcap был написан специально для tcpdump. логично, что tcpdump может скидывать информацию о пакетах в файлы, как pcap.

но все, что мне нужно - это график по одной переменной. у меня мой сетевой демон собирает статистику, пока делает свои грязные дела, в три переменные - min,max,avg. и все, что нужно - это график по переменной avg и внизу две строчки под графиком для min и max. И пока что мне нужно понять, куда и как часто скидывать эти три переменные, чтобы мой скрипт для cacti брал эти числа и отдавал их на рисование графика.

Добавлено через 3 минуты и 26 секунд
Цитата(konshyn @  9.7.2014,  10:38 Найти цитируемый пост)
у меня cacti на самой машине стоит, которую я мониторю. и захожу на него через web-сервер.

Хотя вроде он и локально по snmp собирает статистику. или я ошибаюсь?

Автор: konshyn 9.7.2014, 11:10
Еще не могу найти, где меню для мониторинга трафика. Это нужно отдельный плагин ставить?
Когда я в cacti в настройках devices->host template выбираю local linux machine, то внизу в полях Associated Graph Templates->Graph Template Name->add graph template нет ничего похоже на мониторинг сетевого интерфейса, только кол-во пользователей, загрузка cpu, память и т.п.
Где найти мониторинг трафика? 

Автор: konshyn 9.7.2014, 12:30
В принципе, я уже понял как это делается. 
Спасибо.

Автор: tzirechnoy 9.7.2014, 13:48
Цитата
И когда это tcpdump научился писать txt файлы вместо pcap ?


Одновременно со своим появляением на свет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)