加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Systemd http健康检查

发布时间:2020-12-14 01:05:50 所属栏目:Linux 来源:网络整理
导读:我在Redhat 7.1上有一个服务,我使用systemctl启动,停止,重启和状态来控制.有一次systemctl状态返回活动,但是服务“后面”的应用程序响应了不同于200的http代码. 我知道我可以使用Monit或Nagios来检查并执行systemctl重启 – 但我想知道在使用systemd时是否存
我在Redhat 7.1上有一个服务,我使用systemctl启动,停止,重启和状态来控制.有一次systemctl状态返回活动,但是服务“后面”的应用程序响应了不同于200的http代码.

我知道我可以使用Monit或Nagios来检查并执行systemctl重启 – 但我想知道在使用systemd时是否存在默认值,因此我不需要安装其他工具.

我的首选解决方案是,如果http返回代码完全不同于200而不使用systemd本身以外的其他工具,则重新启动我的服务 – (并且可能有可能通知Hipchat房间或发送电子邮件……)

我试过谷歌搜索主题 – 没有运气.请帮忙 :-)

解决方法

简答

systemd有一个本机(基于套接字)的healthcheck方法,但它不是基于HTTP的.但是,您可以编写一个通过HTTP轮询状态并将其转发到本机机制的填充程序.

答案很长

systemd世界中的正确方法是使用sd_notify套接字机制在应用程序完全可用时通知init系统.对您的服务使用Type = notify以启用此功能.

您可以使用sd_notify()调用直接写入此套接字,或者您可以检查NOTIFY_SOCKET环境变量以获取名称,并在应用程序返回200秒时让您自己的代码将READY = 1写入该套接字.

如果要将其关闭到一个单独的进程,该进程通过HTTP轮询您的进程然后写入套接字,您可以这样做 – 确保NotifyAccess设置正确(默认情况下,只允许服务的主进程写入套接字).

因为您有兴趣检测应用程序在完全初始化后失败并触发重启的情况,所以sd_notify套接字在这种情况下也是合适的:

发送WATCHDOG_USEC = …设置成功测试之间允许的时间量,然后每当您成功进行自检时,WATCHDOG = 1;只要在配置的时间段内没有看到成功的测试,您的服务就会重新启动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读