Ad Widget

Collapse

Не получается увеличить timeout для агента 2

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • SEsin
    Junior Member
    • Sep 2021
    • 6

    #1

    Не получается увеличить timeout для агента 2

    Всем привет! В Zabbix делаю первые шаги, прошу отнестись с пониманием, если туплю )
    Есть Zabbix Server 5.4 установленный на Ubuntu.
    Есть Windows Server 2008 R2 на которой установлен Zabbix Agent 2-5.4.4-windows-amd64-openssl, также установлен smartmontools версии 7.1
    Я знаю, что Agent 2 умеет считывать SMART без всяких скриптов, однако при выполнении "discovery" родными средствами я получал ошибку при обращении к диску (Read NVMe Identify Controller failed), поэтому все же решил воспользоваться скриптами. В принципе, все получилось, НО. Скрипт отрабатывает примерно за 4 секунды и это приводит к ошибке получения данных на сервере "Get value from agent failed: ZBX_TCP_READ() timed out".
    Конечно, я нашел, что с этим делать и указал в файле конфигурации Timeout=30, перезапустил агент (сто раз уже перезапустил в этому времени), но ситуация не изменилась.
    Когда на стороне сервера в веб-интерфейсе я пользуюсь кнопкой "Получить значение" для правила обнаружения, которая запускает скрипт, продолжаю получать "Get value from agent failed: ZBX_TCP_READ() timed out". Причем получаю через 3 секунды. Т.е. явно система не ждет 30 секунд, указанные в файле конфигурации.
    Прежде чем писать на форум я долго пытался найти проблему. Во-первых я уверен, что zabbix agent 2 использует именно тот конфигурационный файл, в котором я установил timeout=30, т.к. другие изменения этого файла сражу же чувствую.
    Во-вторых я проверил, что скрипт, который указан в UserParameter=uHDD.discovery[*], ... отрабатывает корректно и возвращает то, что нужно. Если вызов скрпита скопировать в командную строку, получаю json.
    В-третьих я попробовал вместо вызова скрипта в конфигурационном файле передать готовый json строкой, и все получилось: сервер корректно отработал обнаружение и создал элементы данных по прототипам.
    Мне кажется, что все должно работать и последнее, что нужно сделать - просто увеличить timeout, но это по какой-то причине не срабатывет. Очень прошу подсказать, что я делаю не так. Почему не срабатывает timeout=30? На всякий случай прикрепляю файл конфигурации (файл положил в архив, т.к. форум не давал прикрепить мне файл более 19,5кб).
    Attached Files
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Если агент работает в активном режиме (т.е. сам подключается к серверу, чтобы передать собранные значения), то достаточно выставить тайм-аут на агенте.
    Когда же агент опрашивается сервером (нажатие кнопки "Тест" или "Получить значение" в веб-интерфейсе, либо агент в пассивном режиме), то нужно ещё учитывать, что на сервере тоже есть свой тайм-аут, который должен быть не меньше того, который выставлен на агенте.
    Другими словами: то, что вы увеличиваете тайм-аут на агенте, - это правильно (хотя 30 секунд многовато, я бы оставил секунд 5-10). Но недостаточно, т.к. упираетесь в тайм-аут на сервере, который тоже надо увеличить.

    Comment

    • SEsin
      Junior Member
      • Sep 2021
      • 6

      #3
      Огромное спасибо за помощь! Сработало!

      Comment

      Working...