Пытаюсь запустить statsD через повара

Я пытаюсь запустить statsD в Ubuntu, но у меня возникают проблемы.

Если я запускаю его, он работает, но блокирует продолжение работы шеф-повара, но он работает и отображается в графите.

Однако, если я запускаю его так (или использую другие методы, чтобы запустить его в фоновом режиме):

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

он не блокирует шеф-повара, но в графите ничего не отображается, однако я знаю, что он все еще работает, потому что

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.


person Thermatix    schedule 27.04.2015    source источник
comment
Вы смотрели эту кулинарную книгу, в ней есть скрипты upstart для запуска statsd   -  person Tensibai    schedule 27.04.2015


Ответы (2)


Хорошо, мне удалось создать команду 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, когда мне нужно перезапустить.

person Thermatix    schedule 27.04.2015
comment
Пожалуйста, отметьте этот ответ как принятый, если он решил вашу проблему, даже если вы написали его сами. Это служит четким заявлением для других пользователей, что это принятое решение. - person cassianoleal; 27.04.2015
comment
... вы понимаете, что не можете пометить ответ на свой вопрос как принятый в течение 2 дней, верно? - person Thermatix; 27.04.2015
comment
Я не знал об этом. Документации на это тоже не нашел. Если есть ссылка, буду признателен. В любом случае, если это так, пожалуйста, отметьте это как принятое через пару дней. :) - person cassianoleal; 28.04.2015
comment
Честно говоря, задокументировано это или нет, я не знаю; Я только знаю, что из-за ошибок веб-сайта, когда вы пытаетесь принять ответ до истечения этого срока, на данный момент проходит 22 часа, прежде чем я могу принять. - person Thermatix; 28.04.2015

Лучший способ сделать это, вероятно, состоит в том, чтобы Chef установил сценарий инициализации и позволил вашему демону инициализации взять на себя все управление демоном statsd. Таким образом, вы можете использовать ресурс Chef service для управления экземпляром.

StatsD включает пример сценария инициализации в ресурсах Debian, который вы можете использовать или адаптировать к вашим потребностям.

person mrtazz    schedule 28.04.2015