Debian 10 (buster) - Monit でプロセス監視(ソースビルド)!
Updated:
Debian GNU/Linux 10 (buster) にプロセス監視ツール monit をインストールする方法についての記録です。
以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。
(当然ながら、興味がなければスルーしてください)
0. 前提条件
- Debian GNU/Linux 10 (buster) での作業を想定。
- root ユーザでの作業を想定。
- Debian 9 (stretch) にはパッケージが存在したが、 10 (buster) には存在しないため、ソースをビルドしてインストール必要がある。
- 当記事執筆時点で最新の 5.26.0 をインストールする。
1. アーカイブファイルのダウンロード&展開
# cd /usr/local/src
# wget https://mmonit.com/monit/dist/monit-5.26.0.tar.gz
# tar zxvf monit-5.26.0.tar.gz
2. ビルド&インストール
# cd monit-5.26.0
# ./configure
# make
# make install
3. インストールの確認
# monit -V
This is Monit version 5.26.0
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2019 Tildeslash Ltd. All Rights Reserved.
4. 起動ファイルの作成
起動ファイル(Systemd)を作成する。
File: /lib/systemd/system/monit.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# This file is systemd template for monit service. To
# register monit with systemd, place the monit.service file
# to the /lib/systemd/system/ directory and then start it
# using systemctl (see bellow).
#
# Enable monit to start on boot:
# systemctl enable monit.service
#
# Start monit immediately:
# systemctl start monit.service
#
# Stop monit:
# systemctl stop monit.service
#
# Status:
# systemctl status monit.service
[Unit]
Description=Pro-active monitoring utility for unix systems
After=network.target
Documentation=man:monit(1) https://mmonit.com/wiki/Monit/HowTo
[Service]
Type=simple
KillMode=process
ExecStart=/usr/local/bin/monit -I
ExecStop=/usr/local/bin/monit quit
ExecReload=/usr/local/bin/monit reload
Restart = on-abnormal
StandardOutput=null
[Install]
WantedBy=multi-user.target
5. 設定ファイル作成
まず、ソースディレクトリ内の既存の設定ファイルを複製。(設定ファイルは ~/.monitrc
, /etc/monitrc
, /usr/local/etc/monitrc
, /usr/local/etc/monitrc
, ./monitrc
のいずれかで行なう)
当方は /etc/monitrc
とした。
# cp monitrc /etc/
そして、編集。(以下は当方の例。他はデフォルト)
File: /etc/monitrc
- メールサーバは複数設定可能。
- メール通知先も複数設定可能。
set alert root@localhost only on { xxxx }
などとすれば、xxxx アクション発生時のみメール通知するようにする。set alert root@localhost but not on { xxxx }
などとすれば、xxxx 以外のアクション発生時のみメール通知するようにする。- その他の設定等については、 “monit.conf” 内のコメントや公式ドキュメントを参照のこと。
6. アラート機能の設定
以下は MySQL サーバを監視する例。(パスは環境に合わせて適宜置き換えること)
File: /etc/monit.d/mysqld
1
2
3
4
5
6
7
8
9
10
11
12
13
check process mysql with pidfile /var/run/mysqld/mysqld.pid
every 1 cycle
start program = "/etc/rc.d/init.d/mysqld start"
stop program = "/etc/rc.d/init.d/mysqld stop"
if failed
host localhost port 3306 protocol mysql
with timeout 15 seconds for 3 times within 4 cycles
then restart$
if failed
unixsocket /var/run/mysqld/mysqld.sock protocol mysql
for 3 times within 4 cycles
then restart$
if 5 restarts within 5 cycles then timeout
mysqld.pid
ファイルを1サイクル(今回の設定では 120秒)毎に監視し、存在しなければ MySQL サーバを再起動する。- TCP ポート
3306
への接続が4回中3回15秒のタイムアウトで失敗する場合は、 MySQL サーバを再起動する。 - Unix ソケットへの接続が4回中3回失敗する場合は、 MySQL サーバを再起動する。
- 5回中5回再起動となる場合は、タイムアウトする。
group xxxx
としてグループ単位で監視の制御をすることも可能。- CPU 使用量やメモリ使用量等を監視することも可能。
PID ファイルの存在を監視するのではなく、プロセス自体の存在を監視したければ、1行目を以下のようにする。(以下は、プロセス名に hoge
を含むプロセスを監視する例で、正規表現で指定する)
File: /etc/monit.d/hoge
7. 構文チェック
予め設定ファイルの構文をチェックすることができる。
# monit -t
Control file syntax OK
8. monit の起動
# systemctl start monit
9. 自動起動の設定
# systemctl enable monit
Created symlink /etc/systemd/system/multi-user.target.wants/monit.service→ /lib/systemd/system/monit.service.
# systemctl is-enabled monit
enabled
10. 監視状況の確認
# monit status
Monit 5.26.0 uptime: 4m
System 'noah'
status OK
monitoring status Monitored
monitoring mode active
on reboot start
load average [0.04] [0.16] [0.34]
cpu 0.0%us 0.1%sy 1.1%wa
memory usage 1.2 GB [60.7%]
swap usage 12.8 MB [0.3%]
uptime 54m
boot time Sun, 29 Sep 2019 10:24:29
data collected Sun, 29 Sep 2019 11:19:12
monit summary
だとstatus
だけを確認できる。- アラートの設定をしていれば、アラートの状況も出力される。
11. 個別監視の停止・起動
個別に監視を停止・起動するには以下のようにする。
# monit stop xxxx
# monit start xxxx
12. グループ単位での監視の停止・起動
個別の設定ファイル内で group xxxx
のように記述していれば、xxxx グループの単位で監視を停止・起動することができる。
# monit -g xxxx stop
# monit -g xxxx start
13. 参考サイト
- Easy, proactive monitoring of processes, programs, files, directories, filesystems and hosts - Monit
インストールや Systemd の設定は以下。
以上。
Comments