View Full Version : Триггер подключенных ip к серверу
Добрый день.
Необходимо построить график количества подключенных к серверу клиентов(их 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
и так далее
Буду очень благодарен за дельные советы и помощь в данном вопросе.
Так какой график вы хотите построить?
Количество открытых сессий tcp c сервером от времени?
Так какой график вы хотите построить?
Количество открытых сессий tcp c сервером от времени?
Вообще хотелось бы график:
-Ось Y: количество подключенных IP-адресов к серверу;
-Ось X: время;
Хотя можно, и количество установленных tcp + udp подключений и все это оборазить на графике, или отдельно по протоколу tcp, udp и общий.
тогда делайте так.
В примере статистика по 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
....
Огромное Вам спасибо за помощь.
Сейчас гуглю и настраиваю, я все же еще с Zabbix'ом только начал работать :o
Созданные элементы данных не поддерживается 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/)
С Zabbix Сервера работает команда, вы получаете правильный результат?
zabbix_get -s IP -k named_udp_eth0
где
IP - адрес вашего сервера, который вы мониторите
Покажите как вы настроили UserParameter в /etc/zabbix/zabbix_agentd.conf
С 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)
У вас либо проблемы с 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
У вас либо проблемы с 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
Результаты приложил в аттаче.
С других элементов данных графики стороятся и данные собираются или я чего-то не допонял, отвергает, только элементы данных созданные в ручном режиме!
А почему у вас ListenIP=127.0.0.1
Должен быть либо ListenIP=0.0.0.0
, т.е. все интерфейсы, либо IP конкретного интерфейса на сервере, куда будут приходить запросы.
Огромное Вам спасибо ув. dima_dm!!
Все заработало!
step_slim
07-07-2010, 15:10
Перепроверил у себя всё, что тут описывается, ничего не помогло :(
Вот мои файлы конфигурации zabbix-agentd.conf
Перепроверил у себя всё, что тут описывается, ничего не помогло :(
Вот мои файлы конфигурации 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 -
А если у меня нет имени ХОСТА? Ну при установки не присуждал я Тарификатору некакго имени, оставил это поле пустым, что без него не будет работать, ну попробую добавить.
Фаервола отрадясь на этих серверах не было, а на Тарификаторе вообще все запреты сняты, он с АТС получает данные, так что на нём вообще все разрешено, на сервере фаервол при установки отрубил.
з.ы. Увы не получилось, всё перепробовал...
Рекомендую tcpdump посмотреть, уходят ли запросы с Zabbix сервера и приходят ли они к Windows машине, так вы узнаете, где у вас пакеты фильтруются
MicroOLAP TCPDUMP for Windows
http://www.microolap.com/products/network/tcpdump/
Hostname= нужен только при использовании active checks
step_slim
08-07-2010, 08:27
Проверил и тут- всё нормально, запутался в конец, не бывает ведь такого... Посмотрите скрин.
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.
Я глубоко извиняюсь, я с zabbix`ом только вторую неделю, что есть у него Item??? Прописал я Hostname = tariffikator_se.
Настройка-> Узлы сети -> Элементы данных
В русском интерфейсе это Элементы данных, в английском Items
step_slim
08-07-2010, 09:13
dima_dm
:eek: И где тут что то про Agent???
В поле Тип написан тип проверки, найдите Item c типом Zabbix Agent и посмотрите его свойства, кликнув на названия Item в поле Описание.
step_slim
08-07-2010, 09:38
dima_dm
Изначально вообще не было никакого типа проверки в виде "zabbix-agent", создал вручную, вот как раз там и был выбор в работе agenta.
Вот настройки на проверку данного хоста.
Теперь осталось только ждать, когда Zabbix_Server получит данные. Вы должны увидить этот Item на закладке Мониторинг ->Последние данные
step_slim
08-07-2010, 11:07
Теперь осталось только ждать, когда Zabbix_Server получит данные. Вы должны увидить этот Item на закладке Мониторинг ->Последние данные
И вот прошёл час, а в указанной вкладке ничего, кроме "07 Jul 10:31:11 Unreachable (2 )" Запутался, уже куда и что тут...:confused:
У вас либо Item перешёл в неактивное состояние, и нужно его активировать, либо когда вы изменяли конфигурацию Zabbix_Agentd забыли его рестартовать, либо всё сразу.
Время, через которое проверяются неподдерживаемые элементы данных задаётся
Администрирование->Общие параметры->Обновлять неподдерживаемые элементы данных (секунды)
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), кол-во их айпи адресов???
Подскажите пожалуйста.
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).
Я правильно понял, что у вас используется NAT?
Тогда поиск нужно делать по адресу интерфейса на сервере, ведь на этот интерфейс приходят запросы, а про свой NAT адрес сервер ничего не знает (если конечно NAT не выполняется на этой-же машине, например с помощью iptable).
NAT нет. Просто машина с двумя сетевушками(одна для внешних игроков, вторая для локальных) и несколькими игровыми серверами, например Counter-Strike, у которого порт 27015, на нём сейчас 32 игрока. Какая команда отобразит эти же показания, чтобы я её использовал для zabbix ?
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 минуты.
Перезапускал, даже пересоздавал службу и узел сети- не работает, не знаю уже куда смотреть...
Обновляется подключение через каждые 2 минуты.
Рекомендую использовать Zabbix Agent, а не Zabbix Agent активный. Его отлаживать проще через zabbix_get, как я уже писал.
К сожаленью, я не знаком с принципом работы 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 сек ??
Может знаете как установить время сохранения равным 1 сек, или 0.1 сек ??
Модуль ip_conntrack используется для реализации full state inspection Firewall, это таблица состояния соединений. Соответственно и записи в ней хранятся в соответствии с Timeout TCP/IP стека. Но данный путь тоже Вам ничего не даст, т.к. с одного IP могут работать несколько игроков через PAT трансляцию, и на уровне UDP соединения вы их не различите. Частота обмена UDP пакетами тоже не равномерная, игрок может замереть на месте и новых пакетов не будет. Мой совет:
Ищите утилиту к серверу Counter-Strike, как я советовал.
Ищите утилиту к серверу Counter-Strike, как я советовал.
Просто дело не в одном Counter-Strike, есть и другие игровые сервера, поэтому нужно найти одно общее решение.
Просто дело не в одном Counter-Strike, есть и другие игровые сервера, поэтому нужно найти одно общее решение.
Ну вы поняли, что попытка отследить их на 3-м уровне модели OSI это тупиковый вариант? Поэтому игра не стоит свеч, а результат труда (Copyright В. Цой)
Нужно искать другой подход.
step_slim
08-07-2010, 14:27
Рекомендую использовать Zabbix Agent, а не Zabbix Agent активный. Его отлаживать проще через zabbix_get, как я уже писал.
Перевёл в пассивный режим, теперь мой АГЕНТ по всей сети рассылает по 10050 порту, уже всем серверам отправил и все ему ответили, кроме забикса.... Наверное придётся сдаться и к пятнице ни как не успеть допилить zabbix, спасибо за советы, но по видимому признаю поражение и опять на Nagiose сидеть.... :(
Перевёл в пассивный режим, теперь мой АГЕНТ по всей сети рассылает по 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]