我正在尝试使用 chef solo 在我的服务器上配置 monit。当我访问端口 2812 时,响应显示this webpage is not availble
。
配置/chef/文件/默认/monitrc
set daemon 30
set pidfile /var/run/monit_real.pid
set logfile syslog facility log_daemon
set idfile /var/monit/id
set statefile /var/monit/state
set eventqueue
basedir /var/monit/events
slots 100
set httpd port 2812
allow admin:"secret"
include /etc/monit/conf.d/*
监控配方
package 'monit' do
action :install
end
service "monit" do
supports :status => true, :restart => true, :start => true,:stop => true
action [ :enable, :start ]
end
directory '/etc/monit' do
owner 'deploy'
group 'deploy'
mode '0755'
recursive true
action :create
notifies :restart, resources(:service => "monit"), :immediate
end
cookbook_file '/etc/monit/monitrc' do
source 'monitrc'
owner 'deploy'
group 'deploy'
mode '0755'
action :create
end
cookbook_file '/etc/monit/conf.d/puma.conf' do
source 'monit-puma'
owner 'deploy'
group 'deploy'
mode '0755'
action :create
end
cookbook_file '/etc/monit/conf.d/nginx.conf' do
source 'monit-nginx'
owner 'deploy'
group 'deploy'
mode '0755'
action :create
end
execute 'sudo monit reload'
execute 'sudo monit start all'
答案1
其中一部分是调试为什么 monit 无法启动。
使用日志语句,logfile syslog...
您应该查看 syslog 守护程序的输出以获取日志详细信息。我修改了 monitrc 以使用文件进行更简单的调试,如下所示:
set logfile /var/log/monit.log
输出显示:
[UTC Mar 3 13:13:14] info : Starting monit daemon with http interface at [*:2812]
[UTC Mar 3 13:13:14] error : Cannot open for write -- No such file or directory
因此,其中一个配置指令指向不存在的路径。
您还可以以交互方式运行 monit 命令以获取更多详细信息。
/usr/bin/monit -c /etc/monit/monitrc -I -vv
这将会发出大量的调试信息。
在这种情况下,我们可以看到相同的消息被重复:
Cannot open for write -- No such file or directory
不幸的是,输出并没有告诉我们正在尝试哪个文件或目录。
查看配置,我们可以看到以/var/monit/
- 开头的路径,但没有相关资源可以在 Chef 配方中创建这些路径。
# ls /var/monit
ls: cannot access /var/monit: No such file or directory
所以这表明 monit 守护进程正在尝试在不存在的路径中打开/写入状态、id 和队列文件。
Ubuntu 包中用于 monit 的默认路径/var/lib/monit/
- 您可以更改配置以使用该路径,或者可以向配方中添加另一个资源来创建所需的路径。