| 
 
 
   |   |  www.lissyara.su—> статьи—> FreeBSD—> WWW—> mod_accounting
 
 Подсчёт траффика apache - модуль mod_accounting
Автор: lissyara.
 
       Встала интересная проблема - хотелось посчитать траффик, который генерит мой WWW-сервер apache. Но, собственно проблема, заключалась в том, что этот же сервер служил шлюзом в локалке, и через него по тому же 80 порту шёл траффик на пользователей локалки... Да и виртуальных доменов было несколько, и хотелось статистику по отдельности. Вначале, как обычно, хотел пойти через одно место - парсить логи - shell, perl, awk & etc - но порывшись в портах нашёл модуль mod_accounting специально под это заточенный.
 
		
| /usr/home/lissyara/>cd /usr/ports
/usr/ports/>make search name='mod_accounting'
Port:   mod_accounting-0.5_4
Path:   /usr/ports/www/mod_accounting
Info:   An Apache module that records traffic statistics into a database
Maint:  apache@FreeBSD.org
B-deps: apache-1.3.34_4 expat-2.0.0 gettext-0.14.5_1 ldconfig_compat-1.0_5
libgnugetopt-1.2 libiconv-1.9.2_1 mysql-client-4.1.16_1
postgresql-client-7.4.11 rc_subr-1.31_1 readline-5.0
R-deps: apache-1.3.34_4 expat-2.0.0 gettext-0.14.5_1 ldconfig_compat-1.0_5
libgnugetopt-1.2 libiconv-1.9.2_1 mysql-client-4.1.16_1
postgresql-client-7.4.11 rc_subr-1.31_1 readline-5.0
WWW:    http://mod-acct.sourceforge.net
/usr/ports/>cd /usr/ports/www/mod_accounting
/usr/ports/www/mod_accounting/>make && make install && make clean
 |  Tут снова наступил облом... Он тащщил за собой PostgreSQL. Но у меня-то MySQL! Ни опции типа WITHOUT_PGSQL=yes, ни -DWITHOUT_PGSQL=YES не помогали... Логично рассудив, что порт кривой, полез рихтовать Makefile - надо найти такую секцию в нём:
 
		
| 
.if defined(WITHOUT_PGSQL)
MAKE_ARGS+=     WITHOUT_PGSQL=YES
.else
USE_PGSQL=     YES
.endif
 |  и заменить на такую:
 
		
| 
.if defined(WITHOUT_PGSQL)
MAKE_ARGS+=     WITHOUT_PGSQL=YES
.else
#USE_PGSQL=     YES
MAKE_ARGS+=     WITHOUT_PGSQL=YES
.endif
 |  После этого он прекрасно собрался без PostgreSQL. После чего идём редактировать конфиг апача - /usr/local/etc/apache/httpd.conf, кстати, сам модуль в нём уже раскомментирован - довольно необычно...
 
		
| 
<IfModule mod_accounting.c>
# конфиг модуля `mod_accounting`
# кверя к БД на update/insert Переменные внутри квери:
# %s - послано, байт
# %r - принято, байт
# %h - имя виртуального хоста
# %u - имя пользователя (если авторизовался)
# P.S. В версии 0.6 гораздо больше опций. У меня старая - 0.5.
# В варианте, который дан в документации, поля `время` нету,
# там просто предлагается считать тотальный траффик по
# виртуальным хостам. Может оно и удобней, для провайдеров, но
# я-то делаю для своего сервера, и мне нужна его статистика -
# желательно поточнее, чтобы можно было посторить графики
# загруженности сервера.
AccountingQueryFmt      "INSERT INTO `apache_traff` (`vremya`, \
                        `bytes_in`, `bytes_out`, `host`) VALUES \
                        (UNIX_TIMESTAMP(), %r, %s, LOWER('%h'))"
# БД в которую будет складываться статистика
AccountingDatabase      apache_traffic
# Тип ДБ - поддерживаются два типа - postgres и mysql
AccountingDatabaseDriver                mysql
# хост и порт БД
AccountingDBHost        localhost       3306
# Пользователь и пароль для соединения с БД
AccountingLoginInfo     lissyara        main_password
# Cколько секунд ждать перед запросом к MySQL на обновление таблицы
# (надо для того, чтобы не ломился на каждый запрос в БД - это
# непроизводительно, гораздо лучше, когда накопит немного статистики,
# а затем скопом её в БД запхнёт.) Мне часто не надо, потому поставил
# раз в минуту. Надо чаще - меняйте
AccountingTimedUpdates  60
# Хосты, траффик с/на которые считать не надо (Вам же не надо знать,
# что Вы нагенерили своему сайту 100 мег траффика в месяц, а все
# остальные посетители 99 мег :) - абидно, однако :)). Можно запихать
# отдельные хосты (192.168.29.50), сети (192.168.50.0/255.255.255.0)
# или же диапазоны адресов (192.168.80.10-192.168.80.254)
AccountingIgnoreHosts   192.168.20.141 192.168.30.0/255.255.255.0
</IfModule>
 |  После чего я поторопился перезапустить апач:
 
		
| 
/usr/local/etc/apache/>/usr/local/etc/rc.d/apache.sh restart
Stopping apache.
Waiting for PIDS: 32302.
Starting apache.
/usr/local/etc/apache/>
 |  За что получил в /var/log/httpd-error.log такие ошибки:
 
	
		| [Fri Feb  3 17:29:39 2006] [error] Accounting: couldn't setup the database link!
 [Fri Feb  3 17:29:41 2006] [error] Accounting: couldn't setup the database link!
 
 |  
Забыл создать таблицы... Создал:
 
		
| 
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl1
-- http://www.phpmyadmin.net
-- 
-- Хост: localhost
-- Время создания: Фев 03 2006 г., 17:35
-- Версия сервера: 4.0.25
-- Версия PHP: 4.4.1
-- 
-- БД: `apache_traffic`
-- 
-- --------------------------------------------------------
-- 
-- Структура таблицы `apache_traff`
-- 
CREATE TABLE `apache_traff` (
  `vremya` int(32) NOT NULL default '0',
  `bytes_in` int(12) NOT NULL default '0',
  `bytes_out` int(12) NOT NULL default '0',
  `host` char(255) NOT NULL default '',
  KEY `vremya` (`vremya`)
) TYPE=MyISAM COMMENT='Траффик апача';
-- 
-- Дамп данных таблицы `apache_traff`
-- 
 |  Тут же в таблицы упали логи за те 5 минут, что апач работал без таблицы. Даже перезапускать не пришлось :) Ну, а как выборку делать - сами догадаетесь - если понадобился этот модуль, то уж запрос к MySQL напишете :)
 
 
 
				
					| размещено: 2006-02-03,последнее обновление: 2007-09-29,
 автор: lissyara
 |  |  
 
 
   |   |   
 2014-07-27, lissyaragmirror
 Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
 2013-08-20, zentarimScan+Print server FreeBSD 9
 Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
 2011-11-20, BlackCatРазъём на WiFi-карту
 Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
 2011-09-14, manefestoНастройка git+gitosis
 Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 
 2011-08-14, zentarimWi-FI роутер + DHCP + DNS
 Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
 2011-06-15, -ZG-Охранная система на FreeBSD+LPT
 В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
 2011-03-13, terminusng_nat
 Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
 2011-02-20, КапитанNagios+Digitemp
 Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
 2011-02-17, Le1Zyxel Configuration
 Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
 2011-02-16, foxhast carp zfs ucarp cluster
 HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
 2011-02-04, BlackCatВосстановление ZFS
 История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
 2011-02-03, Капитан1-Wire
 Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
 
 | 
	
		| 
	
		| 
			
				
					| Статистика сайта |  
					| Сейчас на сайте находится: 12 чел. |  
					| За последние 30 мин было: 59 человек |  
					| За сегодня было9054 показов,
 1139 уникальных IP
 |  |  |  |   Этот информационный блок появился по той простой причине,
			что многие считают нормальным, брать чужую информацию не уведомляя автора
			(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
			Я не против распространения информации — только за. Только условие простое — извольте
			подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
			незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
			Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
 © lissyara 2006-10-24 08:47 MSK
			
 |   | 
		 Use the full accounting equation to avoid errors and understand your company. 
		 | 
Комментарии пользователей [8 шт.]