Интеграция с другими программными комплексами

  оглавление  Используем программу "Убийца нежелательных окон 1С"

Обновлятор-1с. Как настроить запуск по расписанию (v3)?

Общее описание

Обновлятору не требуется быть всё время открытым или работать как служба, чтобы стал возможен запуск задач по расписанию.

Потому что запуск по расписанию работает через стандартный механизм Windows, который называется "Планировщик задач".

И когда пользователь задаёт настройки расписания ...

... обновлятор автоматически создаёт или удаляет нужные задачи в планировщике системы:

Чего нельзя забывать

Выбор пользователя

Пользователь, которого мы указываем для запуска задач по расписанию...

а) ... должен иметь непустой пароль. Это требование безопасности Windows. Если вы столкнулись именно с этим ограничением, то самым правильным решением будет:

  • либо назначить пароль текущему пользователю, под которым вы собираетесь запускать обновлятор по расписанию
  • либо создать в системе отдельного пользователя с паролем, которого и прописать в расписании обновлятора

Ну а самым простым (но неправильным с точки зрения безопасности) решением этого ограничения будет отключить опцию "Разрешить использование пустых паролей только при консольном входе" в локальной политике безопасности компьютера.

б) ... должен иметь права на вход в качестве пакетного задания.

Это право необходимо, если вы настраиваете выполнение задач расписания в фоновом режиме.

Чтобы дать это право пользователю:

  • зайдите в локальную политику безопасности Windows
  • пункт 'Локальные политики'
  • подпункт 'Назначение прав пользователя'
  • найдите параметр 'Вход в качестве пакетного задания' и добавьте в его значение нужного пользователя
  • внимание, если у вас отсутствует пункт 'Вход в качестве пакетного задания' - ищите другой пункт 'Запретить вход в качестве пакетного задания'; в этом случае нужного пользователя (или группу в которую он входит) из этого пункта нужно наоборот удалить

Если же вам достаточно того, чтобы расписание обновлятора работало только, если за компьютером работает (произведен вход в систему) текущий пользователь:

  • в диалоге выбора пользователя (при сохранении расписания) установите галку 'Запускать только при вошедшем в систему текущем пользователе'

При затруднениях, пожалуйста, обратитесь к вашему системному администратору.

Выбор баз

В операциях, запущенных по расписанию, участвуют только те базы, которые выбраны либо в общем списке баз расписания ...

... либо в списке баз конкретной задачи:

При этом не важно стоит ли отметка рядом с базой в главном окне обновлятора:

Эти галки (в главном окне) предназначены только для ручного запуска операций и на запуск задач по расписанию влияния не оказывают.

Порядок запуска

При запуске задачи по расписанию обновлятор первым делом проверяет не выполняется ли сейчас другая задача, запущенная по расписанию. И если выполняется, он в начале дожидается её окончания и только потом выполняет новую.

Это означает, что если нам, к примеру, нужно настроить, чтобы в 22-00 выполнялась архивация, а сразу после её окончания обновление баз, то достаточно для архивации указать время запуска 22-00, а для обновления, например, 22-05.

Как узнать запускался ли обновлятор по расписанию

Бывает так, что расписание настроили, но что-то идёт не так. И мы вообще не уверены запускался ли обновлятор этой ночью.

Быстрая проверка

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

Здесь мы видим сколько дней назад запускалась соответствующая последняя задача по расписанию; сколько в ней участвовало баз и были ли ошибки. При этом если мы нажмём левой кнопкой на этих ссылках, то откроется соответствующий отчёт.

Детальная проверка

Также мы можем зайти в расписание...

... и посмотреть историю выполнения задач вместе с отчётами:

Если ничего не помогло

И, наконец, самый надёжный способ разобраться запускалась ли программа и понять причины её не запуска или внезапного завершения - это включить журнал всех заданий в планировщике Windows. По умолчанию он отключён и я советую включать его, чтобы можно было всегда разобраться в проблемных ситуациях.

Чтобы включить журнал планировщика Windows заходим в "Расписание" и нажимаем кнопку "Открыть планировщик Windows":

Это можно сделать также и из панели управления Windows (раздел администрирование).

Здесь находим и нажимаем пункт "Включить журнал всех заданий":

Готово! Теперь мы сможем просматривать историю работы любой задачи в планировщике.

Например, выделим одну из задач обновлятора:

Как настроить облачную систему мониторинга за запуском задач обновлятора

Сейчас я расскажу о способе как застраховать себя от ситуации "ой, у нас оказывается уже целую неделю не архивируются (обновляются, тестируются..) базы".

Такая ситуация очень даже возможна, если мы настроили запуск архивации по расписанию, а затем:

  • другой администратор сервера отобрал права у нашей учётной записи для запуска архивации из планировщика и в этом случае обновлятор не сможет нам отправить даже уведомление на почту, ведь для этого ему нужно запуститься, а прав на это нет...
  • или произошли какие-то другие ошибки и на сервере нет интернета, чтобы обновлятор отправил нам сообщение об ошибке...
  • или мы сами ошибочно выключили в обновляторе запуск архивации по расписанию...
  • да мало ли чего может быть...

А нужно всего лишь в дополнение к настройке уведомлений об ошибках на почту настроить облачную систему мониторинга запуска нашего обновлятора. Что это и как работает?

Это, на мой взгляд, совершенно гениальная штука, которая называется healthchecks.io. У этих ребят есть и платные тарифы, но нам вполне сгодится их бесплатный тариф.

Идея следующая. Мы регистрируемся у них на сайте и в своём личном кабинете имеем возможность сказать:

  • Эй, HealthChecks, дай мне уникальный Url (адрес интернет ресурса).
  • HealthChecks, если по этому адресу никто не будет стучаться (запрашивать) в течение такого-то периода - оповести меня об этом на такую-то почту.

Затем мы укажем этот адрес в обновляторе и он будет запрашивать его, например, в конце каждой архивации, запущенной по расписанию. И если в какой-то момент он вдруг перестанет запускаться или будет аварийно завершаться, то сервис HealthChecks оповестит нас об этом. Даже если наш сервер сгорит, его украдут и разберут на винтики..., мы первыми узнаем об этом от HealthChecks :-)

Я считаю это гениальная идея. Если вы так не считаете, похоже вы не до конца поняли смысл этой штуки - пожалуйста, перечитайте мой неуклюжий текст ещё раз.

 Отдельно упомяну , что описанная система мониторинга не отменяет, а дополняет уведомления на почту об ошибках, которые также должны быть настроены в обновляторе для полного контроля за ситуацией.

К сожалению, сервис Healthchecks.io собирается прекратить обслуживание российских ip с 01.01.2023. К счастью, гуглятся десятки похожих сервисов, но вот какие из них действительно хороши, чтобы рекомендовать - я пока не знаю. Если начнёте чем-то пользоваться и оно понравится - пожалуйста, напишите мне на helpme1c.box@gmail.com, чтобы я мог написать об этом здесь.

Также обращаю ваше внимание на то, что исходный код сервиса Healthchecks.io идёт по открытой лицензии - вы можете поднять этот сервис на своём сервере (кстати, есть даже контейнер под Docker). Понимаю, что этот вариант подойдёт далеко не всем. Если кто-нибудь из пользователей сможет набросать хотя бы кратенькую инструкцию по развертыванию этого сервиса на своём сервере - я буду очень благодарен и размещу её (или ссылку на неё) здесь.

Альтернативы от пользователей: cronitor.io (сам пока не пробовал, но некоторые мне уже отписались, что очень годная вещь для замены Healthchecks)

Простейший сценарий настройки HealthChecks вместе с обновлятором

Пусть мы настраиваем ежедневную архивацию на сервере с именем DataServer, который принадлежит компании ООО "Ромашка":

И хотим, чтобы HealthChecks оповестил нас, если вдруг обновлятор перестанет запускаться для архивации или такие запуски будут завершаться аварийно.

1. Переходим на сайт https://healthchecks.io/

2. Нажимаем на ссылку Log In в правом верхнем углу.

3. Регистрируемся на почту, на которую хотим получать оповещения.

3. Переходим в раздел "Checks" и нажимаем большую зелёную кнопку "Add Check".

4. Добавилась новая проверка (Check) со своим уникальным адресом (Ping Url):

5. Изменим имя этой проверки на OOO "Romashka" (DataServer, archiving). Это нужно сделать, чтобы мы понимали с чем именно связана эта проверка (архивация на сервере с именем DataServer в компании ООО "Ромашка"):

6. Укажем период проверки (архивация должна запускаться 1 раз в день, сам процесс архивации может занимать до 12 часов):

Второй ползунок (grace) это как раз допустимое превышение периода, то есть время, в течении которого может длиться процесс архивации.

Дополнительный лимит в 12 часов (grace) я указал намеренно, потому что обновлятор делает запрос к системе мониторинга в конце своей работы, а время окончания может варьироваться от различных условий.

Например, если мы настраиваем обновление по расписанию на запуск в 22-00, то сегодня это обновление может закончиться в 23-00, а уже завтра (вышло много новых обновлений) будет длиться до 4 утра.

Отсюда и дополнительный запас в 12 часов, чтобы не было ложных срабатываний от HealthChecks.

Результат настройки периода будет таким:

7. Но как видите поле Last Ping пустое (Never). Оно будет обновляться по мере обращения к этому адресу обновлятором при архивации. А если обращения не будет больше чем 1 день и 12 часов, то HealthChecks забьёт тревогу и оповестит нас на почту.

8. Копируем Ping URL в настройку архивации по расписанию в обновляторе:

Вот и всё  :-)

Ради интереса запустим созданную задачу из расписания:

Дождёмся пока она отработает, а затем заглянем на панель HealthChecks:

Работает.

А вот пример письма от HealthChecks, если задача перестала запускаться:

В общем штука очень гибкая и я её рекомендую к использованию абсолютно всем.

Настройка более сложного расписания проверки

В предыдущем примере мы настраивали проверку для задачи, которая запускается каждый день и может длиться в течение 12 часов.

А что если нам нужно настроить расписание проверки чуть сложнее? Скажем у нас есть задача, которая запускается только по рабочим дням в 21-00 и может длиться также до 12 часов.

В этом случае на этапе настройки периода переключаемся с Simple на Cron:

Здесь нужно заполнить поле Cron Expression в соответствии с которым и будет рассчитано расписание:

Синтаксис описан здесь: https://healthchecks.io/docs/cron/

Для нашей задачи (запуск в 21-00, по рабочим дням, работа в течение 12 часов) настройка будет такой:

Если у вас возникнут затруднения с настройкой расписания через Cron - пишите мне на helpme1c.box@gmail.com, я помогу составить правильное выражение.

Возможен ли запуск по расписанию других задач с другими параметрами

Расписание поддерживает следующие виды задач

  1. Обновление баз
  2. Архивация баз
  3. Проверка архивов
  4. Скачивание обновлений для баз
  5. Тестирование и исправление баз

Но что если нужно поставить в расписание задачу, которой ещё нет в этом списке? В этом случае:

  1. Используйте возможности пакетных и onescript скриптов. При их сохранении можно указать добавление в планировщик так и вот так.
  2. Используйте ключи командной строки обновлятора.

Или напишите мне на helpme1c.box@gmail.com о своей проблеме и мы вместе подумаем, как её лучше решить.

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:



Интеграция с другими программными комплексами

  оглавление  Используем программу "Убийца нежелательных окон 1С"