Monit 无法确定比特币守护程序是否正在运行

Monit 无法确定比特币守护程序是否正在运行

我正在设置 Monit 来监控比特币守护进程,以确保它全天候运行,并在出现问题时重新启动。比特币二进制文件位于/usr/local/bin/bitcoind,数据目录位于/home/bitcoin/.bitcoin

我已经告诉 Monit 每 2 分钟通过 pid 文件监视守护进程一次/var/run/bitcoind.pid,并以用户身份启动/停止守护进程bitcoin。然而,我花了无数个小时试图找出问题所在。

因为我没有的启动/upstart 脚本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/runbitcoin

作为替代解决方案,我将 pid 文件留在默认位置(/home/bitcoin/.bitcoin/bitcoind.pid),但 root 无法访问它,这也导致了相同的结果。

/var/log/monit.log文件没有提供任何有用的信息,我尝试过的“包装器”也是如此。

bitcoind这一切都可以通过运行来解决root,但我担心安全问题。

答案1

您正确地推测该bitcoin用户没有权限/var/run写入root 将要能够读取/home/bitcoin/.bitcoin/bitcoind.pid。我会将 PID 保留在后一个位置,然后再做一些工作来弄清楚为什么 monit 没有读取第二个位置。我敢打赌 monit 配置中的路径可能有拼写错误。

相关内容