この記事では、muninとmonitを使用してFedora7サーバーを監視する方法について説明します。 muninは、多くの構成を行わなくても、サーバーのほぼすべての側面(負荷平均、メモリ使用量、CPU使用率、MySQLスループット、eth0トラフィックなど)について気の利いた小さなグラフィックを生成しますが、monitはApache、MySQL、Postfixなどのサービスの可用性をチェックします。サービスが期待どおりに動作していないことが検出された場合の再起動などの適切なアクション。 2つの組み合わせにより、完全な監視が可能になります。現在または今後の問題を認識できるグラフィック(「すぐに大きなサーバーが必要、負荷平均が急速に増加しています」など)と、監視対象サービスの可用性を確保するウォッチドッグです。 。
muninを使用すると複数のサーバーを監視できますが、ここでは、それがインストールされているシステムの監視についてのみ説明します。
このチュートリアルはFedora7用に書かれていますが、構成はほとんど変更を加えずに他のディストリビューションにも適用されるはずです。
まず、このようなシステムを構築する方法はこれだけではありません。この目標を達成する方法はたくさんありますが、これが私のやり方です。これがあなたのために働くという保証はありません!
1予備メモ
システムのホスト名はserver1.example.comであり、ドキュメントルート/var/www/www.example.com/webを含むWebサイトwww.example.comがあります。
2muninのインストールと構成
muninをFedora7にインストールするには、次のようにします。
yum install munin munin-node
次に、muninのシステム起動リンクを作成して起動します:
chkconfig --levels 235 munin-node on
/etc/init.d/munin-node start
次に、munin構成ファイル/etc/munin/munin.confを編集する必要があります。 muninがその出力をディレクトリ/var/www/www.example.com/web/monitoringに配置するようにしたいので、htmldirの値を変更し、localhostの代わりにserver1.example.comという名前を使用するようにします。 HTML出力のlocaldomainであるため、localhost.localdomainをserver1.example.comに置き換えます。コメントがない場合、変更されたファイルは次のようになります。
vi /etc/munin/munin.conf
[...] dbdir /var/lib/munin htmldir /var/www/www.example.com/web/monitoring logdir /var/log/munin rundir /var/run/munin # Where to look for the HTML templates tmpldir /etc/munin/templates [...] # a simple host tree [server1.example.com] address 127.0.0.1 use_node_name yes [...] |
次に、ディレクトリ/var/www/www.example.com/web/monitoringを作成し、その所有権をユーザーとグループmuninに変更します。そうしないと、muninはその出力をそのディレクトリに配置できません。次に、muninを再起動します:
mkdir -p /var/www/www.example.com/web/monitoring
chown munin:munin /var/www/www.example.com/web/monitoring
/etc/init.d/munin-node restart
muninが最初の出力を生成できるように数分待ってから、ブラウザでhttp://www.example.com/monitoring/にアクセスすると、最初の統計が表示されます。数日後、これは次のようになります。
(これは、muninが生成する多くのグラフィックのほんの一部です...)
3パスワードで保護するmunin出力ディレクトリ(オプション)
サーバーに関する小さな統計情報をすべての人に表示させたい場合を除いて、ディレクトリ/var/www/www.example.com/web/monitoringをパスワードで保護することをお勧めします。
これを行うには、/ var / www / www.example.com / web/monitoringに.htaccessファイルを作成します。
vi /var/www/www.example.com/web/monitoring/.htaccess
AuthType Basic AuthName "Members Only" AuthUserFile /var/www/www.example.com/.htpasswd <limit GET PUT POST> require valid-user </limit> |
次に、パスワードファイル/var/www/www.example.com/.htpasswdを作成する必要があります。ユーザー名adminでログインしたいので、これを行います:
htpasswd -c /var/www/www.example.com/.htpasswd admin
管理者のパスワードを入力すれば完了です!
4monitのインストールと構成
monitは、公式のFedora 7リポジトリからは入手できませんが、RPMforgeリポジトリからは入手できます(手順については、http://dag.wieers.com/rpm/FAQ.php#B2を参照してください)。 Fedora7でも機能するRHEL5用のRPMforgeパッケージをインストールします:
rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
その後、monitをインストールします:
yum install monit
次に、monitのシステム起動リンクを作成します:
chkconfig --levels 235 monit on
monitのデフォルトの構成ファイルは/etc/monit.confで、すべてコメントアウトされているいくつかの構成例(http://www.tildeslash.com/monit/doc/examples.phpで他の構成例を見つけることができます)を見つけることができます。ただし、monitはディレクトリ/etc/monit.dで構成ファイルも検索するように指示されているため、/ etc / monit.confを変更する代わりに、新しい構成ファイル/etc/monit.d/monitrcを作成します。私の場合、proftpd、sshd、mysql、apache、postfixを監視したい、ポート2812でmonit Webインターフェイスを有効にしたい、https Webインターフェイスが必要、ログに記録したい
vi /etc/monit.d/monitrc
set daemon 60 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: [email protected] } set alert [email protected] set httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin:test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/sshd start" stop program "/etc/init.d/sshd stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed host www.example.com 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 postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout |
(サーバーに実際に存在するプロセスのみをチェックするようにしてください。そうしないと、monitが起動しません。つまり、monitにPostfixをチェックするように指示しても、Postfixがシステムにインストールされていない場合、monitは起動しません。)
構成ファイルはかなり自明です。オプションについて不明な点がある場合は、monitのドキュメントを参照してください:http://www.tildeslash.com/monit/doc/manual.php
monit構成のapache部分には、次のものがあります。
if failed host www.example.com port 80 protocol http and request "/monit/token" then restart |
これは、monitがポート80でwww.example.comに接続しようとし、/ var / www / www.example.com / web / monit/tokenであるファイル/monit/tokenにアクセスしようとすることを意味します。 /var/www/www.example.com/webです。 monitが成功しない場合は、Apacheが実行されていないことを意味し、monitはそれを再起動します。次に、ファイル/var/www/www.example.com/web/monit/tokenを作成し、それにランダムな文字列を書き込む必要があります。
mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/monit/token
次に、SSLで暗号化されたmonit Webインターフェイスに必要なpem証明書(/var/certs/monit.pem)を作成します。
mkdir /var/certs
cd /var/certs
証明書を作成するには、OpenSSL構成ファイルが必要です。次のようになります:
vi /var/certs/monit.cnf
# create RSA certs - Server 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を開始できます:
/etc/init.d/monit start
次に、ブラウザでhttps://www.example.com:2812/にアクセスし(ポート2812がファイアウォールによってブロックされていないことを確認してください)、adminでログインしてテストすると、monitWebインターフェイスが表示されます。次のようになります:
(メイン画面)
(Apacheステータスページ)
/etc/monit.d/monitrcの構成に応じて、monitはサービスが失敗した場合にサービスを再起動し、サービスのプロセスIDが変更された場合などに通知メールを送信します。
楽しんでください!
5つのリンク
- munin:http://munin.projects.linpro.no
- monit:http://www.tildeslash.com/monit/index.php