サーバー監視 · 2 min read · Oct 17, 2025

CentOS 7.2でのMuninとMonitによるサーバー監視 - ページ 2

5 Monitのインストールと設定

次に、Monitをインストールします:

yum -y install monit

次に、Monitのシステム起動リンクを作成します:

systemctl enable monit  
systemctl start monit

Monitのデフォルトの設定ファイルは/etc/monitrcで、いくつかの設定例が見つかります(http://mmonit.com/wiki/Monit/ConfigurationExamplesでさらに多くの設定例が見つかります)すべてコメントアウトされていますが、Monitに/etc/monit.dディレクトリ内の設定ファイルも探すように指示します。

この場合、私は以下を監視します:

  • proftpd
  • sshd
  • MariaDB
  • apache
  • postfix

さらに、Monitのためにこれらの設定を構成します:

  • ポート2812でMonitのWebインターフェースを有効にします。
  • WebインターフェースにはHTTPの代わりにHTTPSを使用します。
  • Webインターフェースのためにパスワード保護されたログインを設定します。
  • Monitはroot@localhostにメールアラートを送信します。

まず、認証設定を構成します。ファイル/etc/monitrcを開きます。

nano /etc/monitrc

そして、次のセクションを見つけるまでスクロールします:

set httpd port 2812 and  
   use address localhost # localhostからの接続のみを受け入れる  
   allow localhost # localhostがサーバーに接続することを許可し  
   allow admin:monit # ユーザー'admin'とパスワード'monit'を要求  
   allow @monit # 'monit'グループのユーザーが接続することを許可(rw)  
   allow @users readonly # 'users'グループのユーザーが読み取り専用で接続することを許可

次の設定に置き換えます:

set httpd port 2812 and  
   use address 0.0.0.0  
   SSL ENABLE  
   PEMFILE /var/certs/monit.pem  
   allow admin:test

「test」という単語がパスワードですので、それを安全なパスワードに置き換えて、ユーザー名「admin」も簡単に推測できない名前に変更することをお勧めします。

次に、監視対象サービスの設定を追加します。/etc/monitrcを変更する代わりに、新しい設定ファイル/etc/monit.d/monitrcを作成します。

私のファイルは次のようになります:

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon
  
# このメールサーバーを通じてメールを送信  
set mailserver localhost
  
# アラートメールのFromアドレスを設定  
set mail-format { from: [email protected] }
  
# このアドレスにアラートを送信  
set alert root@localhost
  
# Proftpdサービスを監視  
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
   start program = "/usr/bin/systemctl start proftpd"
   stop program  = "/usr/bin/systemctl stop proftpd"
   if failed port 21 protocol ftp then restart
   if 5 restarts within 5 cycles then timeout
  
# SSHサービスを監視  
check process sshd with pidfile /var/run/sshd.pid
   start program  "/usr/bin/systemctl start sshd"
   stop program  "/usr/bin/systemctl stop sshd"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout
  
# MariaDBを監視  
check process mysql with pidfile /var/run/mariadb/mariadb.pid
   group database
   start program = "/usr/bin/systemctl start mariadb"
   stop program = "/usr/bin/systemctl stop mariadb"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout
  
# apacheウェブサーバーを監視  
check process apache with pidfile /var/run/httpd/httpd.pid
   group www
   start program = "/usr/bin/systemctl start httpd"
   stop program  = "/usr/bin/systemctl stop httpd"
   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
  
# postfixメールサーバーを監視  
check process postfix with pidfile /var/spool/postfix/pid/master.pid
   group mail
   start program = "/usr/bin/systemctl start postfix"
   stop  program = "/usr/bin/systemctl stop postfix"
   if failed port 25 protocol smtp then restart
   if 5 restarts within 5 cycles then timeout

(必ず、実際にサーバーに存在するプロセスのみをチェックしてください。そうしないと、monitは起動しません。つまり、Postfixをチェックするようにmonitに指示しても、システムにPostfixがインストールされていない場合、monitは起動しません。)

設定ファイルはかなり自己説明的です。オプションについて不明な点がある場合は、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というファイルを作成し、そこにランダムな文字列を書き込みます:

touch /var/www/html/monit_token

次に、SSL暗号化されたMonitウェブインターフェースに必要なSSL(pem)証明書(/var/certs/monit.pem)を作成します:

mkdir /var/certs  
cd /var/certs

証明書を作成するためにOpenSSL設定ファイルが必要です。次のようになります:

nano /var/certs/monit.cnf
# RSA証明書を作成 - サーバー

RANDFILE = ./openssl.rnd

[ req ]
default_bits = 1024
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.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

最後に、Monitを起動できます:

systemctl restart monit

今、ブラウザをhttps://www.example.com:2812/に向けてください(ポート2812がファイアウォールでブロックされていないことを確認してください)、adminとtestでログインすると、MonitのWebインターフェースが表示されるはずです。次のようになります:

Monitダッシュボード

(メイン画面)

Monit apacheステータスページ

(Apacheステータスページ)

/etc/monit.d/monitrcの設定に応じて、Monitはサービスが失敗した場合に再起動し、プロセスIDが変更された場合などに通知メールを送信します。

6 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。