Ad Widget

Collapse

Ubiquiti UniFi + zabbix

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • tikondrus
    Member
    • Jan 2011
    • 36

    #106
    Все же сделайте zabbix_get с Zabbix-сервера, а не zabbix_agentd -t
    работает

    Code:
    # zabbix_get -s zabbix -k "unifi.proxy[discovery,wlan]"
    {"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"}]}
    Не могу прокомментировать, так как это заморочки Zabbix-а - экранирование разных символов. Проверю завтра - ругается ли мой на такой аргумент. Могу лишь отметить, что вместо имени сайта default вы применяете имя wifi, что полагаю, неверно.
    с default тоже самое.

    первый Miner, второй - использовать Proxy с netcat.
    сних я начал. не работает.

    Comment

    • tikondrus
      Member
      • Jan 2011
      • 36

      #107
      вернулся на miner.
      UserParameter взял unifi.discovery unifi.state.id[*] unifi.state.mac[*] unifi.site.state[*]

      шаблон взял не для proxy, а для miner, по-проще.

      наконец-то что-то увидел в логе заббикс-агента
      Code:
      32562:20160327:212314.418 Zabbix agent item "unifi.discovery[uap]" on host "wap11" failed: first network error, wait for 15 seconds
       32590:20160327:212329.219 Zabbix agent item "unifi.discovery[wlan]" on host "wap11" failed: another network error, wait for 15 seconds
       32592:20160327:212344.013 Zabbix agent item "unifi.discovery[uap]" on host "wap11" failed: another network error, wait for 15 seconds
      увеличил у zabbix-serve Timeout=30

      но тишина.

      # zabbix_agentd -t unifi.site.state[uap,tx_bytes,sum]
      unifi.site.state[uap,tx_bytes,sum] [t|]
      # zabbix_get -s unifi-k unifi.site.state[uap,tx_bytes,sum]
      тишина

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #108
        Originally posted by tikondrus
        работает
        [CODE]# zabbix_get -s zabbix -k "unifi.proxy[discovery,wlan]"
        {"data":[{"{#SITENAME}":"default","{#NAME}":"wifi","
        В этом случае нужно констатировать, что скрипт подключился правильно и Zabbix server должен быть способен получить корректный JSON для LLD. Т.е. проблема, если размышлять логически, переносится на Zabbix server.

        Originally posted by tikondrus
        вернулся на miner.
        UserParameter взял unifi.discovery unifi.state.id[*] unifi.state.mac[*] unifi.site.state[*]
        шаблон взял не для proxy, а для miner, по-проще.
        Не думаю, что вам помогут старые шаблоны.

        Я проверил с утра совместимость с Zabbix3 с практически дефолтовыми настройками (под Debian всё происходит):
        • К Zabbix-agent v3 unifi_miner.pl в режиме совместимости с UniFi Proxy подключается корректно;
        • agentd -t со стороны агента и zabbix_get со стороны сервера (Zabbix v3) показывают корректный JSON;
        • Шаблон для UniFi Proxy 1.3 импортируется нормально;
        • Discovery rule отрабатывает, элементы данных создаются.


        Однако, у меня есть еще одно предложение: проверьте владельца файлов кэша во временном каталоге (/dev/shm - если не меняли его). В том случае, если они будут принадлежать root-у, то очистите весь каталог. Хотя, если у вас отображаются нормальные данные везде, кроме Zabbix-сервера, то наврядли дело в этом.

        По поводу вопроса экранирования:
        Code:
        zabbix-server-3:/# zabbix_get -s 172.16.100.235 -k "unifi.proxy[amean,user,default,\"[ap_mac=00:27:22:d4:73:13].roam_count\",,0]"
        3.64
        Так же я подправил код загружаемого модуля для компиляции с Zabbix3. На нагрузке не гонял, но загружается агентом он без видимых ошибок, LLD проводит.

        Comment

        • tikondrus
          Member
          • Jan 2011
          • 36

          #109
          Может скрипт на новый не заменили?
          да заменил же

          Так-то да. Проблема только в том, что у меня работает
          у меня заббикс не на Debian, а на centos 7. может стоит проверить на нём?

          Не думаю, что вам помогут старые шаблоны.
          пробовал и на шаблоне для Proxy, обновленном 2 дня назад.

          Так же я подправил код загружаемого модуля для компиляции с Zabbix3.
          модуль скомпилился, агент с ним запускается. но ничего не дискаверится.
          Last edited by tikondrus; 30-03-2016, 14:19.

          Comment

          • Eternity01
            Junior Member
            • May 2012
            • 5

            #110
            День добрый.

            Попробовал сначала использовать в своей инсталляции unifi_proxy, наткнулся на то что в ответ приходит пустой JSON {"data":[]}.

            Для теста попробовал то же самое на unifi_miner:
            Code:
             ./unifi_miner.pl -l https://127.0.0.1:8443 -s my_SITE -u my_root -p my_root_pass -v v3
            выдал тот же пустой JSON {"data":[]}

            Запрос с включенным дебагом:
            Code:
             ./unifi_miner.pl -l https://127.0.0.1:8443 -s my_SITE -u my_root -p my_root_pass -v v3 -d 3
            Получаю в ответ подобное:
            Code:
            [118539] 2016-05-10 09:27:34 [.] globalConfig:
            $VAR1 = {
                      'logout_path' => 'https://127.0.0.1:8443/logout',
                      'nullchar' => '',
                      'cachedir' => '/run/shm',
                      'stat_file' => './stat.txt',
                      'write_stat' => 0,
                      'key' => '',
                      'id' => '',
                      'content_type' => 'x-www-form-urlencoded',
                      'unifilocation' => 'https://127.0.0.1:8443',
                      'fetch_rules' => {
                                         'site' => {
                                                     'cmd' => '{"cmd":"get-sites"}',
                                                     'path' => 'cmd/sitemgr',
                                                     'method' => 1
                                                   },
                                         'user' => {
                                                     'path' => 'stat/sta',
                                                     'method' => 2
                                                   },
                                         'wlangroup' => {
                                                          'path' => 'list/wlangroup',
                                                          'method' => 2
                                                        },
                                         'sysinfo' => {
                                                        'path' => 'stat/sysinfo',
                                                        'method' => 2
                                                      },
                                         'setting' => {
                                                        'path' => 'get/setting',
                                                        'method' => 2
                                                      },
                                         'usergroup' => {
                                                          'method' => 2,
                                                          'path' => 'list/usergroup'
                                                        },
                                         'wlan' => {
                                                     'path' => 'list/wlanconf',
                                                     'method' => 2
                                                   },
                                         'alluser' => {
                                                        'path' => 'stat/alluser',
                                                        'method' => 2
                                                      },
                                         'uap' => {
                                                    'method' => 2,
                                                    'path' => 'stat/device'
                                                  }
                                       },
                      'api_path' => 'https://127.0.0.1:8443/api',
                      'unifiversion' => 'v3',
                      'sitename' => 'my_SITE',
                      'cachemaxage' => 60,
                      'unifitimeout' => 60,
                      'unifipass' => 'my_root_pass',
                      'stop_time' => 0,
                      'objecttype' => 'wlan',
                      'login_path' => 'https://127.0.0.1:8443/login',
                      'cnttailvals' => 0,
                      'unifiuser' => 'my_root',
                      'debuglevel' => 3,
                      'mac' => '',
                      'ua' => undef,
                      'downloaded' => 0,
                      'sitename_given' => 1,
                      'action' => 'discovery',
                      'start_time' => 0,
                      'login_data' => 'username=my_root&password=my_root_pass&login=login',
                      'jsonxs' => bless( do{\(my $o = '')}, 'JSON::XS' )
                    };
            
            [118539] 2016-05-10 09:27:34 [+] fetchData() started
            [118539] 2016-05-10 09:27:34 [>]<------> args: object type: 'site'
            [118539] 2016-05-10 09:27:34 [.]<------><------> Object path: 'https://127.0.0.1:8443/api/s/my_SITE/cmd/sitemgr'
            [118539] 2016-05-10 09:27:34 [.]<------><------> Cache expire or not found. Renew...
            [118539] 2016-05-10 09:27:34 [.]<------><------> Temporary cache file='/run/shm/https___127_0_0_1_8443_api_s_my_SITE_cmd_sitemgr.tmp'
            [118539] 2016-05-10 09:27:34 [+] fetchDataFromController() started
            [118539] 2016-05-10 09:27:34 [>]<------> args: object path: 'https://127.0.0.1:8443/api/s/my_SITE/cmd/sitemgr'
            [118539] 2016-05-10 09:27:34 [.]<------><------>Try to log in into controller...
            [118539] 2016-05-10 09:27:34 [>>]<-----><------> HTTP respose:
            <------>HTTP::Response=HASH(0x270c988)
            [118539] 2016-05-10 09:27:34 [!] Login error - wrong auth data
            [118539] 2016-05-10 09:27:34 [!] Can't fetch data from controller
            [118539] 2016-05-10 09:27:34 [.]<------><------> Going over all sites
            [118539] 2016-05-10 09:27:34 [.] Make LLD JSON
            [118539] 2016-05-10 09:27:34[*] Logout from UniFi controller
            {"data":[]}
            При этом стандартные простые родные скрипты вида:

            Code:
            #!/bin/sh
            ## define required variables
            username=my_root
            password=my_root_pass
            baseurl=https://localhost:8443
            site=my_SITE
            
            ## include the API library
            . /unifi_sh_api
            
            unifi_login
            
            unifi_backup /backupDIR/unifi-backup`date +%d%m%Y`.unf
            
            unifi_logout
            отрабатывают без проблем. Это как доказательство того что логин пароль - заведомо верные.

            Проблема я так понимаю в том что майнер не может договориться по TLS с самими unifi сервером о параметрах авторизации.

            Посоветуйте куда копать или как повысить уровень дебага.

            PS: Пробовал tcpdump'ить, но как оказалось глупо дампить SSL.

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #111
              Originally posted by Eternity01
              отрабатывают без проблем. Это как доказательство того что логин пароль - заведомо верные.

              Проблема я так понимаю в том что майнер не может договориться по TLS с самими unifi сервером о параметрах авторизации.

              Посоветуйте куда копать или как повысить уровень дебага.
              Временно измените строку (~ #853):

              Code:
              logMessage(DEBUG_HIGH, "[>>]\t\t HTTP respose:\n\t", $response);
              На
              Code:
              logMessage(DEBUG_HIGH, "[>>]\t\t HTTP respose:\n\t", Data::Dumper::Dumper($response));
              Примените опцию -c 0 для гарантированной попытки подключения к контроллеру. В логе будет raw для HTTP::Response (на данный момент он не дампится и это я не могу исправить сразу так, чтобы было красиво). Оставлять после отладки Dumper в вызове logMessage() не рекомендую - будет тормозить работу.

              Если вылезет что-то типа "SSL23_GET_SERVER_HELLO:unknown" - раскомментируйте пару строчек в начале скрипта, в противном случае - пишите, покумекаем.

              Comment

              • Eternity01
                Junior Member
                • May 2012
                • 5

                #112
                Спасибо за ответ.

                Строчки типа про IO::Socket::SSL в начале скрипта раскоментировал еще до этого.

                Поменял строчку 853.

                В итоге получил вот что 444.txt

                У Вас есть возможность сравнить вывод с рабочим или взглянуть наметанным глазом?

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #113
                  Originally posted by Eternity01
                  У Вас есть возможность сравнить вывод с рабочим или взглянуть наметанным глазом?
                  Да, ерунда какая-то на тестовом UniFI Controller 3.x. В продакшне 4.x вполне себе работает. Поковыряю.

                  Comment

                  • sadman
                    Senior Member
                    • Dec 2010
                    • 1611

                    #114
                    Originally posted by eternity01

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

                    Comment

                    • vrosansys
                      Junior Member
                      • Jun 2016
                      • 4

                      #115
                      Всем привет!
                      Кто-то проверял работу unifi_miner на контроллере V5?

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #116
                        Я не проверял, но схема авторизации, насколько я понял, с v4 не менялась, API в целом тот же. Так что процентов 90% вероятности того, что заработает без правок.

                        Правда, Ubiquinti как всегда отличились - вынесли VOIP (судя по их "пресс-релизу") в отдельный софтовый контроллер. Так же, как видео. Хотя в интерфейсе закладки остались. Но будут ли на них отображаться девайсы - открытый вопрос.

                        В v5 добавились зачатки мониторинга SDN, Cloud, DPI. Самое интересное - это DPI, но к нему нужен вендоровский роутер, чтобы узнать какие метрики может отдавать контроллер. Декомпиляцией и разборкой индусско-жабовского кода заниматься невесело.

                        Comment

                        • fermion
                          Junior Member
                          • Oct 2014
                          • 13

                          #117
                          Originally posted by vrosansys
                          Всем привет!
                          Кто-то проверял работу unifi_miner на контроллере v5?
                          да, проверяли, после обновления контроллера ничего не сломалось

                          Comment

                          • xhtml
                            Junior Member
                            • Jun 2016
                            • 10

                            #118
                            zabbix

                            Добрый день всем!

                            Unifi Controller v4
                            Unifi_miner + Template Unifi Proxy 1.3.0

                            Не могу понять, узел есть, шаблон добавлен.

                            По запросу все отдает:

                            Code:
                            user@zabbix:~# zabbix_get -s wifi.gipsr.ru -k "unifi.proxy[discovery,wlan]"
                            Argument "" isn't numeric in addition (+) at /usr/local/lib/zabbix/unifi_miner.pl line 208.
                            {"data":[{"{#NAME}":"audience","{#SITENAME}":"default","{#ISGUEST}":"0","{#SITEID}":"53c045dae4b0e757227f430a","{#ID}":"53c049e6e4b0e757227f4388","{#SITEDESC}":"SPbGIPSR"},{"{#SITEDESC}":"SPbGIPSR","{#ID}":"5661a6760cf232e17e1f6403","{#ISGUEST}":"0","{#SITEID}":"53c045dae4b0e757227f430a","{#SITENAME}":"default","{#NAME}":"audience"},{"{#NAME}":"GIPSR","{#SITENAME}":"default","{#SITEID}":"53c045dae4b0e757227f430a","{#ISGUEST}":"1","{#ID}":"5661a5050cf232e17e1f6380","{#SITEDESC}":"SPbGIPSR"},{"{#NAME}":"GIPSR","{#SITENAME}":"default","{#SITEID}":"53c045dae4b0e757227f430a","{#ISGUEST}":"1","{#ID}":"53c049bbe4b0e757227f4386","{#SITEDESC}":"SPbGIPSR"}]}
                            user@zabbix:~#
                            Но в zabbix никаких данных так и не попадает

                            Comment

                            • sadman
                              Senior Member
                              • Dec 2010
                              • 1611

                              #119
                              Zabbix все делает по инструкции, а вот это ломает ему JSON:

                              Originally posted by xhtml
                              Argument "" isn't numeric in addition (+) at /usr/local/lib/zabbix/unifi_miner.pl line 208.
                              В том Miner, что сейчас на гитхабе (v1.3.4), стр. 208 принадлежит блоку разбора командной строки. Значит какая-то проблема с параметрами командной строки в UserParameter.

                              При вашем ключе должен сформироваться такой вызов скрипта:

                              Code:
                              ./unifi_miner.pl -a "discovery" -o "wlan" -s "" -k "" -i "" -n "" -c ""
                              {"data":[]}
                              [B]или такой[/B]
                              ./unifi_miner.pl -a "discovery" -o "wlan" -s  -k  -i  -n  -c
                              {"data":[]}
                              Как видите - схожей ошибки повторить не удалось.

                              Убедитесь, что Miner у вас не старый (я уже исправлял такой баг).

                              Проверьте UserParameter:
                              Code:
                              # Using UniFi Miner with UniFi Proxy template
                              UserParameter=unifi.proxy[*],/usr/local/bin/zabbix/unifi_miner.pl -a "$1" -o "$2" -s "$3" -k "$4" -i "$5" -n "$6" -c "$7"
                              Запустите Miner c шелла, как я.

                              Вобщем нужно понять, какой параметр командной строки толкает скрипт на скользкую дорожку.

                              Comment

                              • xhtml
                                Junior Member
                                • Jun 2016
                                • 10

                                #120
                                Взял последнюю версию с git
                                c сервера zabbix

                                Code:
                                zabbix_get -s wifi.gipsr.ru -k "unifi.proxy[discovery,wlan]"
                                {"data":[]}
                                с консоли unifi controller

                                Code:
                                @wifi:~# /usr/local/lib/zabbix/unifi_miner.pl -a "discovery" -o "wlan" -s "" -k "" -i "" -n "" -c ""
                                {"data":[]}
                                Логи агента на машине с контроллером
                                Code:
                                   572:20160627:112104.575 active check "unifi.proxy[get,setting,,"[key=locale].timezone"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
                                   572:20160627:112104.577 active check "unifi.proxy[get,setting,,"[key=mgmt].alert_enabled"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
                                   572:20160627:112104.577 active check "unifi.proxy[get,setting,,"[key=mgmt].auto_upgrade"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
                                   572:20160627:112104.577 active check "unifi.proxy[get,setting,,"[key=mgmt].led_enabled"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
                                   572:20160627:112104.577 active check "unifi.proxy[get,setting,,"[key=voip].auto_adopt"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
                                   572:20160627:112104.577 active check "unifi.proxy[get,setting,,"[key=voip].enabled"]" is not supported: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.

                                Comment

                                Working...