Ad Widget

Collapse

Не резолвятся макросы в имени hosts, items и в графиках

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Zaytsev.Anton.48
    Junior Member
    • Mar 2022
    • 7

    #1

    Не резолвятся макросы в имени hosts, items и в графиках

    Добрый день.
    Была версия 5.0.18, обновился до 6.0.2 и теперь существует проблема.
    Собственно не резолвятся макросы в именах хостов, айтемов и в графиках, в общем везде во фронтэнд части. В бэкэнд макрсоы резолвятся и например пинг идет нормально (в логах подробно смотрел)
    " ICMP ping ISP [{$IP_ISP} - "{$NAME_ISP}"]" вот как это выглядит.

    Такая ситуация на двух серверах. Такая проблема только у меня или есть еще страдаюзщие? Пытался найти на форуме - не очень то получилось
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2

    Comment

    • Zaytsev.Anton.48
      Junior Member
      • Mar 2022
      • 7

      #3
      Спасибо за ответ...моя проблем что я читал описание "на русском" , а там как раз именно этого абзаца нет. .. Раз эта фича считает устаревшей есть какие-нибудь альтернативные способы сделать название в шаблоне не уникальным для разных хостов?

      Comment

      • Semiadmin
        Senior Member
        • Oct 2014
        • 1625

        #4
        Можно попробовать дискаверить эти данные (хоть из пользовательских макросов, если нет возможности брать из какого-нибудь первоисточника). Ping сделать прототипом в LLD rule. Макросы LLD s раскрываются везде.

        Comment

        • Zaytsev.Anton.48
          Junior Member
          • Mar 2022
          • 7

          #5
          Судя по https://www.zabbix.com/documentation..._location_user из пользовательских макросов не обнаружится, оно же и подтвердилось практикой. Буду искать костыль. Возникла такая же потребность для прототипов хостов.
          Жаль , что работающее решение убрали, видимо была такая потребность.
          Спасибо за ответы!

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #6
            Почему - не обнаружится? LLD по данным из user macro - вполне рабочее решение, особенно с появлением типа Script. User macro без проблем раскрывается в препроцессинге.

            Comment

            • Zaytsev.Anton.48
              Junior Member
              • Mar 2022
              • 7

              #7
              Я попробовал LLD и с ним есть проблема. Это или баг, или я что-то не так делаю. Макросы из user macro раскрываются, но потом макросы LLD не скрываются, если не задействованы в ключе.
              Я попробовал на {#TEST} создать элемент данных с ключем, который содержит {#TEST} и только тогда зарезолвилось . Пробовал использовать в разных полях элемента данных - не помогло.
              Attached Files

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                В ключе прототипа, конечно, тоже должен быть макрос LLD. А разве пингуемый адрес не предполагалось брать из user macro?

                Comment

                • Zaytsev.Anton.48
                  Junior Member
                  • Mar 2022
                  • 7

                  #9
                  Originally posted by Semiadmin
                  В ключе прототипа, конечно, тоже должен быть макрос LLD. А разве пингуемый адрес не предполагалось брать из user macro?
                  Пингуемый адрес брался из usermacro без "трудных путей" с LLD. В ключе прототипа используется как раз LLD. Мне важно, что бы в заголовок бралось имя хоть откуда-то)) по факту и LLD и User macoses не резолвятся в имени. LLD macros не резолвятся при создании элемента из прототипа. На скрине в прошлом сообщении как раз элемент их прототипа.

                  Я честно говоря в растерянности)) Я думал из LLD попробую на пингах, как на простой задаче, а дальше "масштабирую" на обнаружение vmware. У меня там такая же задача , что бы к обнаруженному имени дописывался номер , в моем случае это номер магазина, т.к. в разных магазинах в esxi все машины названы одинаково . Что бы как-то отличать и не пилить под каждый магазин свой шаблон , планировал как раз пользоваться макросами. Но как-то макросы становятся слегка бесполезными.

                  Comment

                  • Zaytsev.Anton.48
                    Junior Member
                    • Mar 2022
                    • 7

                    #10
                    И все таки может сможет кто-то помочь ? Может я что-то не так делаю....

                    Скрипт обнаружения выглядит так:

                    var n = '{$NAME_ISP}';
                    var i = '{$IP_ISP}';
                    var x = '';
                    var y = '';
                    x = '{ "NAME":"' + n + '" }';
                    y = '{ "IP":"' + i + '" }';
                    return '[ ' + x + "," + y + ']';


                    Строка после отработки скрипта получается:

                    [ { "NAME":"Prostor(IP VPN 10 Mbps)" },{ "IP":"127.0.0.1" }]

                    далее я присваиваю значения из JSON в LLD Macros
                    Click image for larger version

Name:	LLDMACRO.png
Views:	137
Size:	7.7 KB
ID:	443012

                    После этого zabbix создает элемент данных из прототипа
                    Ключ: icmppingloss[{#IP_ISP},10,500,24,1600]
                    Имя: ICMP loss ISP {#NAME_ISP}

                    На выходе получается элемент данных с такими значениями:

                    Ключ: icmppingloss[127.0.0.1,10,500,24,1600]
                    Имя: ICMP loss ISP {#NAME_ISP}


                    То есть макрос из LLD не раскрывается в прототипе..хотя судя по документации должен. И в других обнаружениях , на пример той же FS которая в образце или по SNMP в имени макросы раскрываются.

                    Если я делаю в прототипе Имя: ICMP loss ISP {#IP_ISP} - значения макроса в имени раскрываются.

                    Если я делаю прототип с ключем, который содержит {#NAME_ISP} то и в имени он раскрывается.

                    Что я делаю не так? Если в Zabbix это баг, как-то можно создать баг репорт?

                    P.S. На данный момент версия Zabbix 6.0.3

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #11
                      У вас получился не совсем правильный JSON. Нужен такой, и все получится: [ { "NAME":"Prostor(IP VPN 10 Mbps)" , "IP":"127.0.0.1" }]
                      А еще проще сразу сделать в JS JSON вида [ { "{#NAME}":"Prostor(IP VPN 10 Mbps)" , "{#IP}":"127.0.0.1" }] и не создавать LLD макросы через JSONPath

                      Comment

                      • Zaytsev.Anton.48
                        Junior Member
                        • Mar 2022
                        • 7

                        #12
                        Originally posted by Semiadmin
                        У вас получился не совсем правильный JSON. Нужен такой, и все получится: [ { "NAME":"Prostor(IP VPN 10 Mbps)" , "IP":"127.0.0.1" }]
                        А еще проще сразу сделать в JS JSON вида [ { "{#NAME}":"Prostor(IP VPN 10 Mbps)" , "{#IP}":"127.0.0.1" }] и не создавать LLD макросы через JSONPath
                        Спасибо огромное! Помогло.
                        Вариант с {#NAME} был изначально . Назначать отдельно - как вариант обмануть систему был.

                        Comment

                        Working...