Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Сетевые технологии > Как хранить статистику трафика? |
Автор: konshyn 10.6.2014, 11:33 |
Добрый день. Собственно сам предмет обсуждения: как хранить статистику трафика? Где хранить? Что входит в статистику: количество пакетов в период времени 1 сек (входящих/исходящих), кол-во байт в единицу времени 1 сек (входящий/исходящий). Есть 6 различных сетевых интерфейсов, для которых будет храниться статистика. По этим данных нужно будет рисовать график на web-страничке. Как это делается? Как правильно сделать и почему? |
Автор: konshyn 10.6.2014, 13:28 | ||
Не совсем. Есть и протокол, и задержки пакетов, и потери. Для каждой задержки должна быть своя запись. Для каждого протокола тоже отдельная запись. За прошлые сутки вышло 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>>Не могу понять, как мне получать данные сколько байт было отправлено и > получено на интерфейсах</quote> Взять исходники, например, collectd или netsaint и посмотреть, как там сделано. Ну, или ifconfig. Но лучшэ -- collectd. И вообще, этих мониторилок -- дофига, если тебе надо только сколько байт отправлено и получено -- то зачем писать свою? <quote>>и как мне организовать передачу данных с моего приложения (написано на > с++) в базу данных rr?</quote> Так python или C++? В любом случае, для python поиск по rrdtool python API выдаёт какие-то довольно вменяемые библиотеки, а для C -- в комплекте есть librrd, в котором из rrd.h можно понять смысл всяких rrd_update_r(). |
Автор: konshyn 23.6.2014, 10:40 |
приложение на с++, а графики собирался через питон делать. |
Автор: 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 |
Чем рисовать тогда графики? rrdtool? Добавлено через 18 секунд Имею в виду, что посоветовать можешь? |
Автор: tzirechnoy 23.6.2014, 17:27 | ||
Основной метод рисования графиков в 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 | ||||
дам 12 строк, и единственная понятная - это первая строка) там есть строчка
что она значит? |
Автор: tzirechnoy 8.7.2014, 17:44 |
Запусти -- результат должэн быть очевиден, по образу и подобию результат пишы на чём угодно. Впрочем, непосредственно на веб-сайте cacti есть примеры скриптов в совершэнно разных стилях, выбирай на вкус как говорится. PS Да, =~ -- это перловский оператор сопоставления с регулярным выражэнием. perldoc perlre, если интересно. |
Автор: _zorn_ 9.7.2014, 05:57 | ||
Знакомься, это регекспы ![]() Первая реакция на них такая же была ![]() Добавлено @ 06:05
Зачем ? Это все реализовано в какти через snmp. Стандартные OIDы ifTable. И когда это tcpdump научился писать txt файлы вместо pcap ? |
Автор: konshyn 9.7.2014, 10:38 | ||||||
у меня cacti на самой машине стоит, которую я мониторю. и захожу на него через web-сервер.
попридумывают всего, а ты сиди и разбирайся:( pcap был написан специально для tcpdump. логично, что tcpdump может скидывать информацию о пакетах в файлы, как pcap. но все, что мне нужно - это график по одной переменной. у меня мой сетевой демон собирает статистику, пока делает свои грязные дела, в три переменные - min,max,avg. и все, что нужно - это график по переменной avg и внизу две строчки под графиком для min и max. И пока что мне нужно понять, куда и как часто скидывать эти три переменные, чтобы мой скрипт для cacti брал эти числа и отдавал их на рисование графика. Добавлено через 3 минуты и 26 секунд
Хотя вроде он и локально по 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 | ||
Одновременно со своим появляением на свет. |