svcadmが終了したサービスを再起動したときに通知を受け取る方法

svcadmが終了したサービスを再起動したときに通知を受け取る方法

私はIllumosでnode.jsサーバーを実行し続けるためにsvcadmを使用しています。クラッシュのためにsvcadmがサーバーを再起動した場合に通知を受け取る方法はありますか?特に、プロセスが再起動されたときに終了せず、それ自体で終了する場合は、さらにそうです。

電子メールを送信したり警告を送信したりできるようにスクリプトを実行したいと思います。

答え1

Solaris 11 では、SMF デーモンにサービス状態の変更を通知することができます。

しかし、後でSMFによって追加されたため、Illumosにその機能があるかどうかはわかりません。

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にあると仮定)を持つことができます。 2番目の方法は、実際にこれが最善の方法だと思います。起動スクリプトを変更でき、起動するたびに自動的に電子メールを送信します。

起動スクリプトがある場所を見つけるには、次のようにします。

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

スクリプトを編集すると、実行する前に自動電子メール通知を送信できるようになります。

vi /lib/svc/method/sshd    

function startを検索して以下を追加します。

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

今、あなたの環境やサービスに合わせて更新してください。きれいではありませんが効果的です。

関連情報