Приветствую.
Имеется - http(s) load balancer(железка), внутри какой-то закрытый linux. Сей девайс способен высчитывать кол-во входящих соединений в секунду на свой 80-й(443-й) порт и кол-во исходящих соединений в секунду к его back-endам. В реальном времени и не напрягаясь. Подскажите пожалуйста как это реализовать на нормальной системе?
Кол-во входящих/исходящих tcp соединений (на выбранный порт)
Модераторы: SLEDopit, Модераторы разделов
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Кол-во входящих/исходящих tcp соединений
как удивительно! действительно, не напрягаясь? и для каждой цепочки/правила в netfilter-е? не может быть, не верю. этого просто не может быть.
p.s. man iptables-save на предмет -c. man iptables на предмет -L -v -x.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Спасибо сказали:
-
distress
- Сообщения: 84
- ОС: RHEL5
Re: Кол-во входящих/исходящих tcp соединений
К сожалению, я не знаю чем именно девайс мониторит соединения. Может не netfilter/iptables? Всё, что у меня есть, это достаточно простая веб-морда по добавлению back-endов и статистикой соединений к ним. Никакого другого доступа железка не предоставляет.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Кол-во входящих/исходящих tcp соединений
вообще-то мой ответ (по крайней мере первая его строчка) призван был продемонстрировать иронию.
т.е., слишком велика вероятность, что netfilter в этом устройстве действительно работает и счётчики пакетов/байтов действительно функционуируют.
а получить их значения (например, с помощью программы iptables или busybox, собранной с соответстующей функциональностью) труда не представляет. как — я написал выше.
p.s. именно таким образом проще всего и получать статистику по пакетам/байтам, прошедшим через те или иные правила/цепочки netfilter-а. на нормальной системе с ядром linux.
upd. попробовал ещё разок подёргать свой телепатический модуль. он подсказал мне следующее:
возможно, вы имели в виду: «как извне получить собранную роутером статистику?».
единственное средство: спросить сам роутер.
если он для коммуникации с внешним миром использует лишь веб-интерфейс, то только из веб-интерфейса вы эту информацию и можете извлечь.
частенько в роутерах задействуется и snmp-интерфейс. если он задействован, возможно, через него отдаётся и интересующая вас статистика. проверьте каким-нибудь snmp-browser-ом. есть и графические мордочки (для начинающего это будет более наглядно) с соответствующей функциональностью. на вскидку: mbrowse, tkmib.
если внутри действительно стоит ядро linux, то очень сложно себе представить сетевую работу ядра без его сетевой подсистемы netfilter. ещё сложнее представить цель, с которой сборщик ядра выключил счётчики (если это вообще отключаемо какими-нибудь конфигурационными опциями).
т.е., слишком велика вероятность, что netfilter в этом устройстве действительно работает и счётчики пакетов/байтов действительно функционуируют.
а получить их значения (например, с помощью программы iptables или busybox, собранной с соответстующей функциональностью) труда не представляет. как — я написал выше.
p.s. именно таким образом проще всего и получать статистику по пакетам/байтам, прошедшим через те или иные правила/цепочки netfilter-а. на нормальной системе с ядром linux.
upd. попробовал ещё разок подёргать свой телепатический модуль. он подсказал мне следующее:
возможно, вы имели в виду: «как извне получить собранную роутером статистику?».
единственное средство: спросить сам роутер.
если он для коммуникации с внешним миром использует лишь веб-интерфейс, то только из веб-интерфейса вы эту информацию и можете извлечь.
частенько в роутерах задействуется и snmp-интерфейс. если он задействован, возможно, через него отдаётся и интересующая вас статистика. проверьте каким-нибудь snmp-browser-ом. есть и графические мордочки (для начинающего это будет более наглядно) с соответствующей функциональностью. на вскидку: mbrowse, tkmib.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
distress
- Сообщения: 84
- ОС: RHEL5
Re: Кол-во входящих/исходящих tcp соединений
я предполагал, что для каждого правила(back-end-a) пишется лог, который потом обрабатывается. Теоретически это должно было требовать много ресурсов. Особенно учитывая, что там 1ггц via cpu.
c "iptables -L -v -x" всё должно быть проще и легче. спасибо. теперь могу снимать статистику по пакетам и байтам. остается только одна проблема. именно соединения. вот что было сделано для этого:
полный конфиг. строчка "-A OUTPUT -m state --state NEW -m tcp -p tcp -j ACCEPT" добавлена к дефолтному конфигу, чтобы смотреть статистику по исходящим соединениям.
Код: Выделить всё
[root@fl ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMITчто получаю в счетчике:
Код: Выделить всё
[root@fl ~]# iptables -L -x -v
...
Chain OUTPUT (policy ACCEPT 3981 packets, 407510 bytes)
pkts bytes target prot opt in out source destination
319 19140 ACCEPT tcp -- any any anywhere anywhere state NEW tcpявляется ли показатель pkts кол-вом всех исходящих tcp соединений?
или (взято тут) это значение = SYN и ACK пакеты. SYN-ACK пакеты входящие потому вроде не должны учитываться т.к. чепочка "OUTPUT".
UPD:
добавил правило:
Код: Выделить всё
-A OUTPUT -d 192.168.0.10 -m state --state NEW -m tcp -p tcp -j ACCEPTдалее
Код: Выделить всё
telnet 192.168.0.10 805 коннектов - 5 пакетов.
Код: Выделить всё
Chain OUTPUT (policy ACCEPT 1773 packets, 264828 bytes)
pkts bytes target prot opt in out source destination
5 300 ACCEPT tcp -- any any anywhere 192.168.0.10 state NEW tcpПохоже, всё честно измеряет.
sash-kan, большое спасибо за помощь!