Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Текущий »

Памятка

Прежде чем применять настройки - внимательно читаем. От этого зависит работоспособность системы


Краткое описание модуля

В системе реализована работа billd как системного юнита, при этом управление плагинами переносится в webinterface

Ошибка отображения макрокоманды «children»

Cannot invoke "com.atlassian.confluence.spaces.Space.getId()" because "space" is null

Создание юнита

Внимание, после запуска юнита, система будет искать настройки плагинов в вебинтерфейсе! Пока вы настриваете, может получится двойной запуск!
nano /etc/systemd/system.billd.service

И переносим туда следующие данные 

[Unit]
Description="АСР Казна-39" - Accounting Control Daemon
After=network.target mysql.service mariadb.service
StartLimitIntervalSec=0

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/usr/abills
ExecStart=/usr/abills/libexec/billd -d
Restart=always
RestartSec=3
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=billd
# Hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=off
ProtectHome=false
# Resource limits
LimitNOFILE=65536
TasksMax=10000

[Install]
WantedBy=multi-user.target

 Делаем его исполняемым

service billd enable

Запускаем

service billd start

Перезапуск

service billd restart

Описания настройки в вебинтерфейсе

У администратора должны быть права 5:12 "Разрешить глобальные настройки системы".

Переходим в меню:

Настройка>Системные настройки>Настройки ядра

Вкладка "Периодические процессы"

Далее вам надо добавить плагин:

Нажимаем "+" и выбираем плагин, который нам надо выполнить:


 

Если требуется - описываем аргументы запуска плагина (Точно такие-же как и в кроне)

Выбираем время запуска (отличие от от крна, что можно выбрать и секунду запуска, если поле секунда не заполнено или там стоит "-" - то секунды НЕ учитываются.

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

В системе предусмотрено каскадное выполнение плагинов:

Для этого надо выбрать Родительский плагин и очерёдность дочернего плагина (равносильно работы в кроне через точку с запятой)

Пример в кроне:

*/5        *       *       *       *       /usr/abills/libexec/billd equipment_pon; /usr/abills/libexec/billd equipment_pon CPE_FILL=1 TRANSACTION=1 ALERT=1

То в вебинтерфейсе это реализовывается следующим образом:

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

Для активации плагина - ставим чекбокс "Активно"

Настройки плагина сохраняются БЕЗ перечитывания вебинтерфейса, применяются моментально, системный юнит начинает выполнение моментально

Для предотвращения двойных запусков - реализован чекбокс защиты PID, включено по умолчанию, запрещает одновременный запуск олного и того-же плагина одновременно!



Дополнительная информация

Поля cron_min, cron_hour, cron_dom, cron_mon, cron_dow

Формат полностью аналогичен стандартному cron:

    *        - любое значение
    */N      - каждые N единиц (минут, часов и т.д.)
    A        - одно конкретное значение
    A,B,C    - перечисление значений
    A-B      - диапазон
    A-B/N    - диапазон с шагом

Диапазоны значений:

    cron_sec   : 0..59  
    cron_min   : 0..59
    cron_hour  : 0..23
    cron_dom   : 1..31
    cron_mon   : 1..12
    cron_dow   : 0..7 (0 и 7 обычно означают воскресенье)

Поле cron_sec

Работает так же, как cron_min, но для секунд (0-59). Используется только в режиме демона billd, чтобы запускать задания чаще, чем раз в минуту.

Чекбокс "Активно"

  • Правило активно, демон billd учитывает эту строку
  • Правило отключено, строка игнорируется

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

Чекбокс "Защита PID"

По умолчанию защита включена.

Чекбокс выключен - использовать "облегчённую" логику:

  • при ручном запуске плагина PID-файл создаётся и защищает от параллельных запусков;
  • при запуске через демон этот плагин вызывается с SKIPPID=1 и PID-файл не создаётся.

Чекбокс включён - включить принудительную PID-защиту для плагина, даже если он запускается через демон:

  • демон не добавляет SKIPPID=1;
  • плагин работает так же, как при ручном запуске, и не позволит запустить второй экземпляр, пока не завершился первый.

Поле timeout_sec

Ограничение времени работы плагина в секундах.

0  - таймаут не задан, поведение зависит от настроек BILLD:

  • если в конфиге есть BILLD_TIMEOUT_<plugin_name> или BILLD_PLUGIN_TIMEOUT_DEFAULT, используется это значение;
  • если нет ни одного лимита – плагин работает без ограничения по времени (как раньше).

>0 - жёсткий предел для данной строки расписания:

  • если процесс плагина работает дольше timeout_sec секунд, демон billd считает его зависшим;
  • сначала отправляется SIGTERM, далее (при отсутствии реакции) SIGKILL;
  • в лог попадает запись вида PLUGIN TIMEOUT name=<plugin> timeout=<N>s.

Поле parent_id и цепочки master/slave

Позволяет строить цепочки "мастер/слейв" внутри одного расписания.

parent_id:

  • 0 - запись корневая, мастер (запускается по cron_*)
  • ID другой строки - слейв, который запускается только после того, как в этом же такте был выполнен мастер

chain_order:

  • Порядок выполнения слейвов для одного мастера.
  • Записи с одинаковым parent_id сортируются по chain_order, затем по id.

В одном такте работы демона:

  • сначала отрабатывают все мастера (parent_id=0), которые подходят под cron_* на текущий момент времени;
  • после завершения мастера запускаются его слейвы в порядке chain_order (и их слейвы, рекурсивно).

Пример цепочки для equipment_pon:

1) Мастер:

     id          = 10
       plugin_name = equipment_pon
       plugin_args = ""
       cron_min    = *
       cron_hour   = *
       ...
       active      = 1
       protect_pid = 1
       parent_id   = 0
       chain_order = 0

2) Слейв:

      id          = 11
       plugin_name = equipment_pon
       plugin_args = CPE_FILL=1 TRANSACTION=1 ALERT=1
       cron_min    = *        (для слейва cron_* игнорируются)
       cron_hour   = *
       ...
       active      = 1
       protect_pid = 1
       parent_id   = 10       (ID мастера)
       chain_order = 1

В результате при каждом срабатывании мастера (строка 10):

  • сначала отработает equipment_pon без аргументов;
  • сразу после его завершения отработает equipment_pon
  • с параметрами CPE_FILL=1 TRANSACTION=1 ALERT=1.



  • Нет меток