Ad Widget

Collapse

Триггер на nodata не срабатывает.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #1

    Триггер на nodata не срабатывает.

    Сервер zabbix 6.0
    Нужно мониторить состояние уч. записи и её наличие.
    Создал элемент данных wmi.get["root\cimv2","select PasswordExpires from Win32_UserAccount where Name='Admin'"]
    Создал триггер на значение PasswordExpires
    last(/<TemplateName>/wmi.get["root\cimv2","select PasswordExpires from Win32_UserAccount where Name='Admin''"])="True"
    Однако если уч. записи нет, то нужен триггер на её отсутствие
    Создал nodata(/<TemplateName>/wmi.get["root\cimv2","select PasswordExpires from Win32_UserAccount where Name='Admin"],21m)=1
    Поскольку когда нет данных триггер переходит в неподдерживаемое состояние, добавил в элемент данных проверку на неподдерживаемое значение - Задать значением в absent
    Вижу что проверка метрики производится каждые 10 мин и значение метрики отсутствует (куда девается значение absent - непонятно)
    Триггер на nodata не срабатывает. Почему?
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Насколько я понимаю, PasswordExpires тут - это показатель наличия ограничения срока действия пароля у пользователя, а не того, что пароль просрочен. Легко проверить на тестовом пользователе. Что касается отсутствия значения absent - загадка. Но я бы советовал вместо wmi.get использовать wmi.getall. Он выведет JSON (возможно, пустой) и никакой неподдерживаемости. А там уже можно обработать JSON как угодно (например, взять длину массива как показатель наличия пользователя)

    Comment

    • Victor Sklyarov
      Senior Member
      • Apr 2016
      • 184

      #3
      Нужно было анализировать именно PasswordExpires, поскольку при заведении скриптами пользователя инженер применил установку этого параметра с помощью команды
      net user Admin /passwordchg:yes Это не работает. Нужно устанавливать свойство через wmic useraccount where name='Admin' set PasswordExpires=FALSE
      По поводу реализации, именно так и сделал, применил wmi.getall и простенькую обработку
      try {
      var rez=JSON.parse(value);
      }
      catch(error) {
      return 'nodata';
      }
      if(rez.length==0) {
      return 'absent';
      } else {
      return JSON.stringify(rez[0].PasswordExpires).replace(/"/g,'');
      }

      В результате в триггере не нужно применять функцию nodata()
      Остаётся вопрос - куда в первом случае девается замещение?

      Comment

      Working...