[ 0 Кол-во товаров в корзине стоимостью 0,00 грн. ]  
28/03/2024 | Хитов: 11036069  
  Каталог » Программы » Программы in-world » Анализатор log-файлов программы iptraf v. 2.7 Мои данные  |  Корзина  |  Оформить заказ   
Разделы
Программы (14)
  Модули Joomla (2)
  Модули osCommerce (7)
  Программы in-world (5)
Полный список товаров
Информация
Наши контакты
Средства оплаты
Уведомление о рисках при использовании WebMoney
Прайс-лист (Excel)
Прайс-лист (HTML)
Поиск
 
Введите слово для поиска.
Расширенный поиск
Статьи
Новые статьи (0)
Все статьи (8)
Jablotron (7)
osCommerce (1)
Новинки Перейти
Joomla OneOnOne Live Chat Module
Joomla OneOnOne Live Chat Module
101,00 грн.
Анализатор 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:
Пароль:
Регистрация
Корзина Перейти
Корзина пуста