Monitとは
統合監視デーモンで、設定の閾値以上でメール通知や自動復旧等や監視を実施することができます。
・httpレスポンス、プロセス、ポートの監視 例)Apache、MySQL、SSL、Postfix、fluentd
・CPU、メモリ、ロードアベレージ、ディスク容量等
#1.初期設定(新規でサーバーに導入する場合)
①EPEL rpmパッケージをインストールして有効にする
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
②monitをインストール
$ sudo yum -y install monit
③関連ファイルがあるか確認
$ rpm -ql monit
/etc/logrotate.d/monit
/etc/monit.d
/etc/monit.d/logging
/etc/monitrc
/usr/bin/monit
/usr/lib/systemd/system/monit.service
/usr/share/doc/monit-5.14
/usr/share/doc/monit-5.14/COPYING
/usr/share/doc/monit-5.14/README
/usr/share/man/man1/monit.1.gz
/var/log/monit.log
④設定ファイルのバックアップ
$ sudo cp -av /etc/monitrc{,.bk}
`/etc/monitrc' -> `/etc/monitrc.bak'
// -a 権限を出来る限りそのままにしてコピー
// -v コピー前にファイル名を表示する
// {,.bk} ブレース展開と言われる手法で.bkというファイル名でコピー
⑤設定ファイルの編集
$ vi /etc/monitrc
…
set daemon 30 // デフォルトチェック間隔は30secなので任意に変更
…
include /etc/monit.d/*.conf // .confだけを読み込むよう編集
⑤' monitはWWWサーバの機能も持っており、HTTP 経由で設定を参照したり、 サービスの制御を行ったりすることができる
set httpd port 2812 and # Webインターフェースポート(Default:2812)
allow localhost # アクセスを許可するIP(localhost)
allow XXX.XXX.XXX.XXX/XX # アクセスを許可するIP(任意のIP)
allow admin:monit # 管理コンソールのuser='admin' password='monit'
#以下SSLを使わないためコメントアウト
#with ssl { # enable SSL/TLS and set path to server certificate
# pemfile: /etc/ssl/certs/monit.pem
#}
⑥設定ファイルの作成
$ vi /etc/monit.d/XXXX.conf // 設定ごとに新規作成
$ mv /etc/monit.d/logging /etc/monit.d/logging.conf // ログ設定ファイルの名前変更
#2.共通設定ファイル
以下がメイン設定ファイルです。
/etc/monitrc
バックアップ:/etc/monitrc.bk
includeして、以下の個別設定ファイルを読み込んでいます。
/etc/monit.d/*.conf
#3.個別設定ファイル(例)
/etc/monit.d/test.conf
// 監視プロセス設定
check process test matching "test"
// 起動設定
start program "/usr/local/test/bin/start_test.sh"
// 停止設定
stop program "/usr/local/test/bin/stop_test.sh"
// プロセスがない場合、リスタート
if does not exist then restart
// slackに通知 ※
if does not exist then exec "/usr/local/test/bin/slacknotice.sh"
// 5回の監視中に5回リスタートして起きなければやめる
if 5 restarts within 5 cycles then unmonitor
※実行するシェルに実行権限付与することを忘れないこと
$ chmod +x
※slack通知参考サイト: https://cloudpack.media/10085
monitのベストプラクティスとして以下のcronを仕込むことが推奨されている。
echo "0 */1 * * * /usr/bin/monit monitor all" >> /var/spool/cron/root
4.実行コマンド
起動コマンド
$ systemctl start monit
OS起動時に自動起動
$ systemctl enable monit
停止コマンド
$ systemctl stop monit
ステータス
$ monit status
設定を変更した場合のリロード (重要!!)
$ monit reload
設定を変更した場合のテストコマンド
$ monit -t
監視状況を知る
$ monit summary
monitがさぼってる場合(Not monitoredのとき)
$ monit monitor all
コマンド一覧
$ monit -h
5.管理画面(Monit Service Manager)
IP:monitのサーバーのIP
PORT:⑤'で設定したPORT
http://XXX.XXX.XXX.XXX:2812/
#6.有償のM/Monitについて
以下のサイトが詳しく記載されていました。
https://inokara.hateblo.jp/category/monit