Я пытаюсь настроить Graphite на моем сервере. Я не могу запустить демон Carbon Cache без проблем sudo /opt/graphite/bin/carbon-cache.py start
, но я изо всех сил пытаюсь запустить его как модуль Systemd.
Вот что у меня в служебном файле graphite.service
:
[Unit]
Description=Carbon for Graphite
[Service]
ExecStart=/opt/graphite/bin/carbon-cache.py start
[Install]
WantedBy=multi-user.target
Но когда я запускаю устройство, я получаю следующий статус:
$ systemctl status graphite.service
* graphite.service - Carbon for Graphite
Loaded: loaded (/etc/systemd/system/graphite.service; enabled)
Active: inactive (dead) since Fri 2014-06-13 18:44:11 UTC; 2s ago
Process: 4525 ExecStart=/opt/graphite/bin/carbon-cache.py start (code=exited, status=0/SUCCESS)
Main PID: 4525 (code=exited, status=0/SUCCESS)
Jun 13 18:44:11 MEADOW systemd[1]: Started Carbon for Graphite.
Journalctl не дает больше информации.
Как мне интерпретировать и отлаживать модули со статусом «неактивен (мертв) ... (код = выход, статус = 0 / УСПЕХ)»? Я видел сбойные устройства раньше, но этот успешно загружен, но не работает, и я не знаю, что это значит.
Type=
вариант? Смотритеman systemd.service
для соответствующего типа.Type=forking
в[Service]
раздел.Ответы:
Согласно комментарию jasonwryan, хотя по умолчанию
Type=simple
работает для многих служебных файлов Systemd, он не работает, когда скриптExecStart
запускает другой процесс и завершает работу, как в случае с графитом carbon-cache.py. В этих случаях вам нужно явно указатьType=forking
в[Service]
разделе, чтобы Systemd знал, что нужно смотреть на порожденный процесс, а не на исходный.Как объяснено в
man systemd.service
:Графит-специфичный ответ
Хотя вышеперечисленное решило мою проблему с Systemd, я быстро столкнулся с проблемами, связанными с графитом (с Twisted), и в итоге вернулся к настройкам по умолчанию
Type
.Графит <0.9.12
В предыдущих версиях Graphite можно избежать разветвления только с помощью
--debug
опции:Графит> = 0.9.13
В этом запросе на
--no-daemon
выборку опция была объединена:источник