Страница 1 из 1
Сбор статистики по трафику на интерфейсе для соблюдения 1:4
Добавлено: 2014-10-12 16:02:12
.scu
Нужна помощь комьюнити, подобным не занималась, посему, если кто-то что-то такое делал, подскажите пожалуйста
Собственно задача: сделать скрипт, который будет отображать сколько получено трафика по сетевому интерфейсу, сколько передано (запускаться будет по крону).
У меня сервер размещен в дата-центре, где для "бесплатного" трафика нужно соблюдать соотношение 1:4 (это караван да, и у них такое еще есть).
Так вот я хочу, запускать этот скрипт допустим раз в полчаса и если увижу, что соотношение не верное, то этот скрипт будет запускать другой (который у меня уже написан), который закачивает файлы на нужный (недостающий) объем гб на яндекс.диск.
Собственно весь вопрос в том, как получать данные с сетевого интерфейса - сколько скачано \ сколько закачено (чтобы сравнить исходящий и входящий трафик).
Есть ли возможность как-то получить эти чиста с помощью скрипта на ssh ? или нужно ставить какое-то доп. ПО, если да, какое и собственно как получить данные?
Жду Вашей помощи, вдруг кто-то уже решал подобную задачу, Спасибо за помощь!
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-16 20:44:10
Alex Keda
сменить датацентр на нормальный?
--
а вобще, count в файлволл да сравнивать.
на шелле можно накидать в десяток строк
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-16 20:56:46
.scu
не вариант к сожалению, вообще конечно странно почему караван до сих порт такое делает, учитывая что конторка-то не маленькая.
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 17:01:58
StreamThreader
Вот наверное как-то так:
Код: Выделить всё
#!/bin/bash
IFACE="eth0"
echo "Network statistic on interface $IFACE"
for i in "RX:" "TX:"
do
BYTES="$(ip -s link show "$IFACE" | grep -A 1 "$i" | grep -v "$i" | awk '{print $1}')"
KBYTES="$(echo "$BYTES / 1024" | bc)"
echo "$i $KBYTES KBytes"
done
Для платформы Linux.
Должны быть установлены программы: iproute2 и bc, в Slackware всё в базе.
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 17:47:01
ev
странно почему караван до сих порт такое делает
почему странно? они играют по правилам, которые им диктуют поставщики аплинков
не только караван так делает, еще как минимум агава

да и часто это лучше простого ограничения в 1ТБ и далее по 7-15 руб за ГБ
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 21:14:30
StreamThreader
Немного дописал, осталось вставить программу которую надо выполнять в определенном месте.
Код: Выделить всё
#!/bin/bash
IFACE="eth0" # Interface for check
RXBYTES="" # Recived bytes (DOWNLOAD)
TXBYTES="" # Trancived bytes (UPLOAD)
QUADRX="" # 4 x Trancived value
echo "Network statistic on interface $IFACE"
for i in "RX" "TX"
do
extval=$i
i="$i:"
BYTES="$(ip -s link show "$IFACE" | grep -A 1 "$i" | grep -v "$i" | awk '{print $1}')"
if [ $extval == "RX" ]
then
RXBYTES="$BYTES"
else
TXBYTES="$BYTES"
fi
KBYTES="$(echo "$BYTES / 1024" | bc)"
echo "$i $KBYTES KBytes"
done
logger() {
MSG="$1"
echo "$(date +%F--\(%H-%M-%S\)) - $MSG"
}
corrector() {
STAT=""
case "$1" in
"0")
STAT="NORMAL"
;;
"1")
STAT="NEEDDOWNLOAD"
#
# Wget some file
#
;;
"2")
STAT="NEEDUPLOAD"
#
# Upload some file
#
;;
esac
}
QUADRX="$(echo "$RXBYTES * 4"| bc)"
if [ $QUADRX -eq $TXBYTES ]
then
logger "For now ratio is 1:4 (RX:TX)"
exit 0
fi
if [ $QUADRX -lt $TXBYTES ]
then
BALANCE="$(echo "$TXBYTES - $QUADRX" | bc)"
logger "You need DOWNLOAD: $BALANCE bytes, for ratio 1:4"
corrector "1"
fi
if [ $QUADRX -gt $TXBYTES ]
then
BALANCE="$(echo "$QUADRX - $TXBYTES" | bc)"
logger "You need UPLOAD: $BALANCE bytes, for ration 1:4"
corrector "2"
fi
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 22:22:02
.scu
StreamThreader писал(а):Вот наверное как-то так:
Код: Выделить всё
#!/bin/bash
IFACE="eth0"
echo "Network statistic on interface $IFACE"
for i in "RX:" "TX:"
do
BYTES="$(ip -s link show "$IFACE" | grep -A 1 "$i" | grep -v "$i" | awk '{print $1}')"
KBYTES="$(echo "$BYTES / 1024" | bc)"
echo "$i $KBYTES KBytes"
done
Для платформы Linux.
Должны быть установлены программы: iproute2 и bc, в Slackware всё в базе.
спасибо! сейчас попробую
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 22:22:37
.scu
StreamThreader писал(а):Немного дописал, осталось вставить программу которую надо выполнять в определенном месте.
Код: Выделить всё
#!/bin/bash
IFACE="eth0" # Interface for check
RXBYTES="" # Recived bytes (DOWNLOAD)
TXBYTES="" # Trancived bytes (UPLOAD)
QUADRX="" # 4 x Trancived value
echo "Network statistic on interface $IFACE"
for i in "RX" "TX"
do
extval=$i
i="$i:"
BYTES="$(ip -s link show "$IFACE" | grep -A 1 "$i" | grep -v "$i" | awk '{print $1}')"
if [ $extval == "RX" ]
then
RXBYTES="$BYTES"
else
TXBYTES="$BYTES"
fi
KBYTES="$(echo "$BYTES / 1024" | bc)"
echo "$i $KBYTES KBytes"
done
logger() {
MSG="$1"
echo "$(date +%F--\(%H-%M-%S\)) - $MSG"
}
corrector() {
STAT=""
case "$1" in
"0")
STAT="NORMAL"
;;
"1")
STAT="NEEDDOWNLOAD"
#
# Wget some file
#
;;
"2")
STAT="NEEDUPLOAD"
#
# Upload some file
#
;;
esac
}
QUADRX="$(echo "$RXBYTES * 4"| bc)"
if [ $QUADRX -eq $TXBYTES ]
then
logger "For now ratio is 1:4 (RX:TX)"
exit 0
fi
if [ $QUADRX -lt $TXBYTES ]
then
BALANCE="$(echo "$TXBYTES - $QUADRX" | bc)"
logger "You need DOWNLOAD: $BALANCE bytes, for ratio 1:4"
corrector "1"
fi
if [ $QUADRX -gt $TXBYTES ]
then
BALANCE="$(echo "$QUADRX - $TXBYTES" | bc)"
logger "You need UPLOAD: $BALANCE bytes, for ration 1:4"
corrector "2"
fi
огромнейшее спасибо

буду тестировать
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 22:52:13
.scu
p.s. а за конкретную дату можно получить статистику?
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 23:06:03
StreamThreader
.scu писал(а):p.s. а за конкретную дату можно получить статистику?
Конечно, скрипт в начале сообщает дату, можно делать Grep за дату, а все сообщения писать в файл.
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-21 23:12:40
StreamThreader
Хотя бы, так. Можно добавить ещё пустую строку в начале нового дня.
Код: Выделить всё
#!/bin/bash
IFACE="eth0" # Interface for check
RXBYTES="" # Recived bytes (DOWNLOAD)
TXBYTES="" # Trancived bytes (UPLOAD)
QUADRX="" # 4 x Trancived value
LOGFILE="/var/log/if-stat.log" # Log file
# echo "Network statistic on interface $IFACE"
for i in "RX" "TX"
do
extval=$i
i="$i:"
BYTES="$(ip -s link show "$IFACE" | grep -A 1 "$i" | grep -v "$i" | awk '{print $1}')"
if [ $extval == "RX" ]
then
RXBYTES="$BYTES"
else
TXBYTES="$BYTES"
fi
# KBYTES="$(echo "$BYTES / 1024" | bc)"
# echo "$i $KBYTES KBytes"
done
logger() {
MSG="$1"
echo "$(date +%F--\(%H-%M-%S\)) - $MSG" >> $LOGFILE
}
corrector() {
STAT=""
case "$1" in
"0")
STAT="NORMAL"
;;
"1")
STAT="NEEDDOWNLOAD"
#
# Wget some file
#
;;
"2")
STAT="NEEDUPLOAD"
#
# Upload some file
#
;;
esac
}
QUADRX="$(echo "$RXBYTES * 4"| bc)"
if [ $QUADRX -eq $TXBYTES ]
then
logger "For now ratio is 1:4 (RX:TX)"
exit 0
fi
if [ $QUADRX -lt $TXBYTES ]
then
BALANCE="$(echo "$TXBYTES - $QUADRX" | bc)"
logger "You need DOWNLOAD: $BALANCE bytes, for ratio 1:4"
corrector "1"
fi
if [ $QUADRX -gt $TXBYTES ]
then
BALANCE="$(echo "$QUADRX - $TXBYTES" | bc)"
logger "You need UPLOAD: $BALANCE bytes, for ration 1:4"
corrector "2"
fi
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-22 0:03:09
.scu
я видимо как-то невнимательно смотрю, не вижу разницы с предыдущим вариантом, где выборка даты?
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-22 0:08:28
.scu
пытаюсь проверить корректность

из личного кабинета
(мб)
Код: Выделить всё
Ратио: 1.87*4 - 34.09 / 1024 / 1024 = -26.61 (в запасе)
по скрипту:
Код: Выделить всё
Network statistic on interface eth1
RX: 2831523 KBytes ( 2765 Mb )
TX: 2648550 KBytes ( 2586 Mb )
2014-10-22--(02-03-43) - You need UPLOAD: 8885804296 bytes (8557 Mb), for ration 1:4
uploading
что-то не сходится
у них там конечно статистика не в минуту в минуту, если не ошибаюсь раз в полчаса делается, но цифры как-то уж больно различны.
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-22 0:16:46
StreamThreader
Интересно, статистика совсем разная )).
Может у вас аптайм?
Берётся статистика за время работы системы, и при перезагрузке обнуляется.
Если нужна не зависимость от аптайма, то нужно сбрасывать значения во временную базу.
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-22 1:44:50
.scu
нет, он не рестартуется. аптайм несколько лет

у них там она разделяется (типо локальный трафик, российский и международный), но итог я так понимаю считается таки по общему:
это входящий и исходящий для
Локальный, Мб Российский, Мб Зарубежный, Мб Общий, Мб
22 окт. 2014 0,00 0,02 2,51 73,95 4,38 60,93 6,90 134,90
Re: Сбор статистики по трафику на интерфейсе для соблюдения
Добавлено: 2014-10-22 1:45:18
.scu
и что по поводу выборки по дате ?
