Как считать трафик на FreeBSD. Часть вторая. Веб-интерфейс для сисадмина
Автор TMeter
В предыдущей статье я рассмотрел вопрос
о том, как заносить подсчитанный трафик в MySQL-таблицу вида:
Имя поля | Тип поля | Назначение поля |
dt | date | Дата в формате 2002-12-31 |
ip | char(16) | IP адрес, например 192.168.3.2 |
sent | bigint | Количество посланных байт для данного IP адреса |
recv | bigint | Количество принятых байт для данного IP адреса |
Рис. 1. Таблица traffic
Цель данной статьи - рассказать, как соорудить веб-интерфейс для просмотра накопленных
данных о трафике (из предыдущей статьи) для сисадмина.
Задача сисадмина - узнать, сколько тот или
иной IP адрес потребил трафика в определенный промежуток времени.
Все скрипты для данной статьи написаны на языке php,
поэтому потребуется веб-сервер с поддержкой языка PHP (например Apache).
Шаг 1. Создание странички для подготовки SQL-запроса
Эта страничка должна вывести список всех имеющихся IP адресов
в таблице traffic и позволить сисадмину выбрать временной интервал
задания запроса. Список всех IP адресов можно подготовить командой:
SELECT distinct ip FROM traffic
|
А сама страничка будет выглядеть примерно
следующим образом:
Шаг 2. Создание странички для отображения SQL-запроса
Эта страничка будет выводить счетчики трафика для адресов,
выбранных на предыдущем шаге. Страничка имеет два режима. Первый режим
отображает итоговую сумму по всем адресам за определенный интервал времени
при помощи SQL-запроса:
SELECT ip, sum(sent), sum(recv) FROM traffic where ((dt>=$from_date) AND (dt<=$to_date)) group by ip
|
Второй режим будет выводить детализацию трафика конкретного
IP адреса по дням:
SELECT dt, sent, recv from traffic where ((ip=$ip) AND (dt>=$from_date) AND (dt<=$to_date))
|
Параметры доступа к базе данных MySQL из PHP (имя хоста БД,
имя БД, имя пользователя и пароль) заданы в заголовке скрипта inc/procs.inc.
Ну, и, конечно, чтобы посторонний не имел доступа на сервер статистики,
его необходимо запаролить. В Apache это можно сделать следующим образом:
<Directory /usr/local/virtual/tmeter2/htdocs>
AuthType Basic
AuthName LanAdminStat
AuthUserFile /usr/local/virtual/tmeter2/tmeter2.passwd
<Limit GET POST>
require valid-user
</Limit>
</Directory>
|
Загрузить набор скриптов из этой статьи ipacc_trafd2.tgz (1,5кбайт)