当 svcadm 重新启动已终止的服务时如何收到通知

当 svcadm 重新启动已终止的服务时如何收到通知

我正在使用 svcadm 来保持我的 node.js 服务器在 Illumos 上运行,如果 svcadm 由于崩溃而重新启动服务器,是否有办法收到通知?特别是如果该进程自行关闭而不是在我重新启动它时。

我想要运行一个脚本,以便我可以发送电子邮件或发出警报。

答案1

在 Solaris 11 上,您可以让 SMF 守护程序通知您服务状态更改:

但我不确定 illumos 是否具有该功能,因为它是 SMF 后来添加的。

在任何带有 SMF 的版本中,如果您使用脚本而不是直接从 SMF 清单中直接调用程序,那么您始终可以在 SMF 服务的启动方法中放置发送电子邮件/通知的命令。

答案2

每个服务都有自己的日志。您可以通过执行以下操作来检查您的服务的日志是什么,例如我正在使用 ssh:

#svcs -xv ssh
svc:/network/ssh:default (SSH server)
 State: online since Tue Nov 27 11:38:34 2012
   See: man -M /usr/share/man -s 1M sshd
   See: /var/svc/log/network-ssh:default.log
Impact: None.

现在您可以拥有自己的脚本(假设在 crontab 中)来检查日志文件上的更改。第二种方式,我想这实际上是最好的一种,您可以更改启动脚本,无论何时启动,它都会自动向您发送一封电子邮件。

要找出启动脚本所在的位置:

svccfg -s svc:/network/ssh
listprop
...
start/exec                        astring  "/lib/svc/method/sshd start
...

现在只需编辑脚本,在启动之前您可以放置​​自动邮件通知

vi /lib/svc/method/sshd    

搜索函数 start 并添加如下内容:

echo "Service ssh has been restarted!" |mailx -s "SSHD" user@mailbox

现在只需更新以匹配您的环境和服务。不漂亮但有效。

相关内容