Ad Widget

Collapse

Работа макросов {item.value} и {item.lastvalue} в описании триггеl

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • gdgsoft
    Senior Member
    • Apr 2009
    • 202

    #1

    Работа макросов {item.value} и {item.lastvalue} в описании триггеl

    Коллеги, кто как борется с такой ситуацией в плане отображения триггеров…
    Имеем описание триггера «Административное состояние интерфейса E21: {ITEM.VALUE}»

    Состояние триггеров можно просмотреть в двух менюшках:
    1) "Monitoring" -> "Triggers"
    2) "Monitoring" -> "Events"

    Через первое меню удобно проводить так называемый «оперативный контроль», когда на экране отображаются только активные триггера, т.е. по активным проблемам. Через второе меню удобно анализировать «поведение» триггера в целом. Для обоих случаев с целью отображения текущего значения элемента вполне подходит макрос {ITEM.VALUE} (особенно если его пропатчить в части «valuemapped»). В результате его применения в описании триггера в окне "Monitoring" -> "Triggers" имеем те значения, которые актуальны именно в данные момент времени. А в окне "Monitoring" -> "Events" данный макрос будет отображать те значения элемента, которые были актуальны на момент смены состояния триггера как для статуса «PROBLEM», так и для статуса «OK».

    Казалось бы, все хорошо! Но, ничто не вечно под луной…
    И наступает период, который в конфигурации элемента (ITEM), называется «Keep history (in days)». В результате очистки «исторических» значений, триггер приобретает вот такой вид:
    «Административное состояние интерфейса E21: -»

    хотя до этого момента выглядел гораздо лучше:
    «Административное состояние интерфейса E21: Down (0)»

    Начинаешь разбираться почему так. Заходишь в меню: "Monitoring" -> "Latestdata" и видишь, что для данного элемента по-прежнему пишется:
    «Интерфейс E21, административное 10 Aug 2011 17:45:19 Down (0) - Graph»

    Но при этом, если здесь нажать «Graph» и посмотреть ВСЕ значения для данного элемента, то там будет пусто, т.к. сработал «Keep history (in days)».

    Почему в меню "Monitoring" -> "Triggers" и "Monitoring" -> "Events" в качестве значения отображается прочерк, а для "Monitoring" -> "Latestdata" последнее состояние/значение находится?

    Смотрим БД и видим, что:
    select * from items where itemid=28543
    *************************** 1. row ***************************
    itemid: 28543
    type: 2
    snmp_community:
    snmp_oid:
    snmp_port: 161
    hostid: 10189
    description: Интерфейс E21, административное
    key_: ifAdminStatus.1021
    delay: 60
    history: 90
    trends: 365
    lastvalue: 0
    lastclock: 1312987519
    prevvalue: NULL
    status: 0
    value_type: 3
    <- обрезал ->

    Параметр «lastvalue» равен нулю.
    Данное обстоятельство наводит на мысль, а не использовать ли в описании триггера вместо макроса {ITEM.VALUE} макрос {ITEM.LASTVALUE}. Меняем и получаем:
    1) В меню "Monitoring" -> "Triggers" триггер отображается как:
    «Административное состояние интерфейса E21: Down (0)»
    Вроде как все хорошо, но…

    2) В меню "Monitoring" -> " Events " история состояния триггера отображается как:

    Административное состояние интерфейса E21: Down (0) PROBLEM Warning 18h 35m 20s No Ok
    Административное состояние интерфейса E21: Down (0) OK Warning 8m 23s No Ok
    Административное состояние интерфейса E21: Down (0) PROBLEM Warning 1m 27s No Ok
    Административное состояние интерфейса E21: Down (0) OK Warning 43m 48s No Ok

    То есть, для всех изменений состояний «PROBLEM» и «OK» в качестве значения подставляется значение, которое отдает макрос {ITEM.LASTVALUE}, т.е. НУЛЬ, а это не правильно именно для исторических состояний триггеров «ОК», если такие имеются.


    Вопрос в том, как можно сделать так, что бы в окне с активными триггерам «"Monitoring" -> "Triggers"», не смотря на возраст триггера и настройки параметра элемента «Keep history (in days)» все таки отображалось ПОСЛЕДНЕЕ значение, которое было получено элементом? А в меню "Monitoring" -> "Events" отображались «исторические» значения, которые подставляются макросом {ITEM.VALUE} и подчиняются параметру элемента «Keep history (in days)».

    Есть ли у кого то подобная реализация?
    На мой взгляд, что бы достичь вышеописанного, можно использовать в качестве «Keep history (in days)» большой интервал, например 365 дней и использовать в триггерах макрос {ITEM.VALUE}. Но тогда получим рост БД, что не хотелось бы. Или же, как вариант, что бы при очистке «исторических» значений, при любом интервале «Keep history (in days)» в любом случае оставалось последнее значение элемента.

    Собственно, хотелось бы услышать ваше мнение и рекомендации.
    Спасибо.
    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)
  • zalex_ua
    Senior Member
    Zabbix Certified Trainer
    Zabbix Certified SpecialistZabbix Certified Professional
    • Oct 2009
    • 1286

    #2
    Originally posted by gdgsoft
    Для обоих случаев с целью отображения текущего значения элемента вполне подходит макрос {ITEM.VALUE}
    Да, эта разница описана в документации:
    http://www.zabbix.com/documentation/.../config/macros

    Originally posted by gdgsoft
    Заходишь в меню: "Monitoring" -> "Latestdata" и видишь, что для данного элемента по-прежнему пишется:
    «Интерфейс E21, административное 10 Aug 2011 17:45:19 Down (0) - Graph»
    Так и должно быть, независимо от того вычищена вся история или нет. Потому что значение для этой страницы берется не их таблиц истории а из таблицы "items" где есть колонка "lastvalue"

    Originally posted by gdgsoft
    Но при этом, если здесь нажать «Graph» и посмотреть ВСЕ значения для данного элемента, то там будет пусто, т.к. сработал «Keep history (in days)»
    Правильно, потому что теперь данные берутся из таблиц истории, которые уже вычищены хаускипером.

    Originally posted by gdgsoft
    Данное обстоятельство наводит на мысль, а не использовать ли в описании триггера вместо макроса {ITEM.VALUE} макрос {ITEM.LASTVALUE}.
    Позже вы поняли почему эта мысль плохая

    Originally posted by gdgsoft
    Вопрос в том, как можно сделать так, что бы в окне с активными триггерам «"Monitoring" -> "Triggers"», не смотря на возраст триггера и настройки параметра элемента «Keep history (in days)» все таки отображалось ПОСЛЕДНЕЕ значение, которое было получено элементом?
    Думаю что это возможно. Нужно заставить интерфейс запрашивать данные не из истории а из таблицы items (тоесть нужно править код). Но получится некая неконсистенция по сравнению с тем что в событиях значения не будут отображены. Тут нужно думать более глубоко.

    Originally posted by gdgsoft
    А в меню "Monitoring" -> "Events" отображались «исторические» значения, которые подставляются макросом {ITEM.VALUE} и подчиняются параметру элемента «Keep history (in days)».
    Не совсем понятно что значит "и подчиняются параметру элемента «Keep history (in days)»." Но в общем это невозможно.

    Originally posted by gdgsoft
    Или же, как вариант, что бы при очистке «исторических» значений, при любом интервале «Keep history (in days)» в любом случае оставалось последнее значение элемента.
    Получится как то нелогично. Уж лучше брать lastvalue из таблицы items для раскрытия макроса {ITEM.VALUE} на странице триггеров.

    Originally posted by gdgsoft
    Собственно, хотелось бы услышать ваше мнение и рекомендации.
    Это было мое скромное мнение .

    Рекомендация - смиритесь. Или переходите на трапы (если допустимо) и храните историю дольше и без раздувания размера БД.

    Comment

    • gdgsoft
      Senior Member
      • Apr 2009
      • 202

      #3
      Доброе утро, zalex_ua!

      Не совсем понятно что значит "и подчиняются параметру элемента «Keep history (in days)»."
      Имелось ввиду то, что когда наступал бы период "«Keep history (in days)».", то данные для окна "Monitoring" -> " Events" очищались бы.

      Рекомендация - смиритесь. Или переходите на трапы (если допустимо) и храните историю дольше и без раздувания размера БД.
      Да, с ними родными и работаю.

      Уж лучше брать lastvalue из таблицы items для раскрытия макроса {ITEM.VALUE} на странице триггеров.
      За это отдельное спасибо

      Спасибо!
      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

      Working...