Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Monitでのサーバー監視等の自動化

More than 1 year has passed since last update.

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

https://hogem.hatenablog.com/entry/20090723/1248358467

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away