Ad Widget

Collapse

Ubiquiti UniFi + zabbix

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #91
    Выпущены UniFi Miner v1.1.0-rc и UniFi Proxy v1.1.0-rc, их код синхронизирован.

    Итак, о нововведениях.

    1) Все групповые операции и действия проводятся над всеми сайтами, заведенными в контроллере, если имя сайта не задано. Результат обобщается (склеивается при discovery или складывается при прочих).

    2) Добавлены новые типы наблюдаемых объектов:
    • alluser - пользователь, внесенный в архив контроллера. Т.е. когда-либо подключавшийся через любое, поддерживаемое контроллером устройство;
    • user - пользователь, подключенный в момент запроса через любое, поддерживаемое контроллером, устройство;
    • health - текущее состояние модулей контроллера UniFi (см. Dashboard контроллера v4);
    • sysinfo - объект, содержащий некоторые системные данные о контроллере;
    • setting - объект, связанный с хранилищем настроек (см. закладку Settings -> Site в web-интерфейсе контролера);
    • network - определенная на контроллере сеть (см. Settings -> Networks);
    • usergroup - пользовательская группа (см. Settings -> User Groups);


    3) В операцию discovery добавлена возможность получения LLD с любого поддерева JSON. Кастомизация доступна через виртуальные типы объектов. В качестве примера заведены:
    • uap_vap_table - список виртуальных точек доступа определенной UAP;
    • usw_port_table - таблица портов UniFi Switch.


    4) Miner можно запускать в режиме совместимости с Proxy и использовать один и тот же шаблон Zabbix.

    5) Расширены возможности фильтров:
    • Добавлена обработка логического оператора "или";
    • Появилась возможность указывать в условии фильтра неравенство.


    6) Введены новые групповые операции:
    • pcount - вычисление процента найденных при применении фильтра JSON-ключей от их общего количества.
    • psum - вычисление процента суммы значений отфильтрованных JSON-ключей от их общей суммы.


    v2/v3 и мультисайтовость особо не тестировал, поэтому не release, a release candidat.

    У кого на Proxy валили ошибки на строчках с logMessage() в консоль - обновитесь, проверьте.

    Забирать тут: Miner, Proxy.

    Русская документация с примерами подправлена, английская в процессе. Дополненный шаблон выложен

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #92
      v1.2.0-rc

      Небольшое дополнение в групповых операциях:
      • avgsum - вычисление среднего арифметического суммы значений отфильтрованных JSON-ключей.

      Что с ней делать? Например - можно грубо оценить корректность расположения точки доступа относительно клиентов или источника помех помониторив средний Noise level, RSSI или TX/RX Rate, который вычисляется для подключенных пользователей. Хотя тут, наверное, более правильно по среднему медианному считать. Будет, что впихать в следующие выпуски скрипта )

      Например, можно видеть, что в целом клиенты не очень близко походят к точке или имеют преграды на пути сигнала (у нас, например, стены в 60см кирпича). Но в 17:54 кто-то подбежал поближе к тарелке и улучшил статистику, показав, что, в целом, возможность улучшить RSSI имеется.



      К сожалению пришлось сразу же переименовать pcount в percount и psum в persum. Надеюсь, что ими никто еще особо не пользовался.

      Скрипты, темплейты все там же: Miner, Proxy, шаблон

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #93
        Несколько раз в этой теме всплывали вопросы, связанные с нахождением узких мест в UniFi, но я, признаться не уделял данной проблематике должного внимания в связи с размером выделяемого на беспроводные технологии бюджета - 0 единиц в любой валюте. Изменить ситуацию не смог бы всё равно, а прием антидепрессантов не входил в мои планы.
        Но, начав относиться к вопросу философски, я таки решил посмотреть, как можно попользоваться данными с контроллера. На академическую новизну излагаемого материала я не претендую, так что отнеситесь ко всему снисходительно.

        Итак, как можно понять, что атмосфера вокруг беспроводной точки нездоровая?
        Самое простое - обратиться к закладке Devices -> APs -> Perfomance, в веб-интерфейсе UniFi. Чем больше красного - тем хуже ситуация. Оранжевый цвет - ситуация так себе, зеленый - всё относительно прекрасно. В Zabbix эти величины можно вытащить с помощью следующих метрик объекта uap:
        • xx_ast_txto + xx_ast_cst => красная зона;
        • xx_tx_retries => оранжевая;
        • xx_ast_be_xmit + xx_tx_packets => зеленая.

        xx - вид радио: na, ng, etc.

        В интефейсе Ubiquiti эти три величины пересчитываются к процентному отношению, но как это красиво сделать в Zabbix - я не знаю.

        Так же можно читать метрики tx_errors и rx_errors, stat.tx_dropped и stat.rx_dropped. Рост значений означает проблему с передачей или приемом сигнала точкой.

        Способ посложнее - начать анализировать всё, что относится к приемо-передаче: уровень шума, сигнала, качество приема, rx/tx rate и пр. Эти характеристики привязаны в UniFi к пользователям, что ведет к некоторым казусам. Например, rx_bytes клиента - это не его входящий трафик, а исходящий (подразумевается часть величины rx_bytes беспроводной точки, относящаяся к данному клиенту).

        Таким образом, постимпрессионическую картину состояния точки доступа можно получить применив агрегирующие функции и фильтры к значениям определенных метрик объектов user, относящихся к определенной точке доступа:
        • noise - уровень шума радиоэфира в dBm. Выше шум - хуже клиенту. Ищите фонящие микроволновки;
        • signal - уровень сигнала принимаемого конкретным клиентом в dBm. Низкий сигнал намекает на проблемы с прохождением сигнала;
        • rssi - показатель силы принимаемого сигнала. Для Ubiquiti это, скорее, SNR - разница между уровнями шума и сигнала. Выше RSSI - лучше. Установленных величин мне найти не удалось, но представители вендора считают наименьшей приемлемой величину в 20 dBm.
        • rx_rate, tx_rate - установленная скорость соединения клиента (в этом случае разночтения в rx/tx нет) на передачу и прием. Выше - теоретически лучше;
        • ccq - некая сущность, интегрирующая вышеописанные величины. Точной информации по ней мне найти не удалось, но для OS AirMax CCQ описывают, примерно как "значение, определяющее удовлетворенность работы клиента с текущим rx/tx rate". Пересчитываю ее в проценты с множителем 0.1;
        • roam_count - переходов клиента с точки на точку.


        Проиллюстрирую применение этих данных.



        В этом вязании можно увидеть, что подавляющее большинство клиентов работают с низким RSSI. "Low signal" определен мной, как RSSI <= 25dBm. И в этом есть доля истины, так как они соединяются из подвала, отделенного от точки железобетонным перекрытием. Что с этим делать? Ставить дополнительную точку ближе к основной массе клиентов, если есть финансирование.



        Однако, CCQ достаточно хорошее, что говорит о том, что разрывов при выбранном клиентамиrx/tx rate нет (если верить Ubiquiti). Они получают медленный, но стабильный канал.



        Тем не менее некоторые практики утверждают, что лучше клиентов с низким SNR отстреливать - другим будет лучше. В UniFi для этого применяется директива MinRSSI. В расчете ее величины неплохо бы опираться на некоторую статистику, правда? Давайте посмотрим на нее.
        При MinRSSI=20 для данной UAP мы потеряем примерно половину клиентов. Если они вам все же важны - наверняка стоит остановится на величине в 10dBm или продолжить уточнение потерь на 15dBm.



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

        Шаблон с этими графиками и скрипт с поддержкой необходимого функционала находится в экспериментальном выпуске Miner и Proxy

        Об анализе поведения конкретного клиента расскажу в следующем посте, как только накопится статистика.
        Last edited by sadman; 08-02-2016, 15:53.

        Comment

        • tikondrus
          Member
          • Jan 2011
          • 36

          #94
          у меня проблема в том, что сами по себе скрипты работают

          Code:
          ./unifi_miner.pl -a sum -o uap -k items_num
          11
          или

          Code:
          # zabbix_agentd -t unifi.discovery[wlan]
          unifi.discovery[wlan]                         [t|{"data":[{"{#SITENAME}":"default","{#NAME}":"wifi","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"53e0c8bc6559ae84d987e945","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Guest","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"1","{#ID}":"56b0c50be4b08966faae1b5f","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Radius","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"542163a2e4b0cfcb6b1fdf15","{#SITEDESC}":"wifi"}]}]
          Code:
          # zabbix_agentd -t unifi.proxy[discovery,health]
          unifi.proxy[discovery,health]                 [t|{"data":[{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"wlan","{#SITEDESC}":"wifi","{#STATUS}":"ok"},{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"wan","{#SITEDESC}":"wifi","{#STATUS}":"unknown"},{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"www","{#SITEDESC}":"wifi","{#STATUS}":"unknown"},{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"lan","{#SITEDESC}":"wifi","{#STATUS}":"unknown"}]}]
          а вот в zabbixe после истечения времени discovery ничего не происходит. Пробовал шаблон UBNT UniFi Controller для proxy и UBNT UniFi для miner

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

          Code:
          # ./unifi_miner.pl -o ap -k num_sta -a sum
          # ./unifi_miner.pl -o ap -i 548ee2c5e4b09e91ed76bd48 -k vap_table.is_guest -a sum
          # ./unifi_miner.pl -o ap -i 548ee2c5e4b09e91ed76bd48 -k guest-num_sta
          # ./unifi_miner.pl -o ap -i 548ee2c5e4b09e91ed76bd48 -k version
          а вот так получает данные точки
          Code:
          # ./unifi_miner.pl -o [B]uap [/B]-i 548ee2c5e4b09e91ed76bd48
          {"data":[{"{#SITEID}":"53e0c8746559ae84d987e932","{#STATE}":"1","{#SITEDESC}":"wifi","{#IP}":"192.168.6.97","{#SITENAME}":"default","{#NAME}":"Wap 21","{#MAC}":"24:a4:3c:50:09:44","{#ADOPTED}":"1","{#ID}":"548ee2c5e4b09e91ed76bd48"}]}
          а версию проши ен показывает
          Code:
          # ./unifi_miner.pl -o uap -i 548ee2c5e4b09e91ed76bd48 -k version
          В логи заббикс ничего не пишет. может дело в несовместимости шаблона с 3м заббиксом?
          Last edited by tikondrus; 25-03-2016, 18:29.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #95
            Originally posted by tikondrus
            у меня проблема в том, что сами по себе скрипты работают
            Признаю - это мой недосмотр. Я подумаю над исправлением ситуации.

            Originally posted by tikondrus
            В логи заббикс ничего не пишет. может дело в несовместимости шаблона с 3м заббиксом?
            Исключать такого варианта не буду, но всё же предположу, что вы частично взяли примеры использования из первых постов - например, указываете объект ap. С тех пор изменилось многое.

            Что я могу вам предложить:
            1) Взять последнюю версию скрипта с гитхаба (один неприятный момент с discovery был исправлен мною буквально вчера);
            2) Подключить его в режиме совместимости с Proxy, как указано в Руководстве: UserParameter=unifi.proxy[*],/usr/local/bin/zabbix/unifi_miner.pl -a $1 -o $2 -s $3 -k "$4" -i $5 -n $6 -c $7;
            3) Импортировать темплейт для UniFi Proxy 1.3, задизейблить ненужные элементы данных и подключить его к соответствующему узлу;
            4) Сообщить - не будет ли в графиках "дыр". Zabbix 2.4.7 не справляется с большим количеством частых активных проверок, интересно как с этим у Zabbix 3.0.

            Comment

            • tikondrus
              Member
              • Jan 2011
              • 36

              #96
              огромное спасибо за оперативный ответ. быстрый фидбек действительно очень приятен.

              1) скачал с гита новый miner. ок.
              2)
              Подключить его в режиме совместимости с Proxy, как указано в Руководстве: UserParameter=unifi.proxy[*],/usr/local/bin/zabbix/unifi_miner.pl -a $1 -o $2 -s $3 -k "$4" -i $5 -n $6 -c $7;
              из руководства не совсем следует, что нужно оставить только UserParameter=unifi.proxy[*]. ну хорошо. оставил так.
              3) всё сделано.
              ненужные элементы данных
              - а как понять, какие не нужные предположим, нет у меня UniFi Phones и Switches и я отключил соответствующие discovery rules.
              После импорт шаблона и рестарта забикс агента, вижу, что в дискавери есть ключи, например unifi.proxy[discovery,health]. Прописал все параметры в скрипте.
              проверяем:
              Code:
              # zabbix_agentd -t unifi.proxy[discovery,health]
              unifi.proxy[discovery,health]                 [t|Argument "" isn't numeric in addition (+) at /usr/lib/zabbix/externalscripts/unifi_miner.pl line 208.
              {"data":[{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"wlan","{#SITEDESC}":"wifi","{#STATUS}":"ok"},{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"wan","{#SITEDESC}":"wifi","{#STATUS}":"unknown"},{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"www","{#SITEDESC}":"wifi","{#STATUS}":"unknown"},{"{#SITENAME}":"default","{#SITEID}":"53e0c8746559ae84d987e932","{#SUBSYSTEM}":"lan","{#SITEDESC}":"wifi","{#STATUS}":"unknown"}]}]
              ]
              хорошо, что то получает.
              Code:
              ./unifi_miner.pl -a sum -o uap -k items_num
              11
              таки да, количество uap в моей сети=11.

              4) до дыр в графиках как вы понимаете, дело не дошло. данные от items в темплейте заббикс не получает. Новые items не дискаверятся. в логе заббикса ничего. Controller 4.8.14. zabbix 3.0.1. unifi_miner.pl 3 day ago.

              Comment

              • sadman
                Senior Member
                • Dec 2010
                • 1611

                #97
                Originally posted by tikondrus
                2) из руководства не совсем следует, что нужно оставить только UserParameter=unifi.proxy[*]. ну хорошо. оставил так.
                Да, наверное это так. Мне-то самому понятно, что в этой строчке передаются все параметры, получаемые от zabbix, то есть unifi.proxy[discovery,health] трансформируется в ./unifi_miner.pl -a discovery -o health и, в этом случае, дополнительные Userparameter не нужны. Пожалуй, нужно будет оставить один вариант подключения, чтобы не морочить людям голову.

                Originally posted by tikondrus
                3) всё сделано. - а как понять, какие не нужные предположим, нет у меня UniFi Phones и Switches и я отключил соответствующие discovery rules.
                Как раз это и не имеет смысла, хотя и не навредит - меньше будет дергаться скрипт без особого смысла

                Когда вы получите первые результаты LLD - в Latest Data будет огромное количество элементов данных в разделе UAP. Из них часто бывают нужны только связанные с траффиком и количеством клиентов. Загляните в прототипы, относящиеся к правилам обнаружения.

                У меня на 6-ти тарелках порядка 300 элементов данных. На ваших 11-ти их будет примерно вдвое больше. Но у меня они болтаются в силу того, что нужно проверять скрипт - правильно ли он обрабатывает запросы. Кроме того - я сам пользуюсь UniFi Proxy - она и систему меньше грузит и с "Zabbix agent (active)" работает без проблем (с Miner возможны таковые).

                Originally posted by tikondrus
                Code:
                # zabbix_agentd -t unifi.proxy[discovery,health]
                unifi.proxy[discovery,health]                 [t|Argument "" isn't numeric in addition (+) at /usr/lib/zabbix/externalscripts/unifi_miner.pl line 208.
                {"data":[{"{#SITENAME}":"default","
                Загадочное явление. Я только что скопировал эту строчку в свой zabbix_agentd.conf - Argument "" isn't numeric in addition , который я как раз и фиксил недавно, не проявился. Попробуйте вручную запустить: ./unifi_miner.pl -a discovery -o wlan -c "" Проблема с приведением "" к int проявлялась как раз при -c "", который приезжал через UserParameter. По итогам напишите мне в PM, чтобы тут не сорить дебагом.

                Originally posted by tikondrus
                4) до дыр в графиках как вы понимаете, дело не дошло. данные от items в темплейте заббикс не получает.
                Если дойдет, то придется перепиливать шаблон на пассивные проверки с увеличением количества серверных пулеров или отключать часть проверок. Агент будет "терять" данные при большом количестве активных элементов данных.

                Originally posted by tikondrus
                Новые items не дискаверятся
                Таки да - JSON некорректный на данный момент из-за Argument "" isn't numeric in addition.

                Originally posted by tikondrus
                Controller 4.8.14. zabbix 3.0.1. unifi_miner.pl 3 day ago.
                Все самое новое. Тем интересней будет узнать - работает или нет. Я до 4.8 не обновлялся еще - судя по форуму он не совсем стабилен. Сижу на третьей ветке.

                Comment

                • tikondrus
                  Member
                  • Jan 2011
                  • 36

                  #98
                  Таки да - json некорректный на
                  ждем новых фиксов?

                  Если дойдет, то прид
                  пока нет

                  Все самое новое. Тем интересней будет узнать - работает или нет.
                  да, но пока не работает

                  Comment

                  • tikondrus
                    Member
                    • Jan 2011
                    • 36

                    #99
                    пробую настроить через unifi_proxy. Скачал с гита. смотрю zbx_unifi_proxy.conf. а там "
                    # Use Zabbix Loadable Module for taking value
                    LoadModulePath=/usr/local/lib/zabbix
                    LoadModule=unifi.so".

                    Что за модуль? где брать?

                    запустил, проверяю:
                    Code:
                    # echo "discovery, wap" | nc 127.0.0.1 8448 -q 1
                    nc: invalid option -- 'q'
                    Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.
                    nc у меня nmap-ncat-6.40-7.el7.x86_64. ну нет у него параметра q.
                    а вот без параметра работает

                    Code:
                    # echo "discovery" | nc 127.0.0.1 8448
                    {"data":[{"{#SITENAME}":"default","{#NAME}":"wifi","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"53e0c8bc6559ae84d987e945","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Guest","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"1","{#ID}":"56b0c50be4b08966faae1b5f","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Radius","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"542163a2e4b0cfcb6b1fdf15","{#SITEDESC}":"wifi"}]}
                    вроде работает. поменял userparameter. но все равно ничего не дискаверится

                    Comment

                    • sadman
                      Senior Member
                      • Dec 2010
                      • 1611

                      #100
                      Originally posted by tikondrus
                      ждем новых фиксов?
                      Так-то да. Проблема только в том, что у меня работает, а схожую ошибку я уже зафиксил. Может скрипт на новый не заменили?

                      208-я строка должна быть такой: $globalConfig->{$_} = ('' ne $options->{$optkey}) ? 0 + $options->{$optkey} : 0 ;


                      Originally posted by tikondrus
                      пробую настроить через unifi_proxy. Скачал с гита. смотрю zbx_unifi_proxy.conf. а там "
                      # Use Zabbix Loadable Module for taking value
                      LoadModulePath=/usr/local/lib/zabbix
                      LoadModule=unifi.so".

                      Что за модуль? где брать?
                      Компилировать. Руководство по UniFi Proxy, раздел "Интеграция с системой мониторинга".

                      Originally posted by tikondrus
                      nc у меня nmap-ncat-6.40-7.el7.x86_64. ну нет у него параметра q.
                      а вот без параметра работает
                      Если он закрывает соединение и вываливается назад в шелл - очень хорошо. Если висит и ждет ещё чего-то - то ничего работать и не будет... Заббиксу-то уходит всё по завершению консольного приложения.

                      Originally posted by tikondrus
                      вроде работает. поменял userparameter. но все равно ничего не дискаверится
                      C бокса, где Zabbix Server расположен, zabbix_get -s ... -k unifi.proxy[discovery,wlan] дает JSON без всякой там перловой ругани? Срок discovery rule с UAP-ами временно уменьшите ло 60 сек - так проще будет понять - сработает или крестами покроется.

                      Comment

                      • tikondrus
                        Member
                        • Jan 2011
                        • 36

                        #101
                        Компилировать. Руководство по UniFi Proxy, раздел "Интеграция с системой мониторинга".
                        опятьже, это не очевидно. вы говорите, что есть три пути спользования - miner, proxy, module.
                        настраиваю proxy и в дефолтном конфиге включен модуль. не логично.


                        Если он закрывает соединение и вываливается назад в шелл - очень хорошо.
                        да

                        C бокса, где Zabbix Server расположен,
                        Code:
                        # zabbix_agentd -t unifi.proxy[discovery]
                        unifi.proxy[discovery]                        [t|{"data":[{"{#SITENAME}":"default","{#NAME}":"wifi","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"53e0c8bc6559ae84d987e945","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Guest","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"1","{#ID}":"56b0c50be4b08966faae1b5f","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Radius","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"542163a2e4b0cfcb6b1fdf15","{#SITEDESC}":"wifi"}]}]
                        Code:
                        # zabbix_agentd -t unifi.proxy[discovery,wlan]
                        unifi.proxy[discovery,wlan]                   [t|{"data":[{"{#SITENAME}":"default","{#NAME}":"wifi","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"53e0c8bc6559ae84d987e945","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Guest","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"1","{#ID}":"56b0c50be4b08966faae1b5f","{#SITEDESC}":"wifi"},{"{#SITENAME}":"default","{#NAME}":"wifi_Radius","{#SITEID}":"53e0c8746559ae84d987e932","{#ISGUEST}":"0","{#ID}":"542163a2e4b0cfcb6b1fdf15","{#SITEDESC}":"wifi"}]}]
                        Code:
                         уменьшите ло 60 сек -
                        это и так понятно, не ждать же час после каждого изменения.

                        но items не краснеют, т.к. нечему краснеть, они не дискаверятся.

                        из консоли
                        Code:
                        # zabbix_agentd -t unifi.proxy[amean,user,wifi,"[ap_mac=24:a4:3c:50:09:44].roam_count",,0]
                        unifi.proxy[amean,user,wifi,[ap_mac=24:a4:3c:50:09:44].roam_count,,0] [m|ZBX_NOTSUPPORTED] [Invalid item key format.]
                        # zabbix_agentd -t icmppingloss[10.20.6.97]
                        icmppingloss[10.20.6.97] [m|ZBX_NOTSUPPORTED] [Unsupported item key.]

                        Comment

                        • tikondrus
                          Member
                          • Jan 2011
                          • 36

                          #102
                          продолжаю сношаться.

                          компилируем модуль согласно мануала
                          1)Загрузить исходные коды Zabbix и распаковать их;
                          ОК
                          2)Выполнить команду ./configure в дереве исходных кодов Zabbix без каких-либо опций. В итоге, при успешном завершении, будут созданы несколько программных файлов, необходимых для дальнейшей работы;
                          ОК
                          3)Создать в дереве исходных кодов каталог src/modules/unifi;
                          ОК
                          4)Поместить в src/modules/unifi файлы Makefile и unifi.c
                          ОК
                          5)Перейти в созданный каталог и выполнить команду make;
                          Code:
                          # make
                          gcc -fPIC -shared -o unifi.so unifi.c -I../../../include
                          unifi.c:1:20: fatal error: sysinc.h: No such file or directory
                           #include "sysinc.h"
                                              ^
                          compilation terminated.
                          make: *** [unifi] Error 1
                          потому что в make-файле нехватает проблема между -I и ..
                          Code:
                          gcc -fPIC -shared -o unifi.so unifi.c -I../../../include
                          но после его фикса получаем

                          Code:
                          In file included from ../../../include/sysinc.h:118:0,
                                           from unifi.c:1:
                          /usr/include/string.h:172:14: note: expected ‘const char *’ but argument is of type ‘int’
                           extern char *strdup (const char *__s)
                                        ^
                          make: *** [unifi] Error 1

                          опять приплыли.

                          Comment

                          • tikondrus
                            Member
                            • Jan 2011
                            • 36

                            #103
                            попробовал на сорсах от заббикса 2.4.7.
                            на них компилится
                            Code:
                            # make
                            gcc -fPIC -shared -o unifi.so unifi.c -I ../../../include
                            после перезапуска забикс-агента пишет
                            Code:
                             1912:20160327:191359.920 using configuration file: /etc/zabbix/zabbix_agentd.conf
                              1912:20160327:191359.920 cannot load module "unifi.so": /usr/local/lib/zabbix/unifi.so: undefined symbol: zbx_tcp_strerror

                            Comment

                            • tikondrus
                              Member
                              • Jan 2011
                              • 36

                              #104
                              скомпилил unifi_proxy_get. заменил в конфиге заббикса UserParameter

                              Code:
                              # zabbix_agentd -t "unifi.proxy[discovery,wlan]"
                              работает.

                              но в целом таже фигня. Items не дискаверятся, в логах тишина.

                              Comment

                              • sadman
                                Senior Member
                                • Dec 2010
                                • 1611

                                #105
                                Originally posted by tikondrus
                                опятьже, это не очевидно. вы говорите, что есть три пути спользования - miner, proxy, module.
                                настраиваю proxy и в дефолтном конфиге включен модуль. не логично.
                                Нет, у вас уже перепуталось всё.
                                Изначально был простой перловый скрипт, который запускался в шелле, коннектился на UniFi Controller, согласно запросу что-нибудь искал в том, что оттуда получал, складывал, выводил в stdout. Но так, как при запуске перлового скрипта высокие накладные расходы на загрузку модулей, компиляцию (каждый раз), то высокого быстродействия с ним было не достичь и он легко сжирал 40% CPU при мониторинге коммутатора на 50 портов. Ну и время выполнения не удавалось снизить менее, чем до 0,5сек/запуск. Это UniFi Miner, к Zabbix подключался он единственным способом - через UserParameter.

                                Поэтому вся логика была перенесена в другое исполнение, работающее как TCP-сервер. Он слушает порт, получает в TCP-сеансе запрос, быстро шуршит у себя в памяти, отдает обратно в том же TCP-сеансе и ждет следующего запроса, не закрывая порт. Так же он может распараллелить обработку запросов. При этом удалось снизить загрузку CPU до 3-5% и достичь скорости обработки в ~1300 запросов/сек. Это UniFi Proxy. Он подключается двумя способами. Первый - через UserParameter, в котором дергается любая утилита, которая может кинуть в TCP-порт запрос и получить оттуда ответ. Штатная утилита для этого - netcat, ее не нужно компилировать специально, но может быть применена любая другая, например самописная. Там у меня есть исходник unifi_proxy_get - она работает быстрее, чем netcat, но должна быть откомпилирована. Однако, где UserParameter - там и дорогие системные форки, которые не позволяют получить максимальную производительность. Второй способ - подключаемый модуль Zabbix устраняет данную проблему, но и требует применения дополнительных усилий.

                                Итого: есть UniFi Miner для отладки и простых применений (посчитать трафик и пользователей на тарелках) и UniFi Proxy для ситуаций, когда выгода от Miner-а становится неочевидной. Однако темплейты для двух приложений клепать не очень весело, поэтому я сделал один, а Miner подключается в "режиме совместимости".

                                Я бы рекомендовал сначала добить Miner, потому что с Proxy сложнее разбираться.

                                [CODE]# zabbix_agentd -t unifi.proxy[discovery,wlan]
                                unifi.proxy[discovery,wlan] [t|{"data":[{"{#SITENAME}":"default","{#NAME}":"wifi","
                                zabbix_agentd -t и zabbix_get ...-k - это инструменты для разных этапов. С zabbix_agentd можно узнать подключился ли скрипт к агенту, что он выдает в принципе. zabbix_get позволяет имитировать запрос Zabbix-сервера. Т.е. то, что получит zabbix_get - то получит и сервер. И, надо признать, что результаты работы этих двух утилит могут оказаться очень разными. Например, zabbix_agentd -t не покажет, что агент прикрыт файерволом или его глушит selinux, который любит гадить в CentOS.

                                но items не краснеют, т.к. нечему краснеть, они не дискаверятся.
                                Все же сделайте zabbix_get с Zabbix-сервера, а не zabbix_agentd -t

                                Code:
                                # zabbix_agentd -t unifi.proxy[amean,user,wifi,"[ap_mac=24:a4:3c:50:09:44].roam_count",,0]
                                unifi.proxy[amean,user,wifi,[ap_mac=24:a4:3c:50:09:44].roam_count,,0] [m|ZBX_NOTSUPPORTED] [Invalid item key format.]
                                Не могу прокомментировать, так как это заморочки Zabbix-а - экранирование разных символов. Проверю завтра - ругается ли мой на такой аргумент. Могу лишь отметить, что вместо имени сайта default вы применяете имя wifi, что полагаю, неверно.

                                компилируем модуль согласно мануала
                                Code:
                                # 
                                потому что в make-файле нехватает проблема между -I и ..
                                ....
                                но после его фикса получаем 
                                make: *** [unifi] Error 1
                                опять приплыли.
                                Верно. Вы же под 3.0 компилируете, а я ещё на 2.4.7 сижу и под ним же и проверял. Так что варианта два: первый - добить Miner, второй - использовать Proxy с netcat.

                                А мне, видимо, придется ставить 3.0 куда-то...

                                Comment

                                Working...