Blog archive - як рахувати трафік на freebsd

Крім того, необхідно виконати наступні умови:

Перше, що доведеться зробити - це встановити MySQL і створити базу даних, в якій будуть знаходитися таблиці, використовувані в процесі білінгу. Нехай назва бази даних для цих цілей буде ipacc. Далі - встановити пакет trafd. У FreeBSD програма trafd знаходиться в портах, що робить установку досить простий:







Фактично, trafd являє собою набір декількох програм, але нам потрібні наступні утиліти:

  • trafd - демон збору трафіку
  • trafdump / trafsave - програми для запису зібраного трафіку демоном trafd в бінарний формат
  • traflog - програма для перетворення бінарних файлів трафіку в тестовий формат

Крок 1. Запуск демона trafd

Демон trafd повинен запускатися після завантаження системи. Для цього створимо файл /usr/local/etc/rc.d/trafd.sh:

де, -i ed0 вказує на ім'я мережевого адаптера, з якого буде збирати трафік; ключ -p вказує на те, що переводити мережевий адаптер в promiscuous mode не треба (за замовчуванням, демон trafd переводить мережевий адаптер в promiscuous mode); ключ -r буде вказувати на спробу відновлення даних з існуючого бінарного файлу при рестарт демона. Якщо технічне завдання вказує на підрахунок трафіку з декількох мережевих інтерфейсів одночасно, то можна запустити одночасно кілька примірників демона trafd з файлу /usr/local/etc/rc.d/trafd.sh, наприклад:

Крок 2. Створення бінарних файлів трафіку

Демон trafd зберігає інформацію про зібраний трафіку в оперативній пам'яті, тому йому необхідно періодично посилати сигнал для «скидання» накопичених даних в тимчасовий файл щоб в разі перезавантаження комп'ютера відновити накопичений трафік з тимчасового файлу (ключ -r демона trafd). Робити це будемо з скрипта /usr/local/etc/traffic/save_tmp.sh.







Раз на добу потрібно записувати накопичений трафік демоном trafd в бінарні файли /usr/local/var/trafd/trafd.ed0(1,2) за допомогою програми trafsave викликаючи її з скрипта /usr/local/etc/traffic/periodic.sh:

Отже, скрипт save_tmp.sh будемо викликати раз в 15 хвилин, скрипт periodic.sh викликаємо в кінці кожної доби:

Відразу після настання нової доби, бінарні файли трафіку /usr/local/var/trafd/trafd.ed0(1,2) необхідно зберегти в надійне місце. Таким місцем для нас буде директорія / usr / local / var / traffic. Для копіювання бінарних файлів трафіку за минулу добу напишемо наступний скрипт, і збережемо його під ім'ям /usr/local/etc/traffic/daily.sh:

Крок 4. Перетворення бінарних файлів трафіку в текстовий вигляд

Отже, після 3-го кроку, ми маємо бінарні файли трафіку за минулу добу, які необхідно починати обробляти. Для початку їх потрібно перетворити з бінарного формату в текстовий вигляд. Для цих цілей існує програма traflog, яку будемо викликати з скрипта /usr/local/etc/traffic/expandplain.sh:

Як ви вже напевно здогадалися, текстові файли трафіку будуть складати в директорію / usr / local / var / traffic_plain. Виклик скрипта expandplain.sh також відбуватиметься за розкладом.

Текстовий формат файлу трафіку досить простий для сприйняття його людиною:

Крок 5. Розміщуємо вчорашній трафік в MySQL базу даних

Трафік за минулу добу необхідно загнати з таблицю MySQL бази даних для того, щоб з ним було легше працювати. Вчорашній трафік помістимо в таблицю під назвою yesterday наступного формату:

Для обробки текстових файлів трафіку будемо використовувати наступний скрипт (назвемо його /usr/local/etc/traffic/db_step1.pl):

Цілком природно, що і цей скрипт буде викликатися по крону:

Крок 6 (останній). Обробка і підсумовування вчорашнього трафіку

Нижче наведений скрипт /usr/local/etc/traffic/db_step2.pl виробляє калькуляцію підсумку за минулу добу:

Куди вставити запуск цього скрипта, я, сподіваюся, ви вже здогадалися 😉

Завантажити набір скриптів з цієї статті ipacc_trafd.tgz (1,5кбайт)







Схожі статті