Плагин munin для мониторинга трафика пользователей 3proxy.
Munin — легковесный сервер для сбора и отображения информации, работает по принципу сервер-клиент, то есть сервер через установленные промежутки времени запрашивает данные у клиентов.
Рассмотрим создание простого плагина на примере сбора статистики использования прокси. В качестве прокси-сервера будем использовать 3proxy. 3Proxy имеет свои средства для сбора статистики по каждому пользователю, но данные хранятся в виде текста и не имеют истории использования по времени, так что графики будут информативнее и красивее.
Первым делом настроим ведение лога нужного формата. Для этого добавим в конфигурацию прокси следующее:
logformat — описание формата лога:
Сохраняем, перезапускаем процесс 3proxy.
Далее разберемся как работают плагины в munin.
Плагин для munin, это исполняемый файл, который возвращает форматированные данные и, при указании параметра config, возвращает конфигурацию для munin, в которой описывается формат данных и отображения информации.
Для 3proxy предлагаем 2 плагина, они отличаются только форматом вывода графиков.
Первый вариант: отображает 1 график с данными всех пользователей сразу.
(+) Удобно сравнивать потребление трафика у всех пользователей сразу.
(-) При большом количестве пользователей график становится плохо читаемым.
Второй вариант: отображает 1 график общего трафика и отдельные графики для каждого пользователя.
(+) Удобно оценивать как общее потребление трафика, так и для каждого пользователя.
(-) Не много большая нагрузка на сервер, так как отрисовывается по 2-3 графика на 1 пользователя.
Первый вариант
Примерный вид графика
Второй вариант
Общий вид в munin
Графики пользователй
Использованная информация
Документация munin по плагинам
Munin Wiki
Настройка логирования 3proxy
Рассмотрим создание простого плагина на примере сбора статистики использования прокси. В качестве прокси-сервера будем использовать 3proxy. 3Proxy имеет свои средства для сбора статистики по каждому пользователю, но данные хранятся в виде текста и не имеют истории использования по времени, так что графики будут информативнее и красивее.
Первым делом настроим ведение лога нужного формата. Для этого добавим в конфигурацию прокси следующее:
logformat "L %U %I %O"
log /var/log/3proxy.log
logformat — описание формата лога:
- L — использование локального времени сервера, обязательный параметр
- %U — имя пользователя
- %I — исходящий трафик, байты
- %O — входящий трафик, байты
Сохраняем, перезапускаем процесс 3proxy.
Далее разберемся как работают плагины в munin.
Плагин для munin, это исполняемый файл, который возвращает форматированные данные и, при указании параметра config, возвращает конфигурацию для munin, в которой описывается формат данных и отображения информации.
Для 3proxy предлагаем 2 плагина, они отличаются только форматом вывода графиков.
Первый вариант: отображает 1 график с данными всех пользователей сразу.
(+) Удобно сравнивать потребление трафика у всех пользователей сразу.
(-) При большом количестве пользователей график становится плохо читаемым.
Второй вариант: отображает 1 график общего трафика и отдельные графики для каждого пользователя.
(+) Удобно оценивать как общее потребление трафика, так и для каждого пользователя.
(-) Не много большая нагрузка на сервер, так как отрисовывается по 2-3 графика на 1 пользователя.
Первый вариант
#!/bin/bash
log="/var/log/3proxy.log"
# путь к лог файлу указанный в конфиге 3proxy
users=`cat /home/3proxy/3proxy.cfg | grep allow | cut -f2 -d' '`
#составление списка пользователей, замените путь к конфиг файлу на ваш
function header {
echo "graph_category 3proxy"
echo "graph_title Users send/recieve bytes"
echo "graph_vlabel bytes"
echo "graph_scale yes"
echo 'graph_period minutes'
}
function header_users {
echo $user"_snd.label $user send"
echo $user"_snd.type ABSOLUTE"
echo $user"_snd.graph no"
echo $user"_rcv.label $user recieve"
echo $user"_rcv.draw LINE"
echo $user"_rcv.type ABSOLUTE"
echo $user"_rcv.negative "$user"_snd"
}
function send_values {
cat $log > /tmp/log.tmp
truncate --size 0 $log
for user in $users; do
cat /tmp/log.tmp | grep $user | awk '{sum3+=$3} END {print$1 "_snd.value " sum3}'
cat /tmp/log.tmp | grep $user | awk '{sum2+=$2} END {print$1 "_rcv.value " sum2}'
done
}
function send_config {
header;
for user in $users; do
header_users;
done
}
if [ "$1" == "config" ]; then
send_config
else
send_values
fi
Примерный вид графика
Второй вариант
#!/bin/bash
log="/var/log/3proxy.log"
# путь к лог файлу указанный в конфиге 3proxy
users=`cat /home/3proxy/3proxy.cfg | grep allow | cut -f2 -d' '`
#составление списка пользователей, замените путь к конфиг файлу на ваш
function header_total {
echo "graph_category 3proxy"
echo "multigraph 3proxy_bytes"
echo "graph_title Total send/recieve bytes"
echo "graph_vlabel bytes"
echo "graph_scale yes"
echo 'graph_period minutes'
echo "Total_snd.label Total send"
echo "Total_snd.type ABSOLUTE"
echo "Total_snd.graph no"
echo "Total_rcv.label Total recieve"
echo "Total_rcv.draw AREASTACK"
echo "Total_rcv.type ABSOLUTE"
echo "Total_rcv.negative Total_snd"
}
function header_users {
echo "graph_category 3proxy"
echo "multigraph 3proxy_bytes."$user
echo "graph_title $user send/recieve bytes"
echo "graph_order"
echo "graph_vlabel bytes"
echo "graph_scale yes"
echo 'graph_period minutes'
echo "snd.label $user send"
echo "snd.type ABSOLUTE"
echo "snd.graph no"
echo "rcv.label "$user" recieve/send (±)"
echo "rcv.draw AREASTACK"
echo "rcv.type ABSOLUTE"
echo "rcv.negative snd"
}
function send_values {
cat $log > /tmp/log.tmp
truncate --size 0 $log
for user in $users; do
echo 'multigraph 3proxy_bytes.'$user
cat /tmp/log.tmp | grep $user | awk '{sum3+=$3} END {print"snd.value " sum3}'
cat /tmp/log.tmp | grep $user | awk '{sum2+=$2} END {print"rcv.value " sum2}'
done
echo 'multigraph 3proxy_bytes'
cat /tmp/log.tmp | awk '{sum3+=$3} END {print"Total_snd.value " sum3}'
cat /tmp/log.tmp | awk '{sum2+=$2} END {print"Total_rcv.value " sum2}'
}
function send_config {
header_total;
for user in $users; do
header_users;
done;
}
if [ "$1" == "config" ]; then
send_config
else
send_values
fi
Общий вид в munin
Графики пользователй
Использованная информация
Документация munin по плагинам
Munin Wiki
Настройка логирования 3proxy
- 0
- 05 июня 2018, 14:36
- apereshein
Комментарии (0)
RSS свернуть / развернуть