【问题标题】:Node.js (sudo) and monitNode.js (sudo) 和监控
【发布时间】:2011-06-21 00:51:44
【问题描述】:

我创建了一个新贵脚本来守护 juggernaut(一个 node.js 应用程序) 暴发户脚本如下

description "juggernaut server"
author      "panojsee"

start on startup
stop on shutdown

script
    # We found $HOME is needed. Without it, we ran into problems
    #export HOME="/home/ubuntu/src/juggernaut"
    chdir /home/ubuntu/src/juggernaut
    exec sudo /usr/bin/node server.js 2>&1 >> /var/log/node.log
end script

如您所见,我想用 sudo 运行节点(这样我就可以使用 Flash 套接字)。 我的监控脚本如下:

设置日志文件 /var/log/monit.log

check host juggernaut with address 127.0.0.1
    start program = "/sbin/start juggernaut"
    stop program  = "/sbin/stop juggernaut"
    if failed port 8080 protocol HTTP
        request /
        with timeout 10 seconds
        then restart

Monit 不允许我启动程序 = "sudo /sbin/start juggernaut" 一旦我杀死了 juggernaut(节点),monit 就会尝试重新启动它,但会因以下消息而死。

[UTC Feb  3 22:48:25] error    : 'nodejs' failed, cannot open a connection to INET[127.0.0.1:8080] via TCP
[UTC Feb  3 22:48:25] info     : 'nodejs' trying to restart
[UTC Feb  3 22:48:25] info     : 'nodejs' stop: sudo
[UTC Feb  3 22:48:25] error    : Error: Could not execute sudo
[UTC Feb  3 22:48:25] info     : 'nodejs' start: sudo

知道如何告诉 monit 执行 sudo 命令吗?

【问题讨论】:

    标签: node.js monit


    【解决方案1】:

    我认为您应该使用专用用户运行 nodeJS,然后从启动脚本中删除“exec sudo”,并直接告诉 monit 您要使用哪个用户。

    start program = "/sbin/start juggernaut" as uid user-id

    【讨论】:

      【解决方案2】:

      只需使用 sudo 启动 Monit,当然还要将 monit 添加到 sudoers

      【讨论】:

        【解决方案3】:

        检查 monit 以什么用户身份运行。该用户是否配置为运行 sudo?还要检查 sudo 是否报告了任何错误(可能在 /var/log/messages 中)。

        我发现this answer 对找出监控行为非常有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-26
          • 2020-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多