Сбор статистики по трафику на интерфейсе для соблюдения 1:4

Есть и такой ОС.

Модератор: weec

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Сбор статистики по трафику на интерфейсе для соблюдения 1:4

Непрочитанное сообщение .scu » 2014-10-12 16:02:12

Нужна помощь комьюнити, подобным не занималась, посему, если кто-то что-то такое делал, подскажите пожалуйста :)

Собственно задача: сделать скрипт, который будет отображать сколько получено трафика по сетевому интерфейсу, сколько передано (запускаться будет по крону).
У меня сервер размещен в дата-центре, где для "бесплатного" трафика нужно соблюдать соотношение 1:4 (это караван да, и у них такое еще есть).

Так вот я хочу, запускать этот скрипт допустим раз в полчаса и если увижу, что соотношение не верное, то этот скрипт будет запускать другой (который у меня уже написан), который закачивает файлы на нужный (недостающий) объем гб на яндекс.диск.

Собственно весь вопрос в том, как получать данные с сетевого интерфейса - сколько скачано \ сколько закачено (чтобы сравнить исходящий и входящий трафик).

Есть ли возможность как-то получить эти чиста с помощью скрипта на ssh ? или нужно ставить какое-то доп. ПО, если да, какое и собственно как получить данные?

Жду Вашей помощи, вдруг кто-то уже решал подобную задачу, Спасибо за помощь!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение Alex Keda » 2014-10-16 20:44:10

сменить датацентр на нормальный?
--
а вобще, count в файлволл да сравнивать.
на шелле можно накидать в десяток строк
Убей их всех! Бог потом рассортирует...

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-16 20:56:46

не вариант к сожалению, вообще конечно странно почему караван до сих порт такое делает, учитывая что конторка-то не маленькая.

StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение StreamThreader » 2014-10-21 17:01:58

Вот наверное как-то так:

Код: Выделить всё

#!/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 всё в базе.

ev
ст. лейтенант
Сообщения: 1325
Зарегистрирован: 2008-07-27 17:11:30
Откуда: Москва

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение ev » 2014-10-21 17:47:01

странно почему караван до сих порт такое делает
почему странно? они играют по правилам, которые им диктуют поставщики аплинков
не только караван так делает, еще как минимум агава ;)
да и часто это лучше простого ограничения в 1ТБ и далее по 7-15 руб за ГБ

StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение StreamThreader » 2014-10-21 21:14:30

Немного дописал, осталось вставить программу которую надо выполнять в определенном месте.

Код: Выделить всё

#!/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
Вложения
check1-4.txt
(1.15 КБ) 34 скачивания

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-21 22:22:02

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 всё в базе.
спасибо! сейчас попробую

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-21 22:22:37

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
огромнейшее спасибо =) буду тестировать

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-21 22:52:13

p.s. а за конкретную дату можно получить статистику?

StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение StreamThreader » 2014-10-21 23:06:03

.scu писал(а):p.s. а за конкретную дату можно получить статистику?
Конечно, скрипт в начале сообщает дату, можно делать Grep за дату, а все сообщения писать в файл.

StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение StreamThreader » 2014-10-21 23:12:40

Хотя бы, так. Можно добавить ещё пустую строку в начале нового дня.

Код: Выделить всё

#!/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


Вложения
check1-4.txt
(1.21 КБ) 30 скачиваний

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-22 0:03:09

я видимо как-то невнимательно смотрю, не вижу разницы с предыдущим вариантом, где выборка даты?

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-22 0:08:28

пытаюсь проверить корректность :)
из личного кабинета

Код: Выделить всё

22 окт. 2014 	
входящий    исходящий
1,87 	           34,09
(мб)

Код: Выделить всё

Ратио: 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
что-то не сходится :)

у них там конечно статистика не в минуту в минуту, если не ошибаюсь раз в полчаса делается, но цифры как-то уж больно различны.

StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение StreamThreader » 2014-10-22 0:16:46

Интересно, статистика совсем разная )).
Может у вас аптайм?
Берётся статистика за время работы системы, и при перезагрузке обнуляется.
Если нужна не зависимость от аптайма, то нужно сбрасывать значения во временную базу.

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-22 1:44:50

нет, он не рестартуется. аптайм несколько лет :)
у них там она разделяется (типо локальный трафик, российский и международный), но итог я так понимаю считается таки по общему:

это входящий и исходящий для


Локальный, Мб Российский, Мб Зарубежный, Мб Общий, Мб
22 окт. 2014 0,00 0,02 2,51 73,95 4,38 60,93 6,90 134,90

.scu
сержант
Сообщения: 198
Зарегистрирован: 2008-05-26 11:25:08
Контактная информация:

Re: Сбор статистики по трафику на интерфейсе для соблюдения

Непрочитанное сообщение .scu » 2014-10-22 1:45:18

и что по поводу выборки по дате ? :)