サーバー監視 · 5 min read · Jan 06, 2026
Ubuntu 16.04 LTS (Xenial Xerus) における Munin と Monit を使用したサーバー監視 - ページ 2
6 Monit のインストールと設定
Monit をインストールするには、次のようにします:
apt-get -y install monit次に、/etc/monit/monitrc を編集する必要があります。デフォルトの /etc/monit/monitrc には多くの例が含まれており、http://mmonit.com/monit/documentation/ でさらに多くの設定例を見つけることができます。しかし、私の場合は proftpd、sshd、mysql、apache、postfix を監視したいので、ポート 2812 で Monit の Web インターフェースを有効にしたいと思います。ユーザー名 admin とパスワード howtoforge で Web インターフェースにログインしたいので、Monit が root@localhost にメールアラートを送信するようにしたいと思います。したがって、私のファイルは次のようになります(他のデーモンの例も設定に追加したので、必要に応じてファイルを調整できます):
cp /etc/monit/monitrc /etc/monit/monitrc_orig
cat /dev/null > /etc/monit/monitrc
nano /etc/monit/monitrcset daemon 60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: [email protected] }
set alert root@localhost
set httpd port 2812 and
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow admin:howtoforge
check process sshd with pidfile /var/run/sshd.pid
start program "/usr/sbin/service ssh start"
stop program "/usr/sbin/service ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
check process apache with pidfile /var/run/apache2/apache2.pid
group www
start program = "/usr/sbin/service apache2 start"
stop program = "/usr/sbin/service apache2 stop"
if failed host localhost port 80 protocol http
and request "/monit/token" then restart
if cpu is greater than 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 500 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if 3 restarts within 5 cycles then timeout
#check process mysql with pidfile /var/run/mysqld/mysqld.pid
# group database
# start program = "/usr/sbin/service mysql start"
# stop program = "/usr/sbin/service mysql stop"
# if failed host 127.0.0.1 port 3306 then restart
# if 5 restarts within 5 cycles then timeout
#check process proftpd with pidfile /var/run/proftpd.pid
# start program = "/usr/sbin/service proftpd start"
# stop program = "/usr/sbin/service proftpd stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process postfix with pidfile /var/spool/postfix/pid/master.pid
# group mail
# start program = "/usr/sbin/service postfix start"
# stop program = "/usr/sbin/service postfix stop"
# if failed port 25 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process nginx with pidfile /var/run/nginx.pid
# start program = "/usr/sbin/service nginx start"
# stop program = "/usr/sbin/service nginx stop"
# if failed host 127.0.0.1 port 80 then restart
#
#check process memcached with pidfile /var/run/memcached.pid
# start program = "/usr/sbin/service memcached start"
# stop program = "/usr/sbin/service memcached stop"
# if failed host 127.0.0.1 port 11211 then restart
#
#check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
# start program = "/usr/sbin/service pure-ftpd-mysql start"
# stop program = "/usr/sbin/service pure-ftpd-mysql stop"
# if failed port 21 protocol ftp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process named with pidfile /var/run/named/named.pid
# start program = "/usr/sbin/service bind9 start"
# stop program = "/usr/sbin/service bind9 stop"
# if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
# if failed host 127.0.0.1 port 53 type udp protocol dns then restart
# if 5 restarts within 5 cycles then timeout
#
#check process ntpd with pidfile /var/run/ntpd.pid
# start program = "/usr/sbin/service ntp start"
# stop program = "/usr/sbin/service ntp stop"
# if failed host 127.0.0.1 port 123 type udp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process mailman with pidfile /var/run/mailman/mailman.pid
# group mail
# start program = "/usr/sbin/service mailman start"
# stop program = "/usr/sbin/service mailman stop"
#
#check process amavisd with pidfile /var/run/amavis/amavisd.pid
# group mail
# start program = "/usr/sbin/service amavis start"
# stop program = "/usr/sbin/service amavis stop"
# if failed port 10024 protocol smtp then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap with pidfile /var/run/courier/imapd.pid
# group mail
# start program = "/usr/sbin/service courier-imap start"
# stop program = "/usr/sbin/service courier-imap stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-imap-ssl start"
# stop program = "/usr/sbin/service courier-imap-ssl stop"
# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3 with pidfile /var/run/courier/pop3d.pid
# group mail
# start program = "/usr/sbin/service courier-pop start"
# stop program = "/usr/sbin/service courier-pop stop"
# if failed host localhost port 110 type tcp protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid
# group mail
# start program = "/usr/sbin/service courier-pop-ssl start"
# stop program = "/usr/sbin/service courier-pop-ssl stop"
# if failed host localhost port 995 type tcpssl sslauto protocol pop then restart
# if 5 restarts within 5 cycles then timeout
#
#check process dovecot with pidfile /var/run/dovecot/master.pid
# group mail
# start program = "/usr/sbin/service dovecot start"
# stop program = "/usr/sbin/service dovecot stop"
# if failed host localhost port 143 type tcp protocol imap then restart
# if 5 restarts within 5 cycles then timeout設定ファイルはかなり自己説明的です。オプションについて不明な点がある場合は、Monit のドキュメントを参照してください: http://mmonit.com/monit/documentation/monit.html
Monit 設定の apache 部分には次のような記述があります:
if failed host localhost port 80 protocol http
and request "/monit/token" then restartこれは、Monit がポート 80 で localhost に接続し、/monit/token というファイルにアクセスしようとすることを意味します。このファイルは /var/www/html/monit/token であり、私たちのウェブサイトのドキュメントルートは /var/www/html です。Monit が成功しない場合、Apache が実行されていないことを意味し、Monit はそれを再起動します。次に、/var/www/html/monit/token というファイルを作成し、そこにランダムな文字列を書き込みます:
mkdir /var/www/html/monit
echo "hello" > /var/www/html/monit/token次に、SSL 暗号化された Monit Web インターフェースに必要な pem 証明書 (/var/certs/monit.pem) を作成します:
mkdir /var/certs
cd /var/certs証明書を作成するために OpenSSL 設定ファイルが必要です。次のようになります:
nano /var/certs/monit.cnf# create RSA certs - Server
RANDFILE = ./openssl.rnd
[ req ]
default_bits = 2048
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = MO
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Monitoria
localityName = Locality Name (eg, city)
localityName_default = Monittown
organizationName = Organization Name (eg, company)
organizationName_default = Monit Inc.
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Dept. of Monitoring Technologies
commonName = Common Name (FQDN of your server)
commonName_default = server.monit.mo
emailAddress = Email Address
emailAddress_default = [email protected]
[ cert_type ]
nsCertType = server次のようにして証明書を作成します:
openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pemopenssl gendh 1024 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 600 /var/certs/monit.pem最後に、Monit を起動できます:
service monit restartブラウザを https://www.example.com:2812/ に向けて、ポート 2812 がファイアウォールでブロックされていないことを確認し、admin と howtoforge でログインすると、Monit の Web インターフェースが表示されるはずです。次のようになります:

(メイン画面)

(システムステータスページ)
/etc/monit/monitrc の設定に応じて、Monit はサービスが失敗した場合に再起動し、プロセス ID が変更された場合などに通知メールを送信します。
シェルで Monit のステータスを取得するには、”monit status” コマンドを実行します:
monit statusこのコマンドは、監視されているすべてのサービスのステータスを表示します。

7 ISPConfig での Monit の設定
ISPConfig サーバーコントロールパネルは、Monitor モジュール内で Monit データを表示できます。この機能を ISPConfig で有効にするには、管理者 (admin) ユーザーとして ISPConfig にログインし、システム > サーバー設定に移動し、以下のように Monit の URL、ユーザー名、パスワードを入力します。

8 リンク
- munin: http://munin-monitoring.org/
- monit: http://mmonit.com/monit/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。