ZABBIX BUGS AND ISSUES
  1. ZABBIX BUGS AND ISSUES
  2. ZBX-3423

value mapping not performed for {ITEM.VALUE} inside trigger names

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.3, 1.8.4, 1.8.10, 1.9.9 (beta)
    • Fix Version/s: 1.8.14rc1, 2.0.1, 2.1.0
    • Component/s: Frontend (F)
    • Environment:
      Zabbix 1.8.4
      PHP 5.3.2
      Mysql Server 5.1.48
      FreeBSD 8.1-RELEASE x64

      Description

      Problem similar to that described by me in ZBX-2250, only with the macro {ITEM.VALUE}
      The problem lies in the fact that the function does not work when using a macro ValueMapped {ITEM.VALUE} in the description of the trigger.
      For the macro {ITEM.LASTVALUE}, at least in the menu Monitoring -> Events and Monitoring -> Triggers, data are substituted correctly.

      For the macro {ITEM.VALUE} data correctly substituted for notification via e-mail.
      At the same time in Monitoring -> Events and Monitoring -> Triggers using ValueMapped, the data is displayed without any conversion.
      ----------------------------------------------
      Проблема аналогичная описанная мной в ZBX-2250, только с макросом {ITEM.VALUE}
      Суть проблемы заключается в том, что не срабатывает функция ValueMapped при использовании макроса {ITEM.VALUE} в описании триггера.
      Для макроса {ITEM.LASTVALUE} , по крайней мере в меню Monitoring -> Events и Monitoring -> Triggers, данные подставляются корректно.

      Для макроса {ITEM.VALUE} данные корректно подставляются при нотификации по электронной почте.
      В тоже время в Monitoring -> Events и Monitoring -> Triggers при использовании ValueMapped, данные отображаются без преобразования.

        Issue Links

          Activity

          Hide
          José Roberto Prado added a comment - - edited

          I suffer with this problem. I do not use {ITEM.LASTVALUE} lose because the historical of events, which is only possible with {ITEM.VALUE}. Can anything be done to bypass this problem? Any predictions to fix?

          Zabbix Version 1.8.4

          Show
          José Roberto Prado added a comment - - edited I suffer with this problem. I do not use {ITEM.LASTVALUE} lose because the historical of events, which is only possible with {ITEM.VALUE}. Can anything be done to bypass this problem? Any predictions to fix? Zabbix Version 1.8.4
          Hide
          Dmitrij Gavrilenko added a comment - - edited

          Для решения данной проблемы выполнил модификацию файла zabbix-1.8.5/frontends/php/include/triggers.inc.php в строках 1633-1639

          строки:

                                $macro = '{ITEM.VALUE'.($i ? $i : '').'}';
                                if(zbx_strstr($description, $macro)){
                                        $value=($flag==ZBX_FLAG_TRIGGER)?
                                                        trigger_get_func_value($row['expression'],ZBX_FLAG_TRIGGER,$i ? $i : 1, 1):
                                                        trigger_get_func_value($row['expression'],ZBX_FLAG_EVENT,$i ? $i : 1, $row['clock']);
          
                                        $description = str_replace($macro, $value, $description);
                                }
          

          заменил на:

                                $macro = '{ITEM.VALUE'.($i ? $i : '').'}';
                                if(zbx_strstr($description, $macro)){
                                                  $value=($flag==ZBX_FLAG_TRIGGER)?
                                                          trigger_get_func_value($row['expression'],ZBX_FLAG_TRIGGER,$i ? $i : 1, 1):
                                                          trigger_get_func_value($row['expression'],ZBX_FLAG_EVENT,$i ? $i : 1, $row['clock'])
          //                                      $description = str_replace($macro, $value, $description);
          
                                                  $functionid = trigger_get_N_functionid($row['expression'], $i ? $i : 1);
                                                  if(isset($functionid)){
                                                          $sql = 'SELECT i.lastvalue, i.value_type, i.itemid, i.valuemapid, i.units '.
                                                                          ' FROM items i, functions f '.
                                                                          ' WHERE i.itemid=f.itemid '.
                                                                                  ' AND f.functionid='.$functionid;
                                                          $row2=DBfetch(DBselect($sql));
                                                          $row2['lastvalue'] = $value;
                                                          $description = str_replace($macro, format_lastvalue($row2), $description);
                                                  }
                                }
          

          Сдела некий симбиоз обработки маппирования для макросов {ITEM.VALUE} и {ITEM.LASTVALUE}
          В принципе, маппирование работает, но за корректность модификации 100% гарантию дать не могу. Используйте на свой страх и риск!!!

          Show
          Dmitrij Gavrilenko added a comment - - edited Для решения данной проблемы выполнил модификацию файла zabbix-1.8.5/frontends/php/include/triggers.inc.php в строках 1633-1639 строки: $macro = '{ITEM.VALUE'.($i ? $i : '').'}'; if(zbx_strstr($description, $macro)){ $value=($flag==ZBX_FLAG_TRIGGER)? trigger_get_func_value($row['expression'],ZBX_FLAG_TRIGGER,$i ? $i : 1, 1): trigger_get_func_value($row['expression'],ZBX_FLAG_EVENT,$i ? $i : 1, $row['clock']); $description = str_replace($macro, $value, $description); } заменил на: $macro = '{ITEM.VALUE'.($i ? $i : '').'}'; if(zbx_strstr($description, $macro)){ $value=($flag==ZBX_FLAG_TRIGGER)? trigger_get_func_value($row['expression'],ZBX_FLAG_TRIGGER,$i ? $i : 1, 1): trigger_get_func_value($row['expression'],ZBX_FLAG_EVENT,$i ? $i : 1, $row['clock']) // $description = str_replace($macro, $value, $description); $functionid = trigger_get_N_functionid($row['expression'], $i ? $i : 1); if(isset($functionid)){ $sql = 'SELECT i.lastvalue, i.value_type, i.itemid, i.valuemapid, i.units '. ' FROM items i, functions f '. ' WHERE i.itemid=f.itemid '. ' AND f.functionid='.$functionid; $row2=DBfetch(DBselect($sql)); $row2['lastvalue'] = $value; $description = str_replace($macro, format_lastvalue($row2), $description); } } Сдела некий симбиоз обработки маппирования для макросов {ITEM.VALUE} и {ITEM.LASTVALUE} В принципе, маппирование работает, но за корректность модификации 100% гарантию дать не могу. Используйте на свой страх и риск!!!
          Hide
          José Roberto Prado added a comment - - edited

          Thank you. It worked very well in both the 1.8.3 and the 1.8.5 version.

          Just an observation: with the change I noticed that the text of trigger were shortened. But this is no problem for me.

          Show
          José Roberto Prado added a comment - - edited Thank you. It worked very well in both the 1.8.3 and the 1.8.5 version. Just an observation: with the change I noticed that the text of trigger were shortened. But this is no problem for me.
          Hide
          Alexander Vladishev added a comment -

          Fixed with ZBX-4918 in pre-1.8.14rc1 r27509, pre-2.0.1rc1 r27697, pre-2.1.0 (beta) r27698.

          Show
          Alexander Vladishev added a comment - Fixed with ZBX-4918 in pre-1.8.14rc1 r27509, pre-2.0.1rc1 r27697, pre-2.1.0 (beta) r27698.

            People

            • Assignee:
              Unassigned
              Reporter:
              Dmitrij Gavrilenko
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: