Ad Widget

Collapse

Trigger.threshold или как выдрать trigger.expression

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • neiromc
    Member
    • Sep 2010
    • 58

    #1

    Trigger.threshold или как выдрать trigger.expression

    Всем привет!

    как всегда искал, но видимо плохо искал
    проблема следующая:

    есть TRIGGER Expression
    {Template_Windows:vfs.fs.size[c:,free]. last( 0 ) }<102488M

    так вот вопрос(ы):
    1. как выдрать эту строку и вставить в письмо?
    2. как выдрать (это предпочтительнее) пороговое значение срабатывания тригера (102488М в моем случае)?

    В TRIGGER.COMMENT вписывать руками - не вариант, сами понимаете...

    Спасибо.
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Все макросы, которые существуют, описаны здесь
    http://www.zabbix.com/documentation/.../config/macros
    Если там нет, того, что вам нужен, то увы и ах.

    Comment

    • neiromc
      Member
      • Sep 2010
      • 58

      #3
      жаль, там увы ничего подобного нет

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        2-ю задачу можно решить через пользовательский макрос.
        Т.е.
        {$MYLIMIT}=102488M
        Тогда триггер будет
        {Template_Windows:vfs.fs.size[c:,free]. last( 0 ) }< {$MYLIMIT}
        А пользовательский макрос {$MYLIMIT} уже можно использовать в уведомлениях.

        Comment

        • zalex_ua
          Senior Member
          Zabbix Certified Trainer
          Zabbix Certified SpecialistZabbix Certified Professional
          • Oct 2009
          • 1286

          #5
          Originally posted by dima_dm
          2-ю задачу можно решить через пользовательский макрос.
          Т.е.
          {$mylimit}=102488m
          Тогда триггер будет
          {template_windows:vfs.fs.size[c:,free]. Last( 0 ) }< {$mylimit}
          А пользовательский макрос {$mylimit} уже можно использовать в уведомлениях.
          Блин, вчера по поводу этого топика я и попробовал именно такой ход, но при создании триггера мне выдавалась ошибка. Я был неожиданно удивлен по этому поводу. Не нравилась ему типа вот эта часть "< {$mylimit}" в выражении. Сегодня еще раз попробовал - прокатило. Ничего не понимаю.
          ... уже наверное догадываюсь. Похоже я макрос в выражении писал маленькими буквами к тому же еще до его создания. А требуется только большими, кстати при создании макроса осуществляется проверка на регистр букв и требуются только большие.

          добавлено
          буга-га-га, обратите внимание как движок форума заменил регистр букв с БОЛЬШОГО на маленький. Попробуйте сами.
          Last edited by zalex_ua; 28-09-2010, 20:42. Reason: ОООчень важно

          Comment

          • dima_dm
            Senior Member
            • Dec 2009
            • 2697

            #6
            Originally posted by zalex_ua
            Не нравилась ему типа вот эта часть "< {$mylimit}" в выражении. Сегодня еще раз попробовал - прокатило. Ничего не понимаю.
            ... уже наверное догадываюсь. Похоже я макрос в выражении писал маленькими буквами к тому же еще до его создания. А требуется только большими, кстати при создании макроса осуществляется проверка на регистр букв и требуются только большие.
            Об этом в документации написано
            http://www.zabbix.com/documentation/.../config/macros
            Code:
            Следующие символы допустимы в именах макросов: A-Z , 0-9 , _ , .
            Originally posted by zalex_ua
            добавлено
            буга-га-га, обратите внимание как движок форума заменил регистр букв с БОЛЬШОГО на маленький. Попробуйте сами.
            Давно уже заметил этот глюк. Поэтому куски кода, где регистр букв критичен, я стараюсь в тегах Code оформлять.
            Last edited by dima_dm; 29-09-2010, 08:13.

            Comment

            • gdgsoft
              Senior Member
              • Apr 2009
              • 202

              #7
              Да, в свое время столкнулся с подобной проблемой, когда разбирался с АПИ.
              Там тоже есть такая проблема с trigger.update вроде.
              что ты пытаешся запихнуть выражение, которое получел через trigger.get, но ничего не выходит, потому что trigger.get возвращает строку ввиде {12345}=0, где 12345 это номер условия
              В то же время trigger.update нужна нормальная форма условия - ЧИТАБЕЛЬНАЯ для хьюмена

              В результате я написал кривой скриптик, которой собирает тиггер из БД и представляет в нормальном виде, ЧИТАБЕЛЬНОМ виде.

              Интересно будет посмотреть новое АПИ (1.8.4), я так понял они там его доточили.
              Zabbix 2.4.2
              PHP 5.4.5
              Oracle Linux 6.5
              VmWare ESXi 4

              MariaDB 10.0.15
              Oracle Linux 6.5
              Supermicro SYS-6027TRF(64Gb+RAID-10 600Gb SAS15k)

              Comment

              • Aly
                ZABBIX developer
                • May 2007
                • 1126

                #8
                Originally posted by gdgsoft
                Да, в свое время столкнулся с подобной проблемой, когда разбирался с АПИ.
                Там тоже есть такая проблема с trigger.update вроде.
                что ты пытаешся запихнуть выражение, которое получел через trigger.get, но ничего не выходит, потому что trigger.get возвращает строку ввиде {12345}=0, где 12345 это номер условия
                В то же время trigger.update нужна нормальная форма условия - ЧИТАБЕЛЬНАЯ для хьюмена

                В результате я написал кривой скриптик, которой собирает тиггер из БД и представляет в нормальном виде, ЧИТАБЕЛЬНОМ виде.

                Интересно будет посмотреть новое АПИ (1.8.4), я так понял они там его доточили.
                Да есть такая проблема, к сожалению руки еще не дошли написать данный функционал.

                В вашем случае нужно было вытаскивать триггера с опциями {"select_functions": "extend", "select_items": "extend", ..} и потом уже самому собирать экспрешены. Это чтоб не лезть через базу.

                Постараемся решить данную проблемку, вы её зарегистрируйте пжлста
                Zabbix | ex GUI developer

                Comment

                • Serg79
                  Junior Member
                  • Feb 2011
                  • 1

                  #9
                  Здравствуйте.

                  Originally posted by Aly
                  В вашем случае нужно было вытаскивать триггера с опциями {"select_functions": "extend", "select_items": "extend", ..} и потом уже самому собирать экспрешены. Это чтоб не лезть через базу.
                  Так и не понял как вытащить полную строку с "expression". "expression" выглядит вот так:
                  <expression>{Template_MFISoft_DB:service.status[db_agent_sniffer].last(0)}#0</expression>

                  Использую PHP. Отправляю запрос:
                  Code:
                      $method = 'trigger.get';
                      $params = array(
                              'output' => 'extend',
                              'hostids' => array($template_id)
                              );
                  Получаю:
                  Code:
                  ...
                              [expression] => {12185}#0
                  ...
                  Если добавить 'select_functions' => 'extend', то в ответ тот же номер вместо функции:
                  Code:
                  ...
                              [functions] => Array
                                  (
                                      [0] => Array
                                          (
                                              [functionid] => 12185
                                              [itemid] => 22272
                                              [lastvalue] =>
                                              [function] => last
                                              [parameter] => 0
                                          )
                  
                                  )
                  ...
                              [expression] => {12185}#0
                  ...
                  Подскажите, как мне получить текстовую строку содержащую "expression"?

                  Я так понимаю, что должно быть что то типа "function.get", но в документации ( http://www.zabbix.com/documentation/1.8/api ) про это ни слово...

                  Comment

                  Working...