【问题标题】:How to monitor a systemd service via http endpoint如何通过 http 端点监控 systemd 服务
【发布时间】:2017-01-17 05:55:23
【问题描述】:
我有一个进程我想监控 consul-template,它是当前由 systemd 管理的进程。我使用 Pandora 来监控我的其他进程的 HTTP 端点,但是 consul-template 没有 HTTP 端点。
我想到了几种方法:
一种是用python启动一个HTTP服务器,它会在consul-template进程运行时运行,问题是我不确定我能保证进程退出时HTTP服务器会退出。我也不能保证 HTTP 服务器这么简单不会独立崩溃。
另一种解决方案是安装 Monit,它是一个功能齐全的监控服务,并且只使用它而不是 systemd 来进行进程管理。这种方法意味着我现在必须监控 Pandora AND Monit 并相应地设置警报,我宁愿只设置一个 HTTP 端点,这样我就只能从 Pandora 进行监控。
【问题讨论】:
标签:
monitoring
systemd
monit
consul-template
【解决方案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