【Webmin】LINE Notifyへサービスがダウンしたら通知する

Webminには、サービスを監視しダウンしたらメール通知やコマンドを実行する機能がデフォルトで有効になります。 その機能を利用し、システムがダウンした際にLINE Notifyへ通知するようにします。

環境

  • CentOS7.4
  • Webmin

Line Notifyへ通知するスクリプト作成

sshログイン時に通知する際のスクリプトをそのまま流用します。
※ 前もってLine NotifyのAccess Tokenを取得しておいてください。取得方法はこちら。

スクリプトの設置場所は以下とします。

  • ファイル名
    • status-notify
  • 設置場所
    • /home/hoge/

status-notify

#!/bin/sh

# Set Line Notify Token.
ACCESS_TOKEN="Line Notifyで取得したトークンを設定"

# Send Message.
MESSAGE="HOST=${HOSTNAME}: ${1} Service is down."

if [ $# -ge 2 ]; then
    MESSAGE="${MESSAGE} Command '${2}' execute."
    # Execute Command.
    eval ${2}
fi

DATETIME=$(date +'%Y-%m-%d %H:%M:%S')

# Line Notify Send.
curl -sS -X POST -H "Authorization: Bearer ${ACCESS_TOKEN}" -F "message=${DATETIME} ${MESSAGE}" https://notify
-api.line.me/api/notify

実行権限を付加します

chmod 755 /home/hoge/status-notify

通知スクリプトの説明

スクリプトは2つの引数を受け取って処理します。第1引数は必須です。

  • 第1引数: サービス名
  • 第2引数: 実行するコマンド(任意)
    ※サービス名、コマンドにスペースを含む場合はシングルクォーテーションで括ってください。
/home/hoge/status-notify サービス名 コマンド

postfixがダウンしたらLine通知し、起動コマンドを実行する

/home/hoge/status-notify Postfix 'systemctl start postfix'

以下のようなメッセージが通知されれば成功です。

2018-08-15 02:00:00 HOST={ホスト名} {サービス名} Service is down. Command '{コマンド}' execute. 

通知だけが必要であれば第2引数は省略してください

/home/hoge/status-notify Postfix

Webminのシステムおよびサービスのステータスの設定

それではWebminの設定を行います。 ※ 以下の作業は監視したいサービス毎に行う必要があります。

  • Webmin – その他 – システムおよびサービスのステータス

デフォルトでApacheやPostfix等、基本的なサービスは設定されていますのでここでは、Postfixを例に設定します。

  • メイン画面 システムおよびサービスのステータス

  • postfixの設定画面 実行するコマンドにスクリプトの実行処理を設定します。 postfixモニタの設定

  • モニタの設定 スケジュールされた検査を有効にしますか? は「はい」を選択してください。また、メール通知が必要であれば追加で設定してください。
    モニタの設定

設定は以上です。
サービスを手動で停止するなどしてテストしておきましょう!

まとめ

サーバ運用でモニタリングは必須です。 ZabbiX等の運用管理ツールを利用するのもいいですが、個人用のサーバであれば必要十分です。 何よりも簡単に導入できますしね。