|
|
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, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+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, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast 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.
|
Статистика сайта
|
Сейчас на сайте находится: 42 чел.
|
За последние 30 мин было: 102 человек
|
За сегодня было 2492 показов, 611 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
Use the full accounting equation to avoid errors and understand your company.
|
Комментарии пользователей [8 шт.]