【问题标题】:Trying to start statsD via chef试图通过厨师启动 statsD
【发布时间】:2015-04-27 11:01:19
【问题描述】:

我正在尝试在 ubuntu 上启动 statsD,但遇到了问题。

如果我启动它,它会起作用,但会阻止厨师继续,但它会起作用并显示在石墨中。

如果我这样启动它(或使用其他方法让它在后台启动):

(/usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js) &

它不会阻止 chef,但石墨中没有任何显示,但我知道它仍在运行,因为

ps aux | grep stat

显示命令正在运行(不包括 grep 命令)。

我尝试使用 forever.js 来实现,但 npm 只报告有 failed to fetch from registry: forever

编辑:

好的,我设法让它开始使用 nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js

这会启动 statsD(很好)并且它不会阻止厨师(也很好)但是当我尝试时它现在拒绝停止运行 sudo killall -r stat

事后看来,这是因为 nohup 阻止它接收终止信号。

所以问题变成了如何使用 nohup(或类似的东西)让它在后台运行,但仍然能够停止 statsD 以便重新启动它(对于配置中的任何潜在更改)。

编辑:

好的,将启动命令更改为: nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js >> /var/log/statsd.log 2>&1& \n echo $! /opt/statsd/statds.pid 我能够存储 pid 然后使用

kill -9 `/opt/statsd/statsd.pid`

我能够杀死该进程,但它仍然让 rcp.statd -L 运行,它有一个单独的 pid

【问题讨论】:

标签: node.js chef-infra statsd


【解决方案1】:

好的,我设法创建了一个 bash 命令,该命令将查找并杀死其中包含单词 stat 的任何进程;对我来说效果很好,因为只有 statd 相关的进程有stat

所以,启动 statD 的命令是: nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js >> /var/log/statsd.log 2>&1&

有点啰嗦,但我使用的是绝对路径。

停止的命令是: ps aux | awk '/stat/ {print $2}' | xargs kill -9

相当简单甚至更好,当我需要重新启动时,我不需要执行整个“将 pid 存储在 txt 文件中”来杀死 statsd。

【讨论】:

  • 请将此答案标记为已接受,如果它解决了您的问题,即使您是自己编写的。这是向其他用户明确声明这是可接受的解决方案。
  • ...您意识到您无法将自己问题的答案标记为已接受 2 天,对吧?
  • 我没有意识到这一点。也找不到任何文档。如果你有链接,我将不胜感激。无论如何,如果是这样,请在几天内将其标记为已接受。 :)
  • 说实话,有没有文档,我不知道;我只知道,因为当您尝试在该时间限制结束之前接受答案时网站出错,目前我可以接受 22 小时。
【解决方案2】:

最好的方法可能是让 Chef 安装一个 init 脚本并让您的 init 守护进程处理所有 statsd 守护进程管理。这样您就可以使用 Chef 的 service 资源来管理实例。

StatsD 在 Debian 资源中包含一个 example init script,您可以使用或适应您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多