Ad Widget

Collapse

Макрос для URL: несоответствие режима тестирования и рабочего режима

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Kuzor
    Junior Member
    • Oct 2021
    • 5

    #1

    Макрос для URL: несоответствие режима тестирования и рабочего режима

    Здравствуйте.
    С помощью Заббикс настраиваю мониторинг зверушек, на которые нет возможности установить Агента. Все полезные данные с таких зверушек поступают на отдельный сервер. Поэтому, для хостов в Заббиксе я создаю несколько интерфейсов типа Агент. Один для внешних проверок зверька, другие для снятия информации о нем с сервера. В шаблоне для конкретного элемента данных пытаюсь собрать URL, используя макросы. Согласно документации здесь допустимо применять только {HOST.HOST}, {HOST.IP}, {HOST.DNS}, {HOST.CONN}, {HOST.NAME}. Среди них более-менее произвольную строку можно сохранить в поле DNS (значение идентифицирует группу зверьков). Следовательно, URL для обращения к серверу, используя HTTP агент, получается примерно следующий: http://10.0.0.1/путьдоэлемента/{HOST.DNS}.txt. В настройках элемента данных каждого конкретного хоста я выбираю нужный интерфейс узла сети (где в поле DNS внесено нужное значение). Проверяю (кнопка Тест) - все прекрасно, данные получены. Ставлю неверный интерфейс - данные не получены. А вот в рабочем режиме при выборе правильного интерфейса данные не поступают, потому что макрос {HOST.DNS} извлекает значение из поля DNS того интерфейса, который назначен По умолчанию, а не того, который выбран. Мне кажется, что это явный баг. Как вы думаете? Версия Zabbix 5.4.5.
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Если не секрет, а как вы выбираете нужный агентский интерфейс, линкуя шаблон к хосту? Или после этого вручную меняете интерфейс с дефолтного на другой во всех таких проверках?

    Comment

    • Kuzor
      Junior Member
      • Oct 2021
      • 5

      #3
      Шаблон прилинкован к группе узлов сети. И далее да, индивидуально прохожу по всем хостам и для соответствующих item'ов меняю интерфейс на нужный вручную.

      Comment

      • Semiadmin
        Senior Member
        • Oct 2014
        • 1625

        #4
        Даже если бы это работало так, как вам нужно, это жутко неудобно. Гораздо проще вместо второго интерфейса сделать для этих проверок user macro, менять его на хосте и брать URL оттуда. Ничего не придется менять вручную.

        Comment

        • Kuzor
          Junior Member
          • Oct 2021
          • 5

          #5
          Я бы с удовольствием! Но как будет выглядеть такой макрос? Из какого поля параметров хоста брать определяющее значение? И самое главное как подать такой URL агенту HTTP. Не понимаю.

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #6
            Ну вы ведь, когда создаете второй интерфейс, не берете автоматом ip/dns name ниоткуда, прописываете вручную. Так и тут пропишите то, что нужно, в макрос.
            Как будет выглядеть - например, {$URL} http://your_url/
            В http agent передать - очень просто, прописать макрос {$URL} в поле URL. А поле Host interface для http agent на фиг не нужно, он все равно с сервера/прокси работает.

            Comment

            • Kuzor
              Junior Member
              • Oct 2021
              • 5

              #7
              Так не работает такая схема! URL должен модифицироваться для каждого хоста в зависимости от некоего значения, присвоенного узлу сети. Я выбрал поле DNS. Тут логичнее бы использовать поля Инвентаризации, но ни один макрос не извлекает значения этих полей для построения адреса. Вы предлагаете подавать одинаковый URL для всех узлов. А мне надо, чтобы URL изменялся. Поэтому я и пытаюсь его построить динамически. Ваш способ я попробовал. В пользовательском макросе {$URL}= http://10.0.0.1/путьдоэлемента/{INVENTORY.ASSET.TAG}.txt. не отрабатывает вложенный макрос {INVENTORY.ASSET.TAG}.

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                Я как раз и предлагал менять значение этого макроса на уровне хоста.

                Comment

                • Kuzor
                  Junior Member
                  • Oct 2021
                  • 5

                  #9
                  Это я и пытаюсь сделать, только без использования пользовательского макроса. А сразу указав в шаблоне http://10.0.0.1/путьдоэлемента/{HOST.DNS}.txt. Проблема в том что на месте {HOST.DNS} может быть очень ограниченное количество макросов! Я их перечислял. Только они там работают! Я больше никак не могу извлечь из настроек узла нужное мне значение. Чтобы оно корректно вставилось в URL.

                  Comment

                  • Semiadmin
                    Senior Member
                    • Oct 2014
                    • 1625

                    #10
                    Ну, дело хозяйское. Я пытался предложить вариант попроще и понадежнее.

                    Comment

                    Working...