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

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

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

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

yum install monit

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

systemctl enable monit  
systemctl start monit

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

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

  • proftpd
  • sshd
  • mysql
  • apache
  • postfix

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

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

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

nano /etc/monit.d/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
  
# MySQLを監視
check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/usr/bin/systemctl start mysqld"
   stop program = "/usr/bin/systemctl stop mysqld"
   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は起動しません。つまり、monitにPostfixをチェックするように指示しても、システムに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 Webインターフェースに必要な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 = 国名(2文字コード)
countryName_default = MO

stateOrProvinceName             = 州または省の名前(フルネーム)
stateOrProvinceName_default     = Monitoria

localityName                    = 地域名(例:市)
localityName_default            = Monittown

organizationName                = 組織名(例:会社)
organizationName_default        = Monit Inc.

organizationalUnitName          = 組織単位名(例:セクション)
organizationalUnitName_default  = 監視技術部

commonName                      = コモンネーム(サーバーのFQDN)
commonName_default              = server.monit.mo

emailAddress                    = メールアドレス
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

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

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