您有几个选项,我将定义其中两个,正确的一个和简单/坏的一个。
本地用户监控
我个人对 Monit 的使用是在我没有 root 访问权限的共享服务器上。所以我以非 root 用户身份运行 Monit。
为了做到这一点,我编译了 Monit 的前缀为$HOME/apps
,因此配置文件位于$HOME/apps/etc
. 这避免了 sudo 问题。如果您有权访问包管理器并以这种方式安装了 Monit,则可以使用参数以用户身份运行 monit-c
来定义它应该在哪里查找配置文件:
monit -c $HOME/config/monitrc
为了让 Capistrano 识别本地监视器,您需要一些额外的参数config/deploy.rb
:
#set :monit_bin, '/usr/bin/monit' # Use this if you compile monit yourself.
set :sidekiq_monit_conf_dir, '/home/myuser/config/monit.d' # Feel free to customize.
set :sidekiq_monit_use_sudo, false
在您使用该选项定义的 monitrc 文件中-c
,您需要确保您定义的任何文件夹都:sidekiq_monit_conf_dir
通过包括:
include /home/myuser/config/monit.d/*.conf
因为我没有初始化系统,所以我让 Cron 每 30 分钟启动一次 Monit,如果它已经在运行,那就是 noop:
# Restart monit if it dies
*/30 * * * * $HOME/apps/bin/monit > /dev/null
如果您具有 root 访问权限,则可以通过使用 init 脚本(或systemd 单元文件)以本地用户身份启动 Monit来改进这一点。
错误的选择:让您的用户访问 conf 目录
您可以编辑/etc/monit/monitrc
以包含您的本地用户配置目录,如上所述。同样,您可以允许您的用户写入/etc/monit/conf.d
. 这些解决方案的主要缺点是您现在允许非 root 用户创建将以 root 身份执行的文件,从而打开权限提升漏洞。如果您的用户曾经被入侵,您当然不希望攻击者有一个简单的方法来获取 root。
我之所以包含此选项,主要是因为它被普遍考虑,并且在绝大多数情况下(例如当您关心安全性时)应避免使用。但是,这在偶尔的极少数情况下可能很有用(例如,当您有一个短期服务器供内部使用,仅在防火墙后面,只有受信任的用户,并且您需要快速设置它时)。