Установка и настройка системы подсчета трафика Ipcad + Flow-tools + MySQL

Введение

Довольно часто на Linux форумах задаются вопросы по поводу систем подсчета трафика.

В данной статье подробно описана установка и настройка системы учета трафика проходящего через сетевой интерфейс компьютера с ОС Linux.

Как это работает

На компьютере трафик с сетевого интерфейса которого мы собираемся снимать статистику необходимо установить программу «сенсор» - задача которого будет состоять в том, чтобы производить захват сетевых пакетов проходящих через необходимый сетевой интерфейс и обеспечить дальнейшую передачу этой информации программе «коллектору». Коллектор - занимается тем, что собирает данные, которые предоставляются ему сенсорами и сохраняет их в хранилище (файлы, база данных и т.д.) для дальнейшей обработки.

Для определенности предположим:

Установка и настройка сенсора

На данный момент существует несколько решений позволяющих производить захват сетевых пакетов проходящих через сетевой интерфейс. В настоящем руководстве приводится описание установки и настройки ipcad и softflowd.

Я являюсь приверженцем RPM Based дистрибутивов (RHEL, Fedora, ASPLinux и т.д.) поэтому приведу описание установки и настройки этих программ для этих дистрибутивов.

ipcad

Домашняя страница проекта http://ipcad.sourceforge.net/.

Тем пользователям у кого на шлюзе установлен дистрибутив ASP Linux достаточно установить пакет ipcad (он входит в стандартную поставку дистрибутива) с помощью yum:

или с помощью команды rpm выполнив:

из каталога содержащего rpm пакеты дистрибутива.

Пользователям других дистрибутивов основанных на RPM пакетах можно посоветовать пересобрать пакет ipcad из пакета с исходными текстами ipcad-*.src.rpm взять который можно с ftp сервера ftp://ftp.asplinux.ru.

Пересборка пакета ipcad

Скачайте src.rpm пакета ipcad :

Из каталога в который Вы скачали пакет ipcad выполните:

Установка

После пересборки пакета установите его командой:

Настройка ipcad

Отредактируйте файл /etc/ipcad.conf чтобы его содержание было следующим:

Тем самым мы сказали сенсору чтобы он захватывал пакеты приходящие/проходящие через сетевой интерфейс eth1 Linux сервера и отдавал эту информацию коллектору который будет «ловить» эту информацию на интерфейсе 127.0.0.1 порту 9990.

Добавьте ipcad в автоматический запуск при старте системы:

Softflowd

Домашняя страница проекта http://www.mindrot.org/projects/softflowd/

Последняя версия пакета на момент написания статьи была 0.9.8.

Сборка RPM пакета

Скачайте исходные тексты с сайта проекта:

Скопируйте исходные тексты в каталог /usr/src/asplinux/SOURCES/:

Из архива softflowd-0.9.8.tar.gz извлеките 2 файла softflowd.init, softflowd.sysconfig они должны находиться в каталоге /usr/src/asplinux/SOURCES/, затем выполните команду:

Собранный RPM пакет будет находиться в каталоге /usr/src/asplinux/RPMS/i386/

Установка

Установите собранный пакет командой:

Настройка softflowd

Перейдите в каталог /etc/sysconfig отредактируйте файл softflowd сделав его содержимое таким:

Для запуска softflowd выполните:

Добавьте softflowd в автоматический запуск при старте системы:

Настройка и запуск коллектора flow-capture

Коллектор flow-capture входит в состав пакета flow-tools страница проекта которого http://www.splintered.net/sw/flow-tools/.

С страницы проекта можно уже собранные RPM пакеты flow-tools а также пакеты с исходным кодом src.rpm из которых Вы можете пересобрать бинарный RPM пакет для своего дистрибутива.

Для запуска коллектора нам предварительно необходимо создать каталог в котором flow-capture будет сохранять данные статистики:

Теперь нам нужно запустить flow-capture для этого выполните:

Создадим rc.d скрипт чтобы управлять работой (запуск, остановка, перезапуск, определение состояния) flow-capture можно было с помощью стандартных средств. В каталоге /etc/rc.d/init.d создайте файл с именем flow-capture следующего содержания:

Добавьте flow-capture в автоматический запуск при старте системы:

Работа с данными статистики используя утилиты из пакета flow-tools

Итак данные статистики собираются, и находятся в каталоге /var/flow/flow-data. Flow-capture хранит эти данные в своем формате который не посмотреть в обычном редакторе. В пакет flow-tools входят утилиты для обработки таких данных.

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

Для решения этой задачи нам необходимо: 1. Создать файл mynet.acl следующего содержания:

2. Создать файл febrary.sh следующего содержания:

3. Сделайте файл febrary.sh исполняемым

4. Запустите файл febrary.sh в результате выполнения данного скрипта должен создаться обычный текстовый файл febrary-input.stat содержимое которого и есть необходимая Нам статистика. В данном файле будет содержаться 4 колонки разделенных друг от друга пробелами:

Теперь попробуем разобраться в том, что же мы сделали.

Мы создали файл с описанием сети статистику по трафику которой мы хотим получить.

Обратите внимание, что сеть задается в инвертированном виде т.е. вместо 255.255.255.0 мы задали 0.0.0.255.

Затем в скрипте мы последовательно запускаем утилиты из пакета flow-tools в конвейере т.е. Результат выполнения предыдущей команды передается на обработку следующей.

Первой командой мы выполнили flow-cat /var/flow/flow-data/2007/2007-02 тем самым мы указали какой каталог со статистикой мы хотим использовать для обработки. Утилита flow-cat сама разберется какие подкаталоги находятся в каталоге заданном параметром, и возьмет оттуда все файлы со статистикой для последующей обработки.

Результат работы команды flow-cat мы передаем на дальнейшую обработку команде flow-filter которой в качестве параметров указываем откуда взять информацию о интересующих нас сетях, и какого рода трафик нас интересует -fflow.acl -D mynetwork, если бы Нас интересовал исходящий трафик необходимо было бы вместо -D mynetwork указать -S mynetwork.

Уже полученный результат отдается на обработку утилите flow-stat которой в свою очередь мы сообщаем какие поля из полученной статистики нас интересуют, и какого рода сортировку в полученных данных необходимо выполнить flow-stat -f9 -S2>febrary-input.stat так как мы указали утилите flow-filter, что Нас интересует входящий трафик, то произведем выборку утилитой flow-stat по адресу назначения (-f9) с сортировкой по 3 полю (нумерация полей начинается с 0) т.е. полученный результат сортируется по количеству байт т.е. По объему потребленного трафика и результат будет записан в файл febrary-input.stat.

Таким образом выполняя последовательность команд flow-cat, flow-filter, flow-stat с различными параметрами мы легко можем получать статистику потребления трафика в интересующем нас виде. Также полезными для получения статистики могут оказаться утилиты flow-print, flow-report. Более подробную информацию о возможных параметрах утилит пакета flow-tools смотрите соответствующие man страницы.


Может распространяться свободно при указании авторства.

Автор: Фролов Денис

Articles/DenisFrolov/IpcadFlowToolsMySQL (last edited 2008-11-10 15:12:07 by DenisFrolov)