Как отслеживать сервис systemd через конечную точку http
У меня есть процесс, который я хотел бы контролировать шаблон консула, который в настоящее время управляется systemd. Я использую Pandora для мониторинга конечной точки HTTP для других моих процессов, однако консул-шаблон не имеет конечной точки HTTP.
Я подумал о нескольких подходах:
Одним из них является запуск HTTP-сервера с python, который будет запускаться при запуске процесса cons-template, проблема в том, что я не уверен, что могу гарантировать, что HTTP-сервер завершит работу при выходе из процесса. Также я не могу гарантировать, что сервер HTTP настолько прост, насколько он не будет зависать независимо.
Другое решение состоит в том, чтобы установить Monit, который является полнофункциональным сервисом мониторинга, и просто использовать его вместо systemd для управления процессами. Этот подход будет означать, что мне теперь нужно отслеживать Pandora AND Monit и соответственно настраивать оповещения. Я бы предпочел просто получить конечную точку HTTP, чтобы я мог отслеживать только с Pandora.
1 ответ
systemd
не имеет собственного HTTP-сервера, но система может запрашивать по сети через SSH. Вы найдете --host
вариант для systemctl
, Например, вы можете получить статус по сети в машиночитаемом формате, например:
systemctl --host user@example.com status consol-template
Ищите возвращаемые значения как:
ActiveState=active
SubState=running
Чтобы убедиться, что служба запущена и работает.
Вы можете использовать задание cron, чтобы регулярно отправлять или извлекать эти данные о состоянии в место, к которому Pandora может получить доступ, или посмотреть, есть ли способ для Pandora проверить вывод команды, выполняемой через SSH.
Если у машины, на которой находится Pandora, нет systemctl
установлен, вы все еще можете использовать тот же общий подход для удаленного выполнения команды состояния через ssh:
ssh user@example.com systemctl status consol-template