サーバー監視 · 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 monitMonitのデフォルトの設定ファイルは/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/monitrcset 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.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pem最後に、Monitを起動できます:
systemctl restart monit
(メイン画面)

(Apacheステータスページ)
/etc/monit.d/monitrcの設定に応じて、Monitはサービスが失敗した場合に再起動し、プロセスIDが変更された場合などに通知メールを送信します。
6 リンク
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。