[ 0 Кол-во товаров в корзине стоимостью 0,00 грн. ]  
02/12/2024 | Хитов: 38198261  
  Каталог » Программы » Программы in-world » Анализатор log-файлов программы iptraf v. 2.7 Мои данные  |  Корзина  |  Оформить заказ   
Разделы
Программы (14)
  Модули Joomla (2)
  Модули osCommerce (7)
  Программы in-world (5)
Полный список товаров
Информация
Наши контакты
Средства оплаты
Уведомление о рисках при использовании WebMoney
Прайс-лист (Excel)
Прайс-лист (HTML)
Поиск
 
Введите слово для поиска.
Расширенный поиск
Статьи
Новые статьи (0)
Все статьи (8)
Jablotron (7)
osCommerce (1)
Новинки Перейти
Файл-менеджер (после хотфикса 219)
Файл-менеджер (после хотфикса 219)
1,01 грн.
Анализатор log-файлов программы iptraf v. 2.7 1,01 грн.
Предыдущий товар Товар 1 из 5
категории Программы in-world
 Следующий товар
Анализатор log-файлов программы iptraf v. 2.7
Увеличить

Техническое задание

на создание средства анализа log-файлов программы iptraf v. 2.7


Maxim V. Kryzhny (kry@mg.dp.ua), 2003

Аннотация

Техническое задание (далее ТЗ) составлено с целью описания требований к созданию средства анализа log-файлов программы iptraf версии 2.7 на предмет подсчета исходящего/входящего траффика в анализируемом (заданном) периоде. Далее средство условно именуется как "ipta". При присвоении окончательного наименования учесть, что в названии не должно быть более 4 символов.

1 Что есть

1.1 iptraf

Программа iptraf есть программное обеспечение сетевого online мониторинга и ведения статистики работы сетевых интерфейсов. Кроме того, она поддерживает фильтры на уровне сетевых протоколов.

В целях настоящего ТЗ iptraf рассматривается как средство накопления статистики о работе сетевых интрфейсов локальной сети с акцентом на сбор статистики относительно входящего (исходящего) траффика в операционной системе Red Hat Linux 7.3 Сама программа iptraf была полученна с сайта разработчика в виде исходных текстов (тарболл) и собрана на машине пользователя.

1.2 iptraf - текущая конфигурация пользователя

* Перодичность записи в лог - 1 минута.

* Отслеживаемые сетевые интрфейсы - eth0.

* Фильтры - отслеживаются и принимаются к учету пакеты любого сетевого протокола, а TCP&UDP: входящие - "откуда угодно, с любого порта на мой IP и мой любой порт"; исходящие "куда угодно, на любой порт с моего IP-адреса и любого моего порта". Таким образом например броадкаст-пакеты, генерируемые прочими станциями в сети к учету не принимаются.
* Детальная статистика интрефейса: запись в отдедьный лог-файл суммарного объема входящего и исходящего траффика в разрезе сетевых протоколов на указанном сетевом интерфейсе по всем портам - детальная статистика сетевого интерфейса (в теминологии разработчика iptraf).
При запуске программы по команде:

$ /usr/local/bin/iptraf -d eth0 -L /var/log/iptraf/iface_stats_detailed-eth0.log -B

iptraf ведет детальную статистику сетевого интерфейса eth0 (опция "-d eth0") и записывает ее в указанный пользователем файл /var/log/iptraf/iface_stats_detailed-eth0.log (опция "-L "имя лог-файла"). Кроме того, указав опцию "-B" iptraf переходит в фоновый режим работы и уже не требует вмешательства пользователя.

Вышеприведенная команда выполняется при каждой загрузке системы путем включения ее в файл /etc/rc.d/rc.local или создания отдельного файла в /etc/init.d, непосредственно после поднятия соответствующего сетевого интерефейса и до загрузки программ генерирующих траффик.

Пример генерируемого лог-файла:

Sat Jan 18 15:13:24 2003; ******** Detailed interface statistics started ********

** Detailed statistics for interface eth0, generated Sat Jan 18 15:14:24 2003
Total: 45 packets, 5981 bytes
(incoming: 0 packets, 0 bytes; outgoing: 45 packets, 5981 bytes)
IP: 45 packets, 5351 bytes
(incoming: 0 packets, 0 bytes; outgoing: 45 packets, 5351 bytes)
TCP: 0 packets, 0 bytes
(incoming: 0 packets, 0 bytes; outgoing: 0 packets, 0 bytes)
UDP: 37 packets, 4679 bytes
(incoming: 0 packets, 0 bytes; outgoing: 37 packets, 4679 bytes)
ICMP: 8 packets, 672 bytes
(incoming: 0 packets, 0 bytes; outgoing: 8 packets, 672 bytes)
Other IP: 0 packets, 0 bytes
(incoming: 0 packets, 0 bytes; outgoing: 0 packets, 0 bytes)
Non-IP: 0 packets, 0 bytes
(incoming: 0 packets, 0 bytes; outgoing: 0 packets, 0 bytes)
Broadcast: 0 packets, 0 bytes

Average rates:
0.08 kbytes/s, 0.75 packets/s
Incoming: 0.00 kbytes/s, 0.00 packets/s
Outgoing: 0.08 kbytes/s, 0.75 packets/s
Peak total activity: 0.37 kbytes/s, 3.20 packets/s
Peak incoming rate: 0.00 kbytes/s, 0.00 packets/s
Peak outgoing rate: 0.37 kbytes/s, 3.20 packets/s

IP checksum errors: 0

Running time: 60 seconds

*** Detailed statistics for interface eth0, generated Sat Jan 18 15:15:24 2003

Total: 45 packets, 5981 bytes
(incoming: 0 packets, 0 bytes; outgoing: 45 packets, 5981 bytes)
.....


и так далее каждые 60 секунд.

* При каждом запуске (при загрузке системы) в лог-файле формируется новая строка типа "Sat Jan 18 15:13:24 2003; ** Detailed interface statistics started **"

* В том случае, если логирование производилось в то время, когда работает интерактивный монитор программы iptraf, то при завершении работы iptraf в логе формируется строка вида "Sat Jan 18 16:17:25 2003; ** Detailed interface statistics stoped**"

* При логировании информации в обычном фоновом режиме (опция "-В") при остановке работы программы (например перегрузка, выключение системы, killall iptraf, и т.п) никаких дополнительных строк не формируется и последней непустой строкой в лог-файле до нового запуска программы будет строка вида "Running time: 720 seconds"

* В том случае, если логирование было завершенно до истечения 60 секунд от его начала, последней строкой в лог-файле будет строка вида "Sat Jan 18 15:13:24 2003; ** Detailed interface statistics started **", а после возобновления - аналогичная строка.

* Мне неизвестны случаи неполного вывода в файл блока информации о логировании последнего минутного интервала. Образец оригинального лог-файла прилагается.

* Ротация лог-файлов - осуществляется средствами logrotate (версия 3.6.4). Ежедневно оценивается размер файла и если его размер достигает 5000 kb, он переименовывается, сжимается, а в распоряжение iptraf, после его перезапуска, предоставляется новый пустой файл. Настройки процесса ротации для этих файлов в /etc/logrotate.conf выглядят так:

/var/log/iptraf/iface_stats_detailed-eth0.log {
daily
compress
create
rotate 70
missingok
size=5000k
}


Таким образом, большая часть лог-файлов будет находится в заархивированном средствами gzip виде. Следует это учесть.

2 Что надо


Программу (или скрипт) написать, которая позволяет выводить в файл или стандартный вывод отчеты на основании анализа информации из вышеприведенных файлов.

2.1 ТТП команды

Программа должна:

1. Запускаться в командной строке путем непосредственного вызова, т.е. без добавления указаний относительно интерпретатора (perl, phyton & etc). Исполняемый файл (или ссылка) по умолчанию должен находится в директории /usr/local/bin/.

2. Воспринимать параметры из командной строки и частично файла конфигруации iptarc (стандартное расположение - /usr/local/etc/). При наличии противоречий между параметрами командной строки и конфиг-файла, параметры конфиг-файла игнорировать. Порядок набора параметров командной строки - произвольный.
3. Команда: ipta
4. Опции (ключи) команды и их дизайн:

* -o file - выводить информацию в file. При невозможности создания файла вывести соответствующее сообщение об ошибке, анализ и формирование отчета не производить. При отсутствии такого ключа - отчет выводить на стандартный вывод;

* -fYYMMDDhhmm - выбрать накопленную в логах информацию начиная с момента времени YYMMDDhhmm (timestamp) включительно. В случае отсутствия такого timestamp выбрать информацию начиная с первого более позднего timestamp включительно. Допускается сокращенное указание timestamp вида YYMMDDhh, YYMMDD, YYMM, YY. В этом случае принимать информацию начиная от наиболее раннего timestamp, имеющего в своем составе указанное. Значение по умолчанию - первое значение текущих суток;

* -lYYMMDDhhmm - выбрать накопленную в логах информацию заканчивая моментом времени  YYMMDDhhmm включительно. В случае отсутствия такого timestamp выбрать информацию начиная с первого более раннего timestamp включительно. Допускается сокращенное указание timestamp вида YYMMDDhh, YYMMDD, YYMM, YY. В этом случае принимать информацию заканчивая наиболее поздним значением timestamp, имеющего в своем составе указанное. Значение по умолчанию - момент ввода команды;

* в случае ввода нелогичных периодов (задом наперед, часы в 25-тиричном счислении, рання дата находится в будущем относительно текущего системного времени и т.п.) - выдать соотвествующе сообщение об ошибке;

* --year YY - выбрать накопленную в логах информацию за календарный год YY текущего столетия. Значения YY цифровые без ведущего нуля. Без указания значения YY - выбирается информация с начала текущего года по момент запуска команды. При указании опций -t и (или) -l - опция --year игнорируется. В случае полного отсутствия данных удовлетворяющих критерию - вывести отчет вида "In the required period YYYY the data are absent". При указании года из будущего выдать соответствующее сообщение об ошибке;

* --month MM - выбрать накопленную в логах информацию за календарный месяц MM текущего года. Значения ММ цифровые без ведущего нуля. Без указания значения ММ - выбирается информация с начала текущего месяца по момент запуска команды. При указании опций -t и (или) -l - опция --month игнорируется. В случае полного отсутствия данных удовлетворяющих критерию - вывести отчет вида "In the required period YYMM the data are absent" При указании месяца из будущего выдать соответствующее сообщение об ошибке;

* -d dir1 dir2 ... - указать месторасположние лог-файлов iptraf в системе. По умолчанию применяется директорий /var/log/iptraf/ или значение из конфигруционного файла. В конфиг-файле значение может быть задано как;
---
# To make search of files in a directory dir

dir /var/log/iptraf /var/log/ipta /var/log/anywhere
---

* -m mask1 mask2 ... - производить анализ файлов из директория dir по маске mask. В нашем случае mask будет выглядеть как iface_stats_detailed-eth0* В случае отсутствия файлов, удовлетворяющих маске, вывести сообщение об ошибке. По умолчанию применяется маска из конфигурационного файла, а при его отсуствии программа выводит соответствущее сообщение об ошибке. В конфиг-файле маска может быть задана как:
---
# Mask for analyzed files from a directory dir
mask iface_stats_detailed-eth0* Everythi??
---

* - указать конфигурационный файл иной нежели по умолчанию.

5. Учесть, что команда будет исполнятся исключительно от имени супер-пользователя или посредством утилиты sudo.
6. Команда будет исполнятся, как правило, с помощью cron. Т.е. необходимо предусмотреть выдачу стандартных кодов завершения, позволяющих cron оценивать результаты выполнения и, в случае ошибок, наравлять соотвествующее уведомление администратору (и исполнять соотвествующую запись в своем лог-файле).

7. Возможно изменение дизайна конфиг-файла и (или) опций комндной строки на усмотрение разработчика, но по согласованию с клиентом.

2.2 Форма отчета

1. Форма отчета по результам анализа лог-файлов аналогична форме, в которой ведется сам лог-файл. Формат данных - plain text. Отличия в шапке отчета. Пример вывода в файл ~/rep0212.txt при нормальном завершении команды запущенной со следующими параметрами:

$ ipta -l0212312400 -o ~/rep0212.txt -f0212010000 -d /var/log/iptraflogfiles -m if_st_det*

---
________________________________________________________
Statistics about generated incoming and outgoing traffic
Station -
yan3.mg.net.ua 
Period from 00h 00min Dec01, 2002 for 24h 00min Dec31, 2002
________________________________________________________

Total:45 packets, 5981 bytes
(incoming: 0 packets, 0 bytes; outgoing: 45 packets, 5981 bytes)
IP: 45 packets, 5351 bytes
(incoming: 0 packets, 0 bytes; outgoing: 45 packets, 5351 bytes)
TCP: 0 packets, 0 bytes
(incoming: 0 packets, 0 bytes; outgoing: 0 packets, 0 bytes)
UDP: 37 packets, 4679 bytes
(incoming: 0 packets, 0 bytes; outgoing: 37 packets, 4679 bytes)
ICMP: 8 packets, 672 bytes
(incoming: 0 packets, 0 bytes; outgoing: 8 packets, 672 bytes)
Other IP: 0 packets, 0 bytes
(incoming: 0 packets, 0 bytes; outgoing: 0 packets, 0 bytes)
Non-IP: 0 packets, 0 bytes
(incoming: 0 packets, 0 bytes; outgoing: 0 packets, 0 bytes)
Broadcast: 0 packets, 0 bytes

 IP checksum errors: 0

The first timestamp in iptraf logfiles of the period - 08h 37min Dec01, 2002
Last timestamp in iptraf logfiles of the period - 23 h 12 min Dec31, 2002
TOT
of the iptraf in the given period - 412h 35min 12sec
__________________________________________________________________
This report is created by the ipta (tool for analysis logfiles of
the iptarf)
at 17h 18min of Dec18, 2003
Copyright **** The license **** BlaBlaBla about money&women, но не более 2-х строк pls
__________________________________________________________________


2. В вышеприведенном отчете:

* все выделения bold font мои и только для пояснений здесь. В реальном отчете - никаких признаков форматирования;

* значение "yan3.mg.net.ua" есть вывод команды host -f;

* значение "Period" есть переформатированное представление периода, заданного в командной строке;

* Для рассмотрения остальных значений введем понятия "блок". Под блоком будем понимать часть лог-файла, содержащего статистику за период равный установленному для сброса информации в лог-файл. iptraf позволяет устанавливать минимальный период времени для сброса информации в лог-файл равный 1 минуте. Я применяю именно такую периодичность, т.е. лог-файл обнавляется ежеминутно. Таким образом лог-файл представляет из себя последовательность блоков статистики, где каждый последующий блок есть сумма соответствующих значений блока предыдущего и вновь созданного. Такое "накопление результата" проводится до тех пор пока не завершится сеанс работы iptraf. С началом нового сеанса "накопление результата" начинается по новой, т.е. с ноля. В этом случае итоговым блоком сеанса будет тот блок, после формирования которого сеанс работы iptraf завершен. Итоговым блоком заданного периода будет тот блок, в котором дата в строке вида "** Detailed statistics for interface eth0, generated Sat Jan 18 15:14:24 2003" представляет последнюю более раннюю или равную дате из параметра -l, или последнюю более раннюю или равную дате на момент ввода команды. Соответственно начальным блоком заданного периода будет тот блок, в котором дата в строке вида "** Detailed statistics for interface eth0, generated Sat Jan 18 15:14:24 2003" представляет наиболее раннюю или равную дате из параметра -f. Надеюсь, все понятно :)

* значение "first timestamp" есть переформатированное представление даты из строки вида "** Detailed statistics for interface eth0, generated Sat Jan 18 15:14:24 2003" начального блока заданного периода;

* значение "Last timestamp" есть переформатированное представление даты из строки вида "** Detailed statistics for interface eth0, generated Sat Jan 18 15:14:24 2003" итогового блока заданного периода;

* значение TOT (total opereting time) есть сумма значений поля "Running time" итоговых блоков сеансов в течение заданного периода за вычетом соотвествущего значения итогового блока периода предыдущего заданному и увеличенная на значение итогового блока заданного периода;

* значения полей IP, TCP, UDP, ICMP, Other IP, Non-IP, Broadcast есть сумма значений соответствующих полей итоговых блоков сеансов в течение заданного периода за вычетом значений соотвествующих полей итогового блока периода предыдущего заданному и увеличенные на значения соответствующих полей итогового блока заданного периода;

* значение поля Total есть сумма соответствующих значений полей IP, TCP, UDP, ICMP, Other IP, Non-IP, Broadcast настоящего отчета.

* значение поля IP checksum errors есть сумма значений соответствующего поля   итоговых блоков сеансов в течение заданного периода за вычетом соотвествущего значения итогового блока периода предыдущего заданному и увеличенная на значение итогового блока заданного периода;

* значение поля at есть дата завершения анализа лог-файлов программы iptraf.

2.3 Заключение

1. При розработке программы (скрипта) не предъявляется каких-либо требований к языку программирования.

2. Следует учесть, что ввиду того, что iptraf ведет логирование использования траффика и в других вариантах представления, со строны клиента впоследствии возможны дополнительные обращения за расширением функциональности программы (по отдельному соглашению).




Maxim V. Kryzhny (kry@mg.dp.ua)
20/1/3



Доступные изменения:
Загрузка:
Товар был добавлен в наш каталог 26 марта 2010 г.
Отзывы Количество:
Вход
E-Mail:
Пароль:
Регистрация
Корзина Перейти
Корзина пуста