Ad Widget

Collapse

Проблема с Zabbix API

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gdgsoft
    Senior Member
    • Apr 2009
    • 202

    #1

    Проблема с Zabbix API

    До сих пор использовал Zabbix 1.8.2, 1.8.3. Тогда же разбирался с API и стал пользоваться скриптами для создания шаблонов и нужных кофигураций устройств на их основе.

    В частности, при создании наименования шаблона в группе хостов "Templates" я использовал такую функцию для получения ее (группы) ID:
    $groups_id = ZabbixAPI::fetch_string('hostgroup','get',array('p attern' => $groups_name))
    or die('Unable to get Templates name: '.print_r(ZabbixAPI::getLastError(),true));

    где:
    $groups_name = "Templates";

    В результате в $groups_id получал айдишник hostgroup с названием "Templates".

    Вчера я поставил себе pre-zabbix-1.8.4rc2.x-15009.
    И все. Мои скрипты перестали работать. Вылетают на стадии получения айдишника хостгруппы.

    Полазив по исходникам увидел, что в новом API нет 'pattern'.
    Посмотрел доку, но так и не понял, как теперь получать айдишники.
    Вопрос, как теперь их получить?!

    Процесс подключения и аутентификации работает. После подключения через API получаю айдишник своего пользователя.

    Спасибо.
    Zabbix 2.4.2
    PHP 5.4.5
    Oracle Linux 6.5
    VmWare ESXi 4

    MariaDB 10.0.15
    Oracle Linux 6.5
    Supermicro SYS-6027TRF(64Gb+RAID-10 600Gb SAS15k)
  • gescheit
    Senior Member
    • Jul 2007
    • 156

    #2
    А может брать id прямо при создании?
    Точно не знаю, но похоже pattern был заменен на filter.

    Comment

    • gdgsoft
      Senior Member
      • Apr 2009
      • 202

      #3
      Originally posted by gescheit
      А может брать id прямо при создании?
      Точно не знаю, но похоже pattern был заменен на filter.
      На сколько я помню, filter был и раньше.
      Дело в том, что я пытаюсь создать в хостгруппе "Templates" свой темплейт. Для того что бы мне это сделать, мне нужно получить ID именно этой хостгруппы ("Templates"). Да, можно в базе посмотреть сразу ее ID. Он вроде - 1. Но это же не правильно
      Причем раньше это выполнялось правильно. например на v1.8.3 (revision 13928) все очень чудненько работало.
      Zabbix 2.4.2
      PHP 5.4.5
      Oracle Linux 6.5
      VmWare ESXi 4

      MariaDB 10.0.15
      Oracle Linux 6.5
      Supermicro SYS-6027TRF(64Gb+RAID-10 600Gb SAS15k)

      Comment

      • gescheit
        Senior Member
        • Jul 2007
        • 156

        #4
        А можно дебаг того что вы посылаете в заббикс и того что он отвечает?
        Через питоновский модуль делаю так: zapi.hostgroup.get({"filter":{"name":"Templates"}} )[0]["groupid"]

        Comment

        • gdgsoft
          Senior Member
          • Apr 2009
          • 202

          #5
          Проблему снимаю.
          Почему то на пользователе zabbix_api стоял тип zabbix_user, а не zabbix super admin.
          Виноват Всем спасибо.
          Zabbix 2.4.2
          PHP 5.4.5
          Oracle Linux 6.5
          VmWare ESXi 4

          MariaDB 10.0.15
          Oracle Linux 6.5
          Supermicro SYS-6027TRF(64Gb+RAID-10 600Gb SAS15k)

          Comment

          • ugh
            Senior Member
            • Jun 2009
            • 296

            #6
            у меня вопрос:
            чем кроме аудита, может грозить включение/отключение, например элемента данных, запросом в бд, а не через api
            или скажем, изменения ип хоста

            Comment

            • dima_dm
              Senior Member
              • Dec 2009
              • 2697

              #7
              Originally posted by ugh
              у меня вопрос:
              чем кроме аудита, может грозить включение/отключение, например элемента данных, запросом в бд, а не через api
              или скажем, изменения ип хоста
              Я думаю, что тут вопрос более глобальный. Все знания о структуре базы данных и её использовании были получены экспериментальным путем, т.е. по определению недостоверные. Соответственно поведение может в любой момент измениться, а разработчика в Release Notes могут эти изменения даже не указать, т.е. это внутренняя логика работы ПО, и она соответствующим образом не документирована.

              Comment

              • gdgsoft
                Senior Member
                • Apr 2009
                • 202

                #8
                Да, изменение только одного поля, такого как IP или имя хоста, например), думаю ничем не грозит. В то время как добавление элемента или триггера (убедился на собственном опыте при его изменении, задействовано вроде 2 таблицы, но мне хватило), является достаточно сложным процессом. Так как может использоваться большое количество таблиц. Если Вы все сами сможете собрать до кучи, то пожалуйста.
                Но как напиал dima_dm, логика в любой момент может измениться.

                Например, мне все равно придется переделывать свои скрипты при переходе на версию 1.8.4, так как части того функцианала, который я использовал ранее уже нет или заменен. И на это мне указал API, что мол не могу... В то время, как мне кажется, если работать напряму с БД, то можно в таком случае "промахнуться"
                Нет, API это хорошо
                Zabbix 2.4.2
                PHP 5.4.5
                Oracle Linux 6.5
                VmWare ESXi 4

                MariaDB 10.0.15
                Oracle Linux 6.5
                Supermicro SYS-6027TRF(64Gb+RAID-10 600Gb SAS15k)

                Comment

                • ugh
                  Senior Member
                  • Jun 2009
                  • 296

                  #9
                  нельзя не согласиться с вами обоими)

                  Comment

                  • Aly
                    ZABBIX developer
                    • May 2007
                    • 1126

                    #10
                    Originally posted by gdgsoft
                    Полазив по исходникам увидел, что в новом API нет 'pattern'.
                    Посмотрел доку, но так и не понял, как теперь получать айдишники.
                    Вопрос, как теперь их получить?!
                    Видать проглядели: "search": {"name": "Template"}
                    Zabbix | ex GUI developer

                    Comment

                    • gdgsoft
                      Senior Member
                      • Apr 2009
                      • 202

                      #11
                      Как было в том фильме: - Да! Но нет!

                      Видел, но по текущему описанию API, немного труднова то определиться что использовать.
                      Однозначно не скажу как точно, но я вроде у себя использовал в результате:
                      'filter' => array('name' => "Templates").
                      Опять же, в один случаях это - name, в других - host.

                      Также, например, в документации написано:
                      filter - array - Optional filter by host group fields
                      а вот где эти самые "host group fields" взять?

                      Но то такое...
                      Спасибо.
                      Zabbix 2.4.2
                      PHP 5.4.5
                      Oracle Linux 6.5
                      VmWare ESXi 4

                      MariaDB 10.0.15
                      Oracle Linux 6.5
                      Supermicro SYS-6027TRF(64Gb+RAID-10 600Gb SAS15k)

                      Comment

                      • Aly
                        ZABBIX developer
                        • May 2007
                        • 1126

                        #12
                        http://www.zabbix.com/documentation/1.8/api/hostgroup -> Object details.

                        А чего определяться-то? filter используется для точного совпадения, а search заменил и расширил опцию pattern.
                        Last edited by Aly; 26-10-2010, 16:43.
                        Zabbix | ex GUI developer

                        Comment

                        • alp
                          Member
                          • Nov 2009
                          • 90

                          #13
                          Кто-нибудь сталкивался с проблемой прав доступа в реализации API на python?
                          Прекрасно получается получать любые данные от заббикса:
                          Code:
                          >>> zapi = zabbix_api.ZabbixAPI()
                          >>> zapi.login('Admin', 'zabbix')
                          >>> zapi.host.get({ 'count' : True })
                          [{u'hostid': u'10017'}, {u'hostid': u'10047'}, {u'hostid': u'10051'}]
                          Но вот при попытке что-то добавить или изменить, получаю ошибку:
                          Code:
                          >>> zapi.host.update({ 'hostids' : ('10047') ,'useipmi' : ('0')})
                          Traceback (most recent call last):
                            File "<stdin>", line 1, in <module>
                            File "zabbix_api.py", line 293, in wrapper
                              return self.do_request(self.json_obj(name,opts))['result']
                            File "zabbix_api.py", line 275, in do_request
                              return self.parent.do_request(req)
                            File "zabbix_api.py", line 240, in do_request
                              raise ZabbixAPIException(msg)
                          zabbix_api.ZabbixAPIException: Error -32500: Application error., [ CHost::update ] You do not have enough rights for operation
                          При этом те же самые действия и под тем же самым юзером, но через реализацию на руби по имени zabcon никаких сообщений про недостаток прав не появляется.

                          Подскажите с чем это связано и как правильно изменять данные через реализацию API на python.



                          PS Кажется таки разобрался, при обращении с неверным количеством параметров или их значением выдаётся исключение про отсуствующие права доступа, вместо исключения о не соответствующих параметрах переданных API. В моём случае надо было делать хапрос zapi.host.update({ 'hostid' : ('10047') ,'useipmi' : ('0')})

                          Правда удалить хост всёравно не удаётся ни через python ни через ruby:
                          >>> zapi.host.delete({'hostid': '10047'})
                          Traceback (most recent call last):
                          File "<stdin>", line 1, in <module>
                          File "zabbix_api.py", line 293, in wrapper
                          return self.do_request(self.json_obj(name,opts))['result']
                          File "zabbix_api.py", line 275, in do_request
                          return self.parent.do_request(req)
                          File "zabbix_api.py", line 240, in do_request
                          raise ZabbixAPIException(msg)
                          zabbix_api.ZabbixAPIException: Error -32500: Application error., [ CHost::delete ] You do not have permission to perform this operation
                          +> login http://xxx.ru Admin zabbix
                          http://xxx.ru connected
                          API Version: 1.3
                          +> delete host id=10047
                          An error was received from the Zabbix server
                          Error code: -32500
                          Error message: Application error.
                          Error data: [ CHost::delete ] You do not have permission to perform this operation
                          +>
                          Last edited by alp; 15-11-2010, 23:29.

                          Comment

                          • gescheit
                            Senior Member
                            • Jul 2007
                            • 156

                            #14
                            Какая версия заббикса? В 1.8.4rc1 были глюки с этим.

                            Comment

                            • alp
                              Member
                              • Nov 2009
                              • 90

                              #15
                              Нет, бэтки и релиз кандидаты для продакшна юзать не комильфо посему моя версия Zabbix Server v1.8.3 (revision 13928) (16 August 2010)

                              Comment

                              Working...