PDA

View Full Version : Триггер подключенных ip к серверу


Sater
06-07-2010, 17:58
Добрый день.

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

ОС: Ubuntu

Кстати логи коннектов на порты веду с помощью пакетов ulog-acctd и ulogd, все это собирается в файл с расширением .log, может есть возможность построить график на основании данных из файла?

Вот, что в логе(также прикрепил сам лог):

80.93.115.27%2343
80.93.115.27%3523
216.155.146.170%9043
95.78.119.124%68590
79.116.223.213%8453

и так далее


Буду очень благодарен за дельные советы и помощь в данном вопросе.

dima_dm
07-07-2010, 07:33
Так какой график вы хотите построить?
Количество открытых сессий tcp c сервером от времени?

Sater
07-07-2010, 09:25
Так какой график вы хотите построить?
Количество открытых сессий tcp c сервером от времени?

Вообще хотелось бы график:
-Ось Y: количество подключенных IP-адресов к серверу;
-Ось X: время;
Хотя можно, и количество установленных tcp + udp подключений и все это оборазить на графике, или отдельно по протоколу tcp, udp и общий.

dima_dm
07-07-2010, 09:50
тогда делайте так.
В примере статистика по DNS серверу tcp и udp соединения
В /etc/zabbix/zabbix_agentd.conf
UserParameter=named_udp,netstat -nua | grep :53 | wc -l
UserParameter=named_tcp,netstat -nta | grep :53 | wc -l
Замените в grep :53, :53 на Ip вашей карты, и вы отфильтруете только подключения к нужной вам карте.

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

Для построения общих графиков (tcp + udp) рекомендую использовать
http://www.zabbix.com/documentation/ru/1.8/manual/config/items -> Вычисляемые элементы данных
на основе named_udp и named_tcp
Или
UserParameter=named_all,netstat -na | grep IP | wc -l

Sater
07-07-2010, 10:59
....

Огромное Вам спасибо за помощь.
Сейчас гуглю и настраиваю, я все же еще с Zabbix'ом только начал работать :o

Sater
07-07-2010, 13:29
Созданные элементы данных не поддерживается ZABBIX агентом, а следовательно и полученные на их основании триггеры.
Перезапуск сервера и агента выполнял - не помогло.

Вот результаты из zabbix_server.log:

1881:20100707:143200.796 Item [myhost:named_udp_eth0] error: Not supported by Zabbix Agent
1882:20100707:143201.402 Item [myhost:named_tcp_eth0] error: Not supported by Zabbix Agent
1883:20100707:143202.168 Item [myhost:named_udp_eth1] error: Not supported by Zabbix Agent
1884:20100707:143203.937 Item [myhost:named_tcp_eth1] error: Not supported by Zabbix Agent

На всякий случай создал в дополнительный скрипт "Netstat" в разделе "Администрирование" Zabbix'a:
Команда: "/bin/netstat {HOST.CONN}"

В консоли команда: netstat -nta | grep MyIP | wc -l дает положительный результат - выдает количество конекций к серверу.

При создании элементов данных руководствовался:

1 (http://it.rpkkirov.ru/sistema-monitoringa-urovnya-predpriyatiya-sozdanie-svoix-pokazatelej-zabbix/)

2 (http://zabbix.org.ua/%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D 0%BC-%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D 0%B2%D0%BE-%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D 0%BD%D0%BD%D1%8B%D1%85-postfix/)

dima_dm
07-07-2010, 13:38
С Zabbix Сервера работает команда, вы получаете правильный результат?
zabbix_get -s IP -k named_udp_eth0
где
IP - адрес вашего сервера, который вы мониторите
Покажите как вы настроили UserParameter в /etc/zabbix/zabbix_agentd.conf

Sater
07-07-2010, 14:04
С Zabbix Сервера работает команда, вы получаете правильный результат?
zabbix_get -s IP -k named_udp_eth0
где
IP - адрес вашего сервера, который вы мониторите
Покажите как вы настроили UserParameter в /etc/zabbix/zabbix_agentd.conf


# ./zabbix_get -s 10.10.10.20 -k "system.test"
zabbix_get [8730]: Get value error: Cannot connect to [10.10.10.20:10050] [Connection refused]

# ./zabbix_get -s 10.10.10.20 -k named_udp_eth0
zabbix_get [8734]: Get value error: Cannot connect to [10.10.10.20:10050] [Connection refused]

На интерфейсе eth0 с внешнем Ip ситуация та же (((

Вот нашел решение, но стоит ли его выполнять???

-/usr/local/bin/zabbix_get -s192.168.1.82 -k"system.test"

-Получаем connection refused. Почему? Потому, что нужно добавить
пользователя zabbix и поправить **/etc/services**!

-useradd zabbix -d /dev/null -s /sbin/nologin

-в файл **/etc/services** пишем
zabbix_agent 10050/tcp
zabbix_trap 10051/tcp
стянул отсюда (http://faqman.ru/setevye-servisy/ustanovka-zabbix-14x-c-nulya.html)

dima_dm
07-07-2010, 14:08
У вас либо проблемы с Firewall, либо в поле Server не прописан IP Zabbix Server
/etc/zabbix/zabbix_agentd.conf

Server=172.16.36.250,127.0.0.1


У вас zabbix_agentd слушает порт TCP 10050
netstat -napl | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 32235/zabbix_agentd

Sater
07-07-2010, 14:21
У вас либо проблемы с Firewall, либо в поле Server не прописан IP Zabbix Server
/etc/zabbix/zabbix_agentd.conf

Server=172.16.36.250,127.0.0.1
В конфиге указан внешний ip, я его урезал(нет желания внешний ip светить на форуме)
Если Вы не против я могу полный конфиг передать через личку?


У вас zabbix_agentd слушает порт TCP 10050
netstat -napl | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 32235/zabbix_agentd

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

dima_dm
07-07-2010, 14:30
А почему у вас ListenIP=127.0.0.1
Должен быть либо ListenIP=0.0.0.0
, т.е. все интерфейсы, либо IP конкретного интерфейса на сервере, куда будут приходить запросы.

Sater
07-07-2010, 14:37
Огромное Вам спасибо ув. dima_dm!!
Все заработало!

step_slim
07-07-2010, 15:10
Перепроверил у себя всё, что тут описывается, ничего не помогло :(

Вот мои файлы конфигурации zabbix-agentd.conf

dima_dm
07-07-2010, 15:30
Перепроверил у себя всё, что тут описывается, ничего не помогло :(

Вот мои файлы конфигурации zabbix-agentd.conf

Hostname= - лучше задавать (Unique hostname.
Required for active checks and must match hostname as configured on the server.).
Проверьте что в netstat -na видно запущенный Zabbix Agent, он слушает порт TCP 10050 0.0.0.0:10050 на всех интерфейсах.
Выключен Windows Firewall.

step_slim
07-07-2010, 15:35
Ну вот вроде всё слушает, с этим проблем не было.
# netstat -napl | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9377/zabbix-agentd
tcp 0 0 127.0.0.1:10050 127.0.0.1:50996 TIME_WAIT -
tcp 0 0 127.0.0.1:51152 127.0.0.1:10050 TIME_WAIT -
tcp 0 0 127.0.0.1:10050 127.0.0.1:51059 TIME_WAIT -
tcp 0 0 127.0.0.1:10050 127.0.0.1:51052 TIME_WAIT -
tcp 0 0 127.0.0.1:10050 127.0.0.1:51182 TIME_WAIT -
tcp 0 0 127.0.0.1:10050 127.0.0.1:51101 TIME_WAIT -
tcp 0 0 127.0.0.1:10050 127.0.0.1:51187 TIME_WAIT -


А если у меня нет имени ХОСТА? Ну при установки не присуждал я Тарификатору некакго имени, оставил это поле пустым, что без него не будет работать, ну попробую добавить.
Фаервола отрадясь на этих серверах не было, а на Тарификаторе вообще все запреты сняты, он с АТС получает данные, так что на нём вообще все разрешено, на сервере фаервол при установки отрубил.

з.ы. Увы не получилось, всё перепробовал...

dima_dm
07-07-2010, 15:52
Рекомендую tcpdump посмотреть, уходят ли запросы с Zabbix сервера и приходят ли они к Windows машине, так вы узнаете, где у вас пакеты фильтруются
MicroOLAP TCPDUMP for Windows
http://www.microolap.com/products/network/tcpdump/
Hostname= нужен только при использовании active checks

step_slim
08-07-2010, 08:27
Проверил и тут- всё нормально, запутался в конец, не бывает ведь такого... Посмотрите скрин.

dima_dm
08-07-2010, 08:51
Zabbix Agent работает на порту TCP 10050 (т.е. вызов Zabbix_Server ->Host:10050), а у вас Dump TCP 10051. Это Zabbix Agent активный ( т.е. вызов идёт Host -> Zabbix_Server:10051). У вас в Item что указано Zabbix Agent или Zabbix Agent активный?
Zabbix Agent активный без прописанного поля Hostname=, которое совпадает с точностью до регистра букв с именем Hosta-а в настройке Zabbix_Server, работать не будет!!!!

step_slim
08-07-2010, 08:58
Zabbix Agent работает на порту TCP 10050 (т.е. вызов Zabbix_Server ->Host:10050), а у вас Dump TCP 10051. Это Zabbix Agent активный ( т.е. вызов идёт Host -> Zabbix_Server:10051). У вас в Item что указано Zabbix Agent или Zabbix Agent активный?
Zabbix Agent активный без прописаного поля Hostname= работать не будет!!!!

Я глубоко извиняюсь, я с zabbix`ом только вторую неделю, что есть у него Item??? Прописал я Hostname = tariffikator_se.

dima_dm
08-07-2010, 09:04
Я глубоко извиняюсь, я с zabbix`ом только вторую неделю, что есть у него Item??? Прописал я Hostname = tariffikator_se.

Настройка-> Узлы сети -> Элементы данных
В русском интерфейсе это Элементы данных, в английском Items

step_slim
08-07-2010, 09:13
dima_dm
:eek: И где тут что то про Agent???

dima_dm
08-07-2010, 09:19
В поле Тип написан тип проверки, найдите Item c типом Zabbix Agent и посмотрите его свойства, кликнув на названия Item в поле Описание.

step_slim
08-07-2010, 09:38
dima_dm
Изначально вообще не было никакого типа проверки в виде "zabbix-agent", создал вручную, вот как раз там и был выбор в работе agenta.
Вот настройки на проверку данного хоста.

dima_dm
08-07-2010, 10:08
Теперь осталось только ждать, когда Zabbix_Server получит данные. Вы должны увидить этот Item на закладке Мониторинг ->Последние данные

step_slim
08-07-2010, 11:07
Теперь осталось только ждать, когда Zabbix_Server получит данные. Вы должны увидить этот Item на закладке Мониторинг ->Последние данные

И вот прошёл час, а в указанной вкладке ничего, кроме "07 Jul 10:31:11 Unreachable (2 )" Запутался, уже куда и что тут...:confused:

dima_dm
08-07-2010, 11:11
У вас либо Item перешёл в неактивное состояние, и нужно его активировать, либо когда вы изменяли конфигурацию Zabbix_Agentd забыли его рестартовать, либо всё сразу.

Время, через которое проверяются неподдерживаемые элементы данных задаётся
Администрирование->Общие параметры->Обновлять неподдерживаемые элементы данных (секунды)

Sammit
08-07-2010, 11:29
Sater предложил довольно полезный график. Мне он бы не помешал.
Но вот в чём проблема:

у меня на серверной машине несколько игровых серверов, каждый из которых использует свой определённый порт, например один из них 27015

так вот, в конфиг zabbix_agentd.conf я дописал следующее:

UserParameter=css-cl_eth0,netstat -na | grep x.x.x.x:27015 |wc -l
UserParameter=css-cl_eth1,netstat -na | grep 10.10.10.30:27015 | wc -l
UserParameter=css-cl_all,netstat -na | grep 0.0.0.0:27015 | wc -l

где x.x.x.x - внешний айпи сервера, 10.10.10.30 - локальный.

Но сами команды netstat -na | grep x.x.x.x:27015 |wc -l отображают не то, что нужно. Например на игровом сервере у меня 32 игрока, а команда показывает кол-во 2(всегда!):(

tcp 0 0 x.x.x.x:27015 0.0.0.0:* LISTEN
udp 1668 0 x.x.x.x:27015 0.0.0.0:*

Какую команду мне использовать, чтобы получить то самое кол-во подключённых игроков(32), кол-во их айпи адресов???

Подскажите пожалуйста.

dima_dm
08-07-2010, 11:36
Sater предложил довольно полезный график. Мне он бы не помешал.
Но вот в чём проблема:

у меня на серверной машине несколько игровых серверов, каждый из которых использует свой определённый порт, например один из них 27015

так вот, в конфиг zabbix_agentd.conf я дописал следующее:

UserParameter=css-cl_eth0,netstat -na | grep x.x.x.x:27015 |wc -l
UserParameter=css-cl_eth1,netstat -na | grep 10.10.10.30:27015 | wc -l
UserParameter=css-cl_all,netstat -na | grep 0.0.0.0:27015 | wc -l

где x.x.x.x - внешний айпи сервера, 10.10.10.30 - локальный.

Но сами команды netstat -na | grep x.x.x.x:27015 |wc -l отображают не то, что нужно. Например на игровом сервере у меня 32 игрока, а команда показывает кол-во 2:(

tcp 0 0 x.x.x.x:27015 0.0.0.0:* LISTEN
udp 1668 0 x.x.x.x:27015 0.0.0.0:*

Какую команду мне использовать, чтобы получить то самое кол-во подключённых игроков(32), кол-во их айпи адресов???

Подскажите пожалуйста.

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

Sammit
08-07-2010, 11:50
Я правильно понял, что у вас используется NAT?
Тогда поиск нужно делать по адресу интерфейса на сервере, ведь на этот интерфейс приходят запросы, а про свой NAT адрес сервер ничего не знает (если конечно NAT не выполняется на этой-же машине, например с помощью iptable).

NAT нет. Просто машина с двумя сетевушками(одна для внешних игроков, вторая для локальных) и несколькими игровыми серверами, например Counter-Strike, у которого порт 27015, на нём сейчас 32 игрока. Какая команда отобразит эти же показания, чтобы я её использовал для zabbix ?

dima_dm
08-07-2010, 12:39
NAT нет. Просто машина с двумя сетевушками(одна для внешних игроков, вторая для локальных) и несколькими игровыми серверами, например Counter-Strike, у которого порт 27015, на нём сейчас 32 игрока. Какая команда отобразит эти же показания, чтобы я её использовал для zabbix ?

К сожаленью, я не знаком с принципом работы Counter-Strike сервера. Он держит активное TCP соединения для каждого игрока или работает на UDP пакетах? Если 2-е, то netstat вам ничего не даст. Вы должны найти утилиту от Counter-Strike сервера в которой можно получить количество подключенных игроков в данный момент (лучше утилиту командной строки), обработать её вывод и и записать данные во временный файл. Далее получить данные из временного файла с помощью UserParameter и Zabbix Agent.
Пример реализации подобной схемы:
http://www.zabbix.com/forum/showthread.php?t=15691

step_slim
08-07-2010, 13:24
У вас либо item перешёл в неактивное состояние, и нужно его активировать, либо когда вы изменяли конфигурацию zabbix_agentd забыли его рестартовать, либо всё сразу.

Время, через которое проверяются неподдерживаемые элементы данных задаётся
Администрирование->Общие параметры->Обновлять неподдерживаемые элементы данных (секунды)

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

dima_dm
08-07-2010, 13:35
Перезапускал, даже пересоздавал службу и узел сети- не работает, не знаю уже куда смотреть...
Обновляется подключение через каждые 2 минуты.

Рекомендую использовать Zabbix Agent, а не Zabbix Agent активный. Его отлаживать проще через zabbix_get, как я уже писал.

Sammit
08-07-2010, 13:36
К сожаленью, я не знаком с принципом работы Counter-Strike сервера. Он держит активное TCP соединения для каждого игрока или работает на UDP пакетах?[/url]

Большое спасибо, dima_dm, что пытаетесь помочь.

Сервер работает на udp пакетах.

Вот нашёл кое-что, команда:

cat /proc/net/ip_conntrack |grep udp| grep 'dst=x.x.x.x' | grep 'dport=27015'| grep ASSURED| wc -l

где x.x.x.x - внешний айпи моей серверной машины.

Но только тут тоже есть проблема: есть интервал сохранения данных, поэтому айпишки повторяются.

Может знаете как установить время сохранения равным 1 сек, или 0.1 сек ??

dima_dm
08-07-2010, 13:50
Может знаете как установить время сохранения равным 1 сек, или 0.1 сек ??

Модуль ip_conntrack используется для реализации full state inspection Firewall, это таблица состояния соединений. Соответственно и записи в ней хранятся в соответствии с Timeout TCP/IP стека. Но данный путь тоже Вам ничего не даст, т.к. с одного IP могут работать несколько игроков через PAT трансляцию, и на уровне UDP соединения вы их не различите. Частота обмена UDP пакетами тоже не равномерная, игрок может замереть на месте и новых пакетов не будет. Мой совет:
Ищите утилиту к серверу Counter-Strike, как я советовал.

Sammit
08-07-2010, 13:56
Ищите утилиту к серверу Counter-Strike, как я советовал.

Просто дело не в одном Counter-Strike, есть и другие игровые сервера, поэтому нужно найти одно общее решение.

dima_dm
08-07-2010, 14:02
Просто дело не в одном Counter-Strike, есть и другие игровые сервера, поэтому нужно найти одно общее решение.
Ну вы поняли, что попытка отследить их на 3-м уровне модели OSI это тупиковый вариант? Поэтому игра не стоит свеч, а результат труда (Copyright В. Цой)
Нужно искать другой подход.

step_slim
08-07-2010, 14:27
Рекомендую использовать Zabbix Agent, а не Zabbix Agent активный. Его отлаживать проще через zabbix_get, как я уже писал.

Перевёл в пассивный режим, теперь мой АГЕНТ по всей сети рассылает по 10050 порту, уже всем серверам отправил и все ему ответили, кроме забикса.... Наверное придётся сдаться и к пятнице ни как не успеть допилить zabbix, спасибо за советы, но по видимому признаю поражение и опять на Nagiose сидеть.... :(

dima_dm
08-07-2010, 14:59
Перевёл в пассивный режим, теперь мой АГЕНТ по всей сети рассылает по 10050 порту, уже всем серверам отправил и все ему ответили, кроме забикса.... Наверное придётся сдаться и к пятнице ни как не успеть допилить zabbix, спасибо за советы, но по видимому признаю поражение и опять на Nagiose сидеть.... :(

Так у вас наверно Firewall стоит на Zabbix Server, проверьте
/sbin/iptables -L -v
Или активированы фичи вроде SElinux.

step_slim
08-07-2010, 15:27
Так у вас наверно firewall стоит на zabbix server, проверьте
/sbin/iptables -l -v
Или активированы фичи вроде selinux.

Фаервол не запущен, фичи я не какие не ставлю, ибо не любитель подобных приблуд.
А эта надпись в логах, вообще запутывает: Get value from agent failed: Cannot connect to [10.0.5.102:10050] [Connection refused]