PR

Linuxでサービスが落ちたら自動で起動させるスクリプト実践ガイド

サービスが停止していると、業務システムの障害やユーザー影響につながります。特に監視ツール自体がダウンすると、そもそも監視ができなくなります。このような時は簡易スクリプトでの死活監視が便利です。本記事では、Linux上で特定サービスを定期的に監視し、落ちていたら自動起動するスクリプトを紹介します。

スポンサーリンク

スクリプトの概要

  • プロセスが存在するかをpsコマンドで確認(ここではnagiosのプロセスを想定)
  • ログ出力で監視の結果を確認できるようにする
  • 停止していた場合は systemctl start <サービス名> を実行
  • 停止していた場合はメールでも通知を行う
  • スクリプトは /usr/local/sbin/ など任意の場所へ配置
  • cronで定期的に実行

という内容でスクリプトを作成します。

スクリプトの内容

作成したスクリプト(nagios-service-sheck.sh)の内容は以下になります。

#!/bin/bash

result=$(ps -ef | grep ^nagios 2>/dev/null)

if  [ -z "$result" ]; then
    logger "nagiosのサービスがダウンしていますので、起動します。"
    systemctl start nagios
    echo "nagios is down!" | mail -s "nagios is down!" admin@dassyi.com
else
    logger "nagiosのサービスチェック OK"
#    echo "$result"
fi

cronで定期的に実行

上記スクリプトを/usr/local/sbin/ など任意の場所へ配置し、パーミッションを700にしておきます。

その上で、cronで定期的に実行するようにセットします。以下は毎時30分にチェックする設定例です。

動作確認

動作確認を実施します。まずは定期的に(上記の例の場合は毎時30分に)動作しているかを確認します。loggerでシスログ(/var/log/messages)に出力されているかを確認します。

問題がないようでしたら、次はわざとnagiosのサービスをダウンさせて、30分にサービスが起動しているかを確認します。またメールが届いていることも確認します。

ここまで確認ができましたら、動作としましては問題ないと思います。

今回はここまでです。最後までお読みいただきありがとうございました。