Ad Widget

Collapse

Перезапуск службы Windows по раписанию

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • AndreyP
    Junior Member
    • Jan 2022
    • 7

    #1

    Перезапуск службы Windows по раписанию

    Доброго времени суток! Создал скрипт перезапуска службы Windows типа: net stop "app" && net start "app".
    При ручном запуске скрипта на ПК скрипт срабатывает.
    Но мне требуется выполнение по расписанию.
    1. Создаю действие с условием:
    Период времени в 1-7,hh:mm-hh:mm
    Операция : Тип операции
    Отправить сообщение Удаленная команда
    Тип Глобальный скрипт
    указываю мой работающий скрипт.

    2. Ожидаю заданный интервал времени, ничего не происходит.

    Вроде все просто, но что-то делаю не так.

    Заранее спасибо.
  • Answer selected by Kos at 24-01-2022, 10:12.
    AndreyP
    Junior Member
    • Jan 2022
    • 7

    {host1:system.uptime.time()}>=151000 and {host1:system.uptime.time()}<=151500 - сработало!!!

    Благодарю!!! тему можно закрывать.
    Last edited by AndreyP; 21-01-2022, 16:01.

    Comment

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

      #2
      Originally posted by AndreyP
      Но мне требуется выполнение по расписанию.
      1. Создаю действие с условием:
      Действие не может быть само по себе. Действие можно настроить как реакцию на событие какого-то типа:
      Действия можно задать для событий со всех поддерживаемых источников:
      • События триггеров - при изменениях состояния триггеров с ОК на ПРОБЛЕМА и обратно
      • События обнаружения - когда производится сетевое обнаружение
      • События авторегистрации - при авторегистрации новых активных агентов (или при изменениях в метаданных узла сети, который уже зарегистрирован)
      • Внутренние события - когда элементы данных становятся неподдерживаемыми и триггеры переходят в неизвестное состояние
      Вероятнее всего, вы настраиваете действие на триггерные события; но в этом случае в условиях желательно иметь какой-то триггер, котороый заведомо сработает в указанный диапазон времени (поскольку если никаких триггеров в тот период не сработает, то и действие выполняться не будет).

      Проще всего сделать следующим образом: настроить триггер, который бы срабатывал в конкретное время, и в условиях действия прописать этот конкретный триггер.

      Пример:
      Предположим, что мы хотим, чтобы триггер срабатывал в три часа ночи.
      Допустим, что на нашем хосте метрика system.uptime не используется.
      Тогда настраиваем сбор этой метрики, выставляя кастомное расписание (проверять только в три часа ночи), а условие триггера делаем фиктивным, чтобы триггер срабатывал всегда по приходу новых данных, а закрывался, допустим, через 5 минут; например, можно сформулировать так:
      Code:
      {Host:system.uptime.nodata(300)}=0
      (в версиях 5.4 и новее нужно использовать уже другой синтаксис, но смысл, я надеюсь, понятен).
      Тогда в три ночи придут новые данные, сработает триггер, сработает привязанное к нему действие, а через 5 минут триггер закроется.

      Comment

      • AndreyP
        Junior Member
        • Jan 2022
        • 7

        #3
        Не совсем понял....
        Тогда настраиваем сбор этой метрики, выставляя кастомное расписание (проверять только в три часа ночи)
        В условии действия можно выбрать только период времени 1-7,hh:mm-hh:mm
        Как установить конкретное время?

        У меня уже есть триггер типа : Могу я, например, опросить в условии действия значение "Упала ли служба", и, если не упала , то скомандовать перезапуск её?

        Comment

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

          #4
          Originally posted by AndreyP
          Не совсем понял....
          Я понял так, что Вы хотели делать перезапуск службы по таймеру в конкретное время суток, для этого пытались использовать расписание в настройках дествия (Action).
          Моя мысль была: для такой задачи расписание нужно проверять не в настройках действия, а в настройках триггера либо самого элемента данных (item-а), т.е. сделать некий триггер, который будет срабатывать только в нужное время. А в настройках действия вместо проверки времени поставить привязку к такому триггеру.

          Какие условия можно проверять в настройках действия - описано в документации. Но, повторюсь, действие - это реакция на некое событие (см. в моей предыдущей реплике цитату из документации). На какое событие Вы хотите запускать своё действие?

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #5
            Попробую объяснить проще.
            Период времени 1-7,hh:mm-hh:mm в действии это не повод выполнить действие в этот момент, а всего лишь временной фильтр, накладываемый на другие условия. Период времени, в который действие может сработать.
            Last edited by Semiadmin; 21-01-2022, 12:57.

            Comment

            • AndreyP
              Junior Member
              • Jan 2022
              • 7

              #6
              Период времени из Action убрал.

              Создал триггер
              {host01:system.uptime.time()}=hhmmss - вот такое выражение создал через конструктор выражений в триггере. Поставил его в action.
              В операции свой скрипт перезагрузки приложения ( скрипт типа : net stop "App" && net start "App")
              Не сработало (.
              Может еще какие условия добавить?

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #7
                Триггер с функцией time() пересчитывается раз в 30 секунд, следовательно, вероятность того, что вам повезет и он пересчитается ровно в hhmmss, равна 1/30.
                Нужно брать некий интервал не менее 30с

                Comment

                • AndreyP
                  Junior Member
                  • Jan 2022
                  • 7

                  #8
                  Установил интервал 60с.
                  Важность поднял до "Информация".
                  Не срабатывает....

                  Comment

                  • Semiadmin
                    Senior Member
                    • Oct 2014
                    • 1625

                    #9
                    Originally posted by AndreyP
                    Установил интервал 60с.
                    и как выглядит триггер?

                    Comment

                    • AndreyP
                      Junior Member
                      • Jan 2022
                      • 7

                      #10
                      {host1:system.uptime.time()}>=151000 and {host1:system.uptime.time()}<=151500 - сработало!!!

                      Благодарю!!! тему можно закрывать.
                      Last edited by AndreyP; 21-01-2022, 16:01.

                      Comment

                      Working...