Ad Widget

Collapse

Макрос {HOST.HOST} не раскрывается в имя хоста, на который шаблон назначен.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mpolitaev
    Member
    • Jun 2015
    • 32

    #1

    Макрос {HOST.HOST} не раскрывается в имя хоста, на который шаблон назначен.

    Привет всем! Заббикс отличная система, очень часто нас выручает!

    Но есть вопрос, возможно мы чего-то не понимаем в её работе, помогите.
    Есть дискавери правило которое возвращает список серверов типа "{#SERVER_ID}", оно создаёт на каждый обнаруженный сервер - хост в заббиксе, потому что в правиле описаны прототипы хостов (host prototypes). Прототип хоста, в свою очередь имеет набор шаблонов которые на хост будут назначены при создании.

    Но вот проблема, шаблон имеет метрики специфичные для хоста, и они должны будут содержать в себе имя этого сервера, чтоб получить данные по метрике, как это сделать? Я использовал в имени метрики макрос {HOST.HOST} чтоб в него подставлялось имя хоста, но макрос не раскрывается, и хост с назначенным шаблоном имеет кучу метрик с этими макросами.

    Какой макрос или как иначе сослаться в шаблоне на имя хоста на который шаблон назначается?
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Нужно использовать в прототипах те макросы, которые возвращает правило обнаружения. Если нужного стандартный дискавери не возвращает - делай свой.
    ЗЫ
    (глупость написал - шаблон ничего не знает о макросах в конкретном обнаружении и должен использовать стандартные макросы узла сети)

    Last edited by Hamardaban; 16-12-2019, 07:20.

    Comment

    • mpolitaev
      Member
      • Jun 2015
      • 32

      #3
      Я использую в прототипах макросы, и прототип хоста создаётся с нужным именем. Например правило обнаружения мне возвращает
      {#SERVER_ID}: "abc123"

      Имея в имени прототипа хоста "Server {#SERVER_ID}" создаётся сервер:
      "Server abc123"

      Пока отлично. Но ещё сказано на этот хост назначить шаблон например "Template123" у которого есть метрика "Get statisctics for {HOST.HOST}". Ожидаю что HOST.HOST раскроется в "abc123" после назначения шаблона на созданный хост, но этого не происходит и хост имеет метрики "Get statisctics for {HOST.HOST}" также не раскрывается "Get statisctics for {#SERVER_ID}"

      Что назначить на шаблон чтоб оно раскрылось в имя хоста на который шаблон будет назначен?
      Last edited by mpolitaev; 16-12-2019, 15:58.

      Comment

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

        #4
        также не раскрывается "Get statisctics for {#SERVER_ID}"
        Это логично, поскольку LLD-макросы действительны только в прототипах (элементов данных/триггеров/графиков).
        Ожидаю что HOST.HOST раскроется в "abc123" после назначения шаблона на созданный хост, но этого не происходит и хост имеет метрики "Get statisctics for {HOST.HOST}"
        А вот это уже интереснее. Теоретически (в соответствии с документацией) - такая конструкция должна работать.
        На практике немного сложнее, т.к. большинство макросов {HOST.*} привязываются к определённым для хоста сетевым интерфейсам, а при создании хоста через LLD он остаётся без сетевых интерфейсов (их при необходимости надо добавлять как-то отдельно - либо вручную, либо через API).
        С другой стороны, именно макрос {HOST.HOST} по той же документации, вроде бы, никак на сетевые интерфейсы не завязан.
        Видимо, надо открывать баг-репорт.

        Comment

        • mpolitaev
          Member
          • Jun 2015
          • 32

          #5
          С другой стороны, именно макрос {HOST.HOST} по той же документации, вроде бы, никак на сетевые интерфейсы не завязан.
          Видимо, надо открывать баг-репорт.
          Назначил этот же шаблон на НЕ прототип хоста, а на обычный хост с сетевым интерфейсом - тот же самый эффект, макрос не раскрылся.

          Zabbix server v. 4.4.3

          А можно например в дискавери правиле объявить глобальные макросы типа {MY.MACRO} = {#SERVER_ID} (то что возращает правило дискавери) и чтоб этот макрос был потом доступен глобально, раз LLD макрос {#SERVER_ID} доступен только в прототипах.
          Last edited by mpolitaev; 16-12-2019, 16:05.

          Comment

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

            #6
            Originally posted by mpolitaev
            Назначил этот же шаблон на НЕ прототип хоста, а на обычный хост с сетевым интерфейсом - тот же самый эффект, макрос не раскрылся.

            Zabbix server v. 4.4.3
            А где вы смотрите? Если в свойствах хоста (какие у него есть триггеры), то там и должен фигурировать макрос.
            А заменяться конкретным значением макрос должен уже при срабатывании триггера (генерации события "ПРОБЛЕМА").

            Originally posted by mpolitaev
            А можно например в дискавери правиле объявить глобальные макросы типа {MY.MACRO} = {#SERVER_ID} (то что возращает правило дискавери) и чтоб этот макрос был потом доступен.
            Ну, видимо, всё-таки не глобально, а на уровне хоста. Это было бы классно, но я пока возможности определять макросы в прототипе хоста не вижу. Впрочем, у меня версия 4.0 - может, в версии 4.4 уже что-то и поменялось.

            Comment

            • mpolitaev
              Member
              • Jun 2015
              • 32

              #7
              А где вы смотрите? Если в свойствах хоста (какие у него есть триггеры), то там и должен фигурировать макрос.
              А заменяться конкретным значением макрос должен уже при срабатывании триггера (генерации события "ПРОБЛЕМА").
              Наверное тогда я не там ищу. Я ожидаю что в шаблоне макрос в имени метрики у меня раскроется в имя хоста, после того только как шаблон назначу на хост. Такого наверное нет в Заббиксе...

              Comment

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

                #8
                Нет, там он и должен оставаться макросом, это нормально.
                Раскроется при срабатывании триггера.

                Comment

                • mpolitaev
                  Member
                  • Jun 2015
                  • 32

                  #9
                  Нет, там он и должен оставаться макросом, это нормально.
                  Раскроется при срабатывании триггера.
                  А что если у меня метрика зависит от имени хоста? Она тоже раскроется в имя хоста когда Заббикс запросит её?
                  Метрика например такая (external check):
                  Code:
                  get_cloudwatch_metric["AWS/RDS",{HOST.HOST},"DatabaseConnections"]
                  В принципе я могу сам это проверить.

                  Comment

                  • mpolitaev
                    Member
                    • Jun 2015
                    • 32

                    #10
                    Афигеть! Работает! Спасибо!

                    Comment

                    Working...