Ad Widget

Collapse

Snmp возвращает дату и как же её обработать (нужна разница с текущей)?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Vislobokov
    Senior Member
    • Aug 2018
    • 298

    #1

    Snmp возвращает дату и как же её обработать (нужна разница с текущей)?

    Привет всем.
    Такая проблема - нужно сделать триггер, который сработает если разница между текущей датой и датой последнего селфтеста на APC UPS'е больше скажем 10 дней.
    Дата последнего селфтеста приходит в Zabbix по SNMP в виде строки 10/10/2018, но как её сравнить с текущей - ума не приложу.
    Посоветуйте пожалуйста.
  • Evgeniy
    Senior Member
    • May 2012
    • 157

    #2

    Comment

    • Victor Vislobokov
      Senior Member
      • Aug 2018
      • 298

      #3
      Спасибо за ответ, но тут другая ситуация. Внешняя проверка выдаёт дату именно в таком виде '10/10/2018' а не в unixtime.

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        Как вариант:
        1) Начиная с версии Zabbix 3.4, можно использовать препроцессинг. С его помощью, используя регулярное выражение, входящее значение '10/10/2018' преобразовать в число 20181010. Само значение (item) описать как имеющее тип не строковый, а Numeric (unsigned). Тогда в триггере его можно будет сравнивать с другим числом.
        2) Осталось найти, с чем сравнивать. Поскольку такой формат нельзя использовать непосредственно для сравнений "больше/меньше на 10", а календарной арифметики среди функций Zabbix-а (пока?) нет, то остаётся вариант - получать нужное значение для сравнения с помощью внешнего скрипта. Например, линуксовая команда
        Code:
        [FONT=courier new]date --date="10 days ago" "+%Y%m%d"[/FONT]
        вернёт в том же формате дату, которая была 10 дней назад, нужно её просто сравнить на больше/меньше.
        Останется лишь оформить подобную команду в качестве внешнего скрипта (либо через UserParameter на агенте, либо как External check на сервере), причём её достаточно забирать раз в сутки (скажем, в 00:00:03 каждых суток).

        Comment

        • Victor Vislobokov
          Senior Member
          • Aug 2018
          • 298

          #5
          Спасибо за ответ.
          Если это делать внешним скриптом, то вообще пропадает смысл что-либо сравнивать в самом Zabbix'е. Внешний скрипт с успехом может получить значение через SNMP, затем обработать его как надо и вернуть в качестве результата просто сразу дельту между текущей датой и полученной по SNMP. Если никакого другого выхода нет, то можно и так сделать, но как-то криво получается

          Comment

          • max.ch.88
            Senior Member
            • Oct 2018
            • 206

            #6
            на 2.4 у меня работает такой триггер 20181220-{host:system.localtime[utc].date()}<14 (ну захотел заказчик такую напоминалку ) . остается привести получаемую от ИБП дату к виду ГГГГММДД. возможно спасет препроцессинг. не пользовался
            Last edited by max.ch.88; 02-11-2018, 09:40.

            Comment

            Working...