Ad Widget

Collapse

Вывод тригера на карте

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • prostrelov
    Senior Member
    • May 2012
    • 115

    #1

    Вывод тригера на карте

    На карте есть хост ROUTER212 с вот таким лейблом:
    {HOST.NAME}
    {HOST.IP}
    Eth0 is {router212:ifOperStatus[Ethernet0/0].last(0)}
    Eth1 is {router212:ifOperStatus[Ethernet0/1].last(0)}
    Tun0 is {router212:ifOperStatus[Tunnel0].last(0)}
    Nul0 is {router212:ifOperStatus[Null0].last(0)}

    по snmp этот роутер отдаёт статус сетевого интерфейса в виде 1 или 0
    но т.к. это не удобоваримо на карте может быть есть какойто вариант преобразовать его в Up или Down или может быть есть какойто аналог команды echo или можно как-то перепустить вывод тригера через "|" в текстовый вывод, тоесть какой-то аналог Tunnel0 is {router212:ifOperStatus[Tunnel0].last(0)} | echo Up

    п.с.
    как убрать ограничение в 255 символов для лейблов ?
  • dotneft
    Senior Member
    • Nov 2008
    • 699

    #2
    Originally posted by prostrelov
    На карте есть хост ROUTER212 с вот таким лейблом:
    {HOST.NAME}
    {HOST.IP}
    Eth0 is {router212:ifOperStatus[Ethernet0/0].last(0)}
    Eth1 is {router212:ifOperStatus[Ethernet0/1].last(0)}
    Tun0 is {router212:ifOperStatus[Tunnel0].last(0)}
    Nul0 is {router212:ifOperStatus[Null0].last(0)}

    по snmp этот роутер отдаёт статус сетевого интерфейса в виде 1 или 0
    но т.к. это не удобоваримо на карте может быть есть какойто вариант преобразовать его в Up или Down или может быть есть какойто аналог команды echo или можно как-то перепустить вывод тригера через "|" в текстовый вывод, тоесть какой-то аналог Tunnel0 is {router212:ifOperStatus[Tunnel0].last(0)} | echo Up

    п.с.
    как убрать ограничение в 255 символов для лейблов ?
    Попробуйте воспользоваться Отображение значения. По идее оно должно и на картах работать. http://www.zabbix.com/documentation/.../items/mapping

    Comment

    • prostrelov
      Senior Member
      • May 2012
      • 115

      #3
      [CONFIGURATION OF VALUE MAPPING]
      CISCO
      1 » UP
      0 » DOWN

      [Item "CISCO2600 : INT01.STATE"]
      Show value: CISCO

      [LATEST DATA]
      INT01.STATE 31 Jul 2012 11:06:41 UP (1)

      А на карте по прежнему только единица. Никаких UP или DOWN.

      Comment

      • dotneft
        Senior Member
        • Nov 2008
        • 699

        #4
        А какая версия zabbix у вас?

        Comment

        • prostrelov
          Senior Member
          • May 2012
          • 115

          #5
          Debian 2.6.x
          Zabbix 2.0.0

          Comment

          • dotneft
            Senior Member
            • Nov 2008
            • 699

            #6
            Originally posted by prostrelov
            Debian 2.6.x
            Zabbix 2.0.0
            значит скорее всего бага. это дело исправлялось массово. Буду вам очень благодарен, если запостите здесь багу https://support.zabbix.com/ , желательно с картинками

            Comment

            • prostrelov
              Senior Member
              • May 2012
              • 115

              #7


              создал но я так понимаю решение проблемы откладывается в долгий ящик.

              Comment

              • dotneft
                Senior Member
                • Nov 2008
                • 699

                #8
                Прошу прощения, потерял в процессе переписки описание проблемы. Ваша проблема была закрыта как дубликат. Можете посмотреть описание этой задачи https://support.zabbix.com/browse/ZBXNEXT-585
                Там даже есть патч, правда для 1.8, но может сохранились эти места. Посмотрите его.

                Comment

                • prostrelov
                  Senior Member
                  • May 2012
                  • 115

                  #9
                  Нет увы патч не применим, строки что он правит в items.inc.php и maps.inc.php изменились и теперь непонятно что и где править.
                  Надеюсь что автор отзавётся.

                  Comment

                  • sadman
                    Senior Member
                    • Dec 2010
                    • 1611

                    #10
                    Вобщем, я нашёл два пути решения данной проблемы:

                    1-й, с отображением сопоставляемого значения только на картах. Добавить выделенный код:

                    ../www/zabbix/include/maps.inc.php

                    Code:
                    function resolveMapLabelMacros($label, $replaceHost = null)
                    ...
                    
                    switch ($item['value_type']) {
                            case ITEM_VALUE_TYPE_FLOAT:
                            case ITEM_VALUE_TYPE_UINT64:
                                    $value = convert_units($item['lastvalue'], $item['units']);
                                    break;
                            default:
                                    $value = $item['lastvalue'];
                    }
                    
                    [B]if ($item['valuemapid'] > 0) { $value = applyValueMap($item['lastvalue'], $item['valuemapid']);}[/B]
                    
                    $label = str_replace($expr, $value, $label);
                    ...
                    2-й, с отображением сопоставляемого значения не только на картах, но и, например, в "Последних данных":

                    ../www/zabbix/include/items.inc.php

                    Code:
                    function formatItemValue(array $item) {
                    ...
                            if ($item['valuemapid'] > 0) {
                                    $value = applyValueMap($item['lastvalue'], $item['valuemapid']);
                            }
                            if ($value != $item['lastvalue']) {
                                    $value = formatItemValueType($item);
                            }
                    ...
                    Тут надо поменять местами блоки if, т.е. сделать так:

                    Code:
                    function formatItemValue(array $item) {
                    ...
                            if ($value != $item['lastvalue']) {
                                    $value = formatItemValueType($item);
                            }
                            if ($item['valuemapid'] > 0) {
                                    $value = applyValueMap($item['lastvalue'], $item['valuemapid']);
                            }
                    ...
                    И добавить выделенный код в ../www/zabbix/include/maps.inc.php:

                    Code:
                    function resolveMapLabelMacros($label, $replaceHost = null)
                    ...
                    
                    switch ($item['value_type']) {
                            case ITEM_VALUE_TYPE_FLOAT:
                            case ITEM_VALUE_TYPE_UINT64:
                                    $value = convert_units($item['lastvalue'], $item['units']);
                                    break;
                            default:
                                    $value = $item['lastvalue'];
                    }
                    [B]$value=formatItemValue($item);[/B]
                    
                    $label = str_replace($expr, $value, $label);
                    ...
                    Последний способ и симпатичней и реентерабельней, но потенциально может выйти боком, т.к. меняется логика работы функции (хотя она мне представляется несколько своеобразной).

                    Comment

                    • prostrelov
                      Senior Member
                      • May 2012
                      • 115

                      #11
                      сегодня проверил на debian v6.0.3 + zabbix v2.0.2
                      1й способ прекрасно работает. Огромное спасибо !
                      Сам бы не допёр ни в жизнь.

                      п.с.
                      осталася последний нюанс. сделать не моргающее обновление экрана screen и будет просто отлично.

                      Comment

                      • dotneft
                        Senior Member
                        • Nov 2008
                        • 699

                        #12
                        Originally posted by prostrelov
                        сегодня проверил на debian v6.0.3 + zabbix v2.0.2
                        1й способ прекрасно работает. Огромное спасибо !
                        Сам бы не допёр ни в жизнь.

                        п.с.
                        осталася последний нюанс. сделать не моргающее обновление экрана screen и будет просто отлично.
                        в версии 2.0.3 такое будет реализовано.

                        Comment

                        • prostrelov
                          Senior Member
                          • May 2012
                          • 115

                          #13
                          дошли руки до карт.
                          версия 2.0.5 "такое" всё ещё не реализовано.
                          if ($item['valuemapid'] > 0) { $value = applyValueMap($item['lastvalue'], $item['valuemapid']);}
                          Только решение которое было предложено на первой странице, с иcправлением maps.inc.php теперь выдаёт след. ошибку:
                          Undefined index: valuemapid [include/maps.inc.php:446]

                          Comment

                          Working...