Назад | Перейти на главную страницу

У Monit возникли проблемы с определением, запущен ли демон Биткойн

Я настраиваю Monit для мониторинга демона Биткойна, чтобы он работал круглосуточно и без выходных, и перезапускал его, если что-то пойдет не так. Бинарный биткойн находится на /usr/local/bin/bitcoind, а каталог данных находится по адресу /home/bitcoin/.bitcoin.

Я сказал Monit следить за демоном через файл pid /var/run/bitcoind.pid каждые 2 минуты и запускать / останавливать демон от имени пользователя bitcoin. Однако именно здесь я провел бесчисленные часы, пытаясь понять, что не так.

Потому что у меня нет скрипта запуска / выскочки для bitcoind, У меня он напрямую передает команды самому двоичному файлу, что можно увидеть с помощью следующих /etc/monit/monitrc файл:

set daemon 120
set logfile /var/log/monit.log 

check process bitcoind with pidfile "/var/run/bitcoind.pid"
    start program "/usr/local/bin/bitcoind -pid=/var/run/bitcoind.pid -datadir=/home/bitcoin/.bitcoin -daemon"
        as uid bitcoin and gid bitcoin
    stop program "/usr/local/bin/bitcoind stop"
        as uid bitcoin and gid bitcoin
    if failed port 8332 for 2 cycles then restart

Когда система запускается, я вхожу в систему как пользователь bitcoin и инициировать ps -u bitcoin. Конечно же, bitcoind отображается как работающий под моим пользователем. Однако, когда я получаю Monit для отображения статуса через monit status, ответ сначала отображается как execution failed, затем not monitored.

Я проверил /var/run/ пока bitcoind запущен и обнаружил, что нет такого файла с именем bitcoind.pid, что заставляет меня думать, что bitcoind не имеет достаточных разрешений для создания pid файл в /var/run во время работы как пользователь bitcoin.

В качестве альтернативного решения я оставил файл pid, созданный в местоположении по умолчанию (/home/bitcoin/.bitcoin/bitcoind.pid), но корень не может получить к нему доступ, что также приводит к тому же результату.

В /var/log/monit.log файл не предоставляет никакой полезной информации, поэтому используйте «обертки», которые я пробовал.

Все это можно решить, запустив bitcoind так как root, однако меня беспокоят вопросы безопасности.

Вы правы, предполагая, что bitcoin у пользователя не будет разрешения на запись /var/run, тем не мение root воля уметь читать /home/bitcoin/.bitcoin/bitcoind.pid. Я бы оставил PID в последнем месте, а затем поработал бы еще над выяснением, почему monit не читает это второе место. Моя ставка будет опечаткой в ​​пути в конфиге monit.