Все привет. Вопрос все еще остается открытым(( Увеличение длинны очереди помогает на какое-то время.
root@wirenboard-AEUQHNW4:~# systemctl status wb-rules
● wb-rules.service - LSB: MQTT Rule Engine for Wiren Board
Loaded: loaded (/etc/init.d/wb-rules; generated; vendor preset: enabled)
Active: active (running) since Tue 2023-06-20 19:36:30 MSK; 1 weeks 3 days ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/wb-rules.service
└─1425 /usr/bin/wb-rules -syslog -queue-len 4096 -editdir /etc/wb-rules /usr/share/wb-rules-system/rules/ /etc/wb-rules /usr/share/wb-rules/
июн 30 17:45:12 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4086/4096
июн 30 17:46:10 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4087/4096
июн 30 17:46:10 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4088/4096
июн 30 17:46:10 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4089/4096
июн 30 17:46:10 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4090/4096
июн 30 17:46:11 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4091/4096
июн 30 17:46:12 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4092/4096
июн 30 17:47:10 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4093/4096
июн 30 17:47:10 wirenboard-AEUQHNW4 wb-rules[1425]: ERROR: queue Tokens is almost filled! 4094/4096
июл 01 10:39:12 wirenboard-AEUQHNW4 wb-rules[1425]: WARNING: queue Events is half-filled: 2049/4096
Пока для себя добавил правило отправки в телегу сообщения каждый день. Если сообщение не пришло - значит есть проблема. Хочу автоматизировать перезапуск движка.
Подскажите можно как-то автоматически понять что служба не работает? Первое что приходит на ум это конечно парсить вывод статус. Может быть есть способы элегантнее?
У меня правило по таймеру раз в минуту пишет в mqtt таймстемп.
По крону раз в минуту запускается баш скрипт, который вытаскивает этот таймстемп из mqtt и если он отстает от текущего времени больше, чем на 5 минут, перезапускает движок правил.
Костыль, но работает уже несколько лет безотказно.
/1 * * * root /mnt/data/scripts/restart_wb-rules.sh >> /var/log/restart_wb-rules.log
остановил сервис
service wb-rules stop
лог не появился. При попытке запустить скрипт:
/mnt/data/scripts/restart_wb-rules.sh
wb-rules не запустился.
Может я что-то делаю не так?
Это я сделал в самом начале. Я так понимаю если скрипт отработал, то в консоль должно выводиться сообщение? может есть ещё какой лог, где посмотреть работу скрипта? а то вот опять буквально вчера wb-rules завис по не понятной причине. Причём хоть все правила удалить - это не поможет.
В консоль выведется сообщение, только если wb-rules завис и был перезапущен. Можно и на каждый вызов выводить, но зачем? У вас будет 1440 сообщений в логе в сутки, что скрипт запустился.
А перезапустит ли скрипт wb-rules, если его остановить в ручную? И если можно, то как сделать постоянный вывод сообщения в консоль об успешном запуске? Хочу понять отрабатывает ли у меня скрипт совместно с правилом? Спасибо!
К сожалению, в консоль вообще ничего не выводится! При запуске скрипта
/mnt/data/scripts/restart_wb-rules.sh
в консоли никаких сообщений, но при этом скрипт висит пустым окном и его можно закрыть нажав комбинацию ctrl +z
Не понимаю в чём проблема? Из консоли скрипт отрабатывает отлично! добавляю его в crontab. nano crontab -e, добавляю строку */1 * * * * /mnt/data/scripts/restart_wb-rules.sh, сохраняю ctrl +x. Но крон не выполняет задачу! В чём может быть проблема?
Пробовал добавлять строку для вывода сообщения в лог >> /tmp/restart.log. log не появился. 2. пробовал остановить wb-rules командой service wb-rules stop.ждал несколько минут, но сервис не поднялся. вывод скрипт не запускается.