Ad Widget

Collapse

Карты+Дашборд

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • 3l0gal3
    Junior Member
    • Dec 2010
    • 1

    #1

    Карты+Дашборд

    Как сделать связь с упавшим узлом в дашборде и его местом на карте. А то тех .поддержка скоро с ума сойдет. чтобы можно было нажать на хост и попасть на карту.Подскажите хоть направление, где копать.
  • Aly
    ZABBIX developer
    • May 2007
    • 1126

    #2
    Версия заббикс?
    Zabbix | ex GUI developer

    Comment

    • postuser
      Junior Member
      • Aug 2008
      • 6

      #3
      Тоже интересует. Версия z-1.8.3.

      Comment

      • Aly
        ZABBIX developer
        • May 2007
        • 1126

        #4
        Если на "пальцах", то делаем запрос в таблицу "sysmaps_elements" с правильными полями "resourcetype" и "resourceid". Получаем "sysmapid".
        Zabbix | ex GUI developer

        Comment

        • iks
          Member
          • Jun 2010
          • 56

          #5
          Originally posted by Aly
          Если на "пальцах", то делаем запрос в таблицу "sysmaps_elements" с правильными полями "resourcetype" и "resourceid". Получаем "sysmapid".
          А не будет более правильно использовать CGraphItem::get($options) или CScreen::get($options)?

          Comment

          • iks
            Member
            • Jun 2010
            • 56

            #6
            У меня возник вопрос чисто по картам. Между двумя узлами есть возможность сделать два линка, при этом они на карте сливаются в один Тут недоработка в плане допустимости создания двух линков или их отображения? Или это сделано с какой-то мне пока непонятной целью?

            Comment

            • iks
              Member
              • Jun 2010
              • 56

              #7
              И еще вопрос в догонку. В подписях к картам можно использовать такой макрос: {host:key.func(param)}. Я добавил {host:IF_MIB__ifHCOutOctets.30.last(0)}. Все показывает ок. Добавил еще одно значение {host:IF_MIB__ifHCInOctets.30.last(0)}. Стал показывать "???". То есть нельзя добавить два и более макроса? А почему? Это вопрос пока без практической составляющей, просто наткнулся на такое...
              Last edited by iks; 09-12-2010, 14:32.

              Comment

              • rahs
                Senior Member
                • Nov 2009
                • 125

                #8
                Originally posted by iks
                Я добавил {host:if_mib__ifhcoutoctets.30.last(0)}. Все показывает ок. Добавил еще одно значение {host:if_mib__ifhcinoctets.30.last(0)}. Стал показывать "???".
                Нужны пробелы до и после {}

                Comment

                • iks
                  Member
                  • Jun 2010
                  • 56

                  #9
                  После добавления пробелов Zabbix перестал воспринимать текст как макрос.

                  Comment

                  • rahs
                    Senior Member
                    • Nov 2009
                    • 125

                    #10
                    У меня было такое, и решилось именно добавлением пробелов до { и после }

                    Comment

                    • iks
                      Member
                      • Jun 2010
                      • 56

                      #11
                      Ммм.. Сорри. до и после.. Не так прочитал Но все равно не получилось. Один макрос понимает, два - уже нет.

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #12
                        Originally posted by iks
                        Ммм.. Сорри. до и после.. Не так прочитал Но все равно не получилось. Один макрос понимает, два - уже нет.
                        Не совсем так. Если рассматривать maps.inc.php, функцию expand_map_element_label_by_data , то можно увидеть, что в ней вызывается подстановка значений последовательно:
                        1) в простой макрос: {HOSTNAME}, {HOST.CONN}, {HOST.DNS}, {IPADDRESS} - любое количество вхождений
                        2) в пользовательскую функцию {hostname:key.min/max/avg/last(...)} - функция написана для многократной подстановки, но на самом деле получается, что подстановка осуществляется только если в одной строке одна функция. В противном случае код не срабатывает*

                        Т.е. одной строке лейбла можно использовать сочетания любого кол-ва простых макросов и одной пользовательской функции.

                        Многократная подстановка пользовательских функций меня тоже интересовала, поэтому я слегка покопался в причинах. Насколько я могу судить, основной неприятностью является PCRE-выражение, которое не совсем правильно разбирает строку метки для передачи её частей в функцию выборки из БД, если внутри строки метки присутствует два разбираемых элемента (две пользовательских функции).

                        Изначально оно представляет собой
                        Code:
                         $pattern = "/{(?P<host>.+):(?P<key>.+)\.(?P<func>.+)\((?P<param>.+)\)}/u";
                        При этом не отслеживается начало вхождения новой функции, неверно формируется имя хоста, соотв. в ответе от БД ничего не приходит и подставлять нечего. Скрипт рисует '???'.

                        Я не особо сильный программист, поэтому просто взял кусок кода из zabbix и поэкспериментировал. Пришёл к такому (не исключаю, что можно и попроще):
                        Code:
                         $pattern="/{((?P<host>.[^{]*):(?P<key>.[^{]*)\.(?P<func>.[^{]*)\((?P<param>.[^{]*)\)[^}]*)}/u";
                        Теперь у меня на карте корректно отрабатывают такие элементы
                        UL/DL: {rtr:ifHCInOctets[trunk00].last(0)} / {rtr:ifHCOutOctets[trunk00].last(0)}

                        UPD: поправлено корявое изложение
                        Last edited by sadman; 14-12-2010, 18:37.

                        Comment

                        • iks
                          Member
                          • Jun 2010
                          • 56

                          #13
                          Да, все работает

                          Comment

                          • sadman
                            Senior Member
                            • Dec 2010
                            • 1611

                            #14
                            Пока спал, подумал и решил, что так будет правильней:
                            Code:
                            $pattern="/{(?P<host>.[^}]*):(?P<key>.[^}]*)\.(?P<func>.[^}]*)\((?P<param>.[^}]*)\)*}/u";
                            Если "отлавливать" начало следующего выражения, как в предыдущем, а не конец текущего, как в этом, то не проходят конструкции, в которых между пользовательскими функциями нах-ся символы `:`, `.`, `()`, например:
                            {rtr:ifHCInOctets[trunk00].last(0)}:{rtr:ifHCOutOctets[trunk00].last(0)}

                            Теперь должно работать гарантированно.

                            Comment

                            • sersad
                              Senior Member
                              • May 2009
                              • 518

                              #15
                              Спасибо, отлично работает!
                              Attached Files

                              Comment

                              Working...