Ad Widget

Collapse

Проблема с обновлением интерфейсов на заббикс-прокси

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • haven512
    Junior Member
    • Aug 2024
    • 5

    #1

    Проблема с обновлением интерфейсов на заббикс-прокси

    Всем привет.
    Столкнулись с проблемой, заббикс прокси не может обновить интерфейс при манипуляциях с интерфейсами через API.
    Например, такая последовательность действий на тестовом хосте с одним элементом данных:
    1. Создать новый интерфейс.
    2. Переключить элемент данных на новый интерфейс.
    3. Сделать новый интерфейс главным.
    4. Удалить старый интерфейс.
    В базе данных заббикс сервера изменения отражаются корректно. Затем прокси запрашивает configuration data, получает данные (приложенный файл data.txt), в полученных данных присутствуют все внесенные изменения.
    Но почему-то прокси начинает применять эти изменения с удаления интерфейса и терпит неудачу.
    Code:
    2013262:20240821:151724.469 query [txnlev:1] [delete from interface_snmp where interfaceid=300300000132138]
    2013262:20240821:151724.469 query [txnlev:1] [delete from interface where interfaceid=300300000132138]
    2013262:20240821:151724.469 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ОШИБКА:  UPDATE или DELETE в таблице "interface" нарушает ограничение внешнего ключа "c_items_4" таблицы "items"
    DETAIL:  На ключ (interfaceid)=(300300000132138) всё ещё есть ссылки в таблице "items".
     [delete from interface where interfaceid=300300000132138]
    2013262:20240821:151724.469 query [delete from interface where interfaceid=300300000132138] failed, setting transaction as failed
    2013262:20240821:151724.470 query [txnlev:1] [rollback;]
    Если в той же последовательности вносить эти изменения через веб-интерфейс - все отрабатывает нормально.
    Проверяли на версиях заббикс-сервера и заббикс-прокси: 6.4.12, 6.4.15, 7.0.1, везде проблема наблюдалась.
    Кто-нибудь сталкивался с похожей проблемой?
    Заранее спасибо за ответы.

    UPD: на версии 3.4.12 все работает как надо.
    Attached Files
    Last edited by haven512; 22-08-2024, 12:21.
  • haven512
    Junior Member
    • Aug 2024
    • 5

    #2
    Я ошибся - через веб-интерфейс все тоже ломается, если вносить изменения достаточно быстро, чтобы они попали в один JSON configuration data. Пока для себя закостылили это установкой таймаута перед API запросом на удаление интерфейса, чтобы сначала в прокси успели прилететь данные о изменении интерфейса на элементе данных. Я не смог пока найти баг-репорт с этой проблемой, если кто-то знает, что он уже существует - напишите пожалуйста об этом.

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #3
      Извините, что не совсем по теме, но зачем выполнять подобные последовательности действий? Не проще ли отредактировать существующий интерфейс?

      Comment

      • haven512
        Junior Member
        • Aug 2024
        • 5

        #4
        Originally posted by Kos
        Извините, что не совсем по теме, но зачем выполнять подобные последовательности действий? Не проще ли отредактировать существующий интерфейс?
        В общем случае - проще конечно.
        У нас автоматическая система создания хостов в заббикс через API, которая изначально проектировалась под 3.4 версию, где такой проблемы не было, а созданием/удалением интерфейса решались некоторые другие проблемы.
        Сейчас обновляемся на 7.0 и такое поведение несколько удивило.
        Позже вероятно перепишем систему на обновление интерфейсов, но быстро и легко для нас это не получится, к сожалению, поэтому пока костыль.

        Comment

        • Griboed0ff
          Senior Member
          • Sep 2022
          • 153

          #5
          У меня была похожая задача с API и интерфейсами. Собственно, при авто регистрации агентов у хостов добавлялся еще интерфейс, если IP хоста менялся. Поскольку они были на VPN через DHCP, постоянно у хостов набиралась целая пачка интерфейсов, и нужный не был по умолчанию, так что опросы не работали (IP был неверный). Я решил проблему с помощью скрипта на Python. Примерный сценарий: если интерфейсов несколько, то удаляем все, которые не по умолчанию. Затем пытаемся изменить IP интерфейса по умолчанию на тот, с которым агент пришел. Попутно, если этот IP используется для других хостов, то там его удаляем, если он не по умолчанию. Если он по умолчанию, то меняем его на заведомо несуществующий IP. Таким образом, у агентов всегда актуальные IP, даже при их постоянных изменениях. Эти IP мне в общем-то не нужны, так как у меня активные проверки по большей части, но бизнес попросил чтобы статус агента был виден и IP.

          Comment

          • haven512
            Junior Member
            • Aug 2024
            • 5

            #6
            Originally posted by Griboed0ff
            У меня была похожая задача с API и интерфейсами. Собственно, при авто регистрации агентов у хостов добавлялся еще интерфейс, если IP хоста менялся. Поскольку они были на VPN через DHCP, постоянно у хостов набиралась целая пачка интерфейсов, и нужный не был по умолчанию, так что опросы не работали (IP был неверный). Я решил проблему с помощью скрипта на Python. Примерный сценарий: если интерфейсов несколько, то удаляем все, которые не по умолчанию. Затем пытаемся изменить IP интерфейса по умолчанию на тот, с которым агент пришел. Попутно, если этот IP используется для других хостов, то там его удаляем, если он не по умолчанию. Если он по умолчанию, то меняем его на заведомо несуществующий IP. Таким образом, у агентов всегда актуальные IP, даже при их постоянных изменениях. Эти IP мне в общем-то не нужны, так как у меня активные проверки по большей части, но бизнес попросил чтобы статус агента был виден и IP.
            У нас немного сложнее, т.к. на хосте могут одновременно существовать два разных интерфейса, привязанные к разным элементам данных. Спасибо, что поделились, подумаю над этим.

            Comment

            Working...