Ad Widget

Collapse

Мониторинг процесса в Windows

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • VlLight
    Junior Member
    • Sep 2020
    • 13

    #1

    Мониторинг процесса в Windows

    Добрый день, хочу отслеживать, запущен ли определённый процесс и выводить предупреждение, если не запущен.
    Процесс запускается только при логине пользователя, ПК может какое-то время стоять незалогиненным, соответственно, в этом случае оповещений слать не нужно. Сделал триггер
    Code:
    {Client PK:proc.num[prog.exe].last()}<1 and {Client PK:proc.num[explorer.exe].last()}>=1
    (отслеживаю логин по запущенному процессу explorer.exe), интервал обновления элементов данных 5 минут. Всё работает, но иногда срабатывает триггер при логине (вероятно, при логине бывают ситуации, когда explorer.exe уже запустился, а prog.exe ещё не запустилась в момент обновления элементов). Поменял триггер, сделал так
    Code:
    {Client PK:proc.num[prog.exe].last()}<1 and {Client PK:proc.num[explorer.exe].avg(12m)}>=1
    Я так понял, что это среднее значение за последнее 12 минут (это будут 2 последовательных значения в моём случае), т.е. с момента логина пройдёт минимум 12 минут, за это время prog.exe гарантированно успеет загрузиться и отработает обновление элемента данных. Но я всё равно иногда наблюдаю срабатывание триггера при логине. В процессе изысканий добавил к триггеру ещё одно условие
    Code:
    {Client PK:proc.num[prog.exe].last()}<1 and {Client PK:proc.num[explorer.exe].avg(12m)}>=1 and {Client PK:system.uptime.last()}>15m
    В итоге, в оповещении я вижу:
    Code:
    Operational data: 0, 1, 00:01:12
    Это значит, что триггер отрабатывает при значении system.uptime менее 15 минут? Может быть я как-то не так задаю минуты?
    Last edited by VlLight; 16-02-2021, 11:57.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3406

    #2
    Не знаю, что там с аптаймом, но я бы убрал последнее условие вообще (ведь аптайм -- это время с последней перезагрузки, а не с последнего логина).
    Вместо этого переформулировал бы второе условие (с количеством процессов Explorer), заменив функцию avg() на min(). Потому как если в момент логина будет обнаружено два эксплорера, то среднее сразу же станет равно единице; и пофиг, что нужная программа ещё не успела запуститься.

    Comment

    • VlLight
      Junior Member
      • Sep 2020
      • 13

      #3
      Да, я понимаю насчёт аптайма. Основной сценарий использования компьютера всё-таки - это логин через 1-10 минут после включения, поэтому косвенно это условие могло бы помочь против ложных срабатываний (через 15 минут после включения в большинстве случаев пользователь уже какое-то время будет залогинен). За min() спасибо, попробую.

      Comment

      • studenttmb
        Junior Member
        • Mar 2020
        • 20

        #4
        добрый день! может кто подскажет, попытался добавить в уже готовый шаблон правило автообнаружения через proc.num сразу для нескольких процессов, имена процессов занес в фильтры макроса, но по итогу вот это пишет: Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: '47'
        ..хотя через zabbix_get значение по процессам приходят
        Attached Files

        Comment

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

          #5
          Originally posted by studenttmb
          добрый день! может кто подскажет, попытался добавить в уже готовый шаблон правило автообнаружения через proc.num сразу для нескольких процессов, имена процессов занес в фильтры макроса, но по итогу вот это пишет: Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: '47'
          ..хотя через zabbix_get значение по процессам приходят
          Ну, это как бы немножко другая тема, нежели у автора исходного сообщения, но я в двух словах отвечу.
          Для работы правил низкоуровневого обнаружения (LLD) необходимо, чтобы возвращался список нужных объектов в виде JSON-а, это вкратце описано в документации (внизу там есть пример такого JSON-а).
          Но proc.num тут никак не подходит: он не возвращает ни готовый JSON, ни список (который можно было бы преобразовать в JSON через предобработку), а всего лишь число (количество процессов, подходящих под конкретный шаблон).

          Comment

          Working...