さくらVPS 監視環境構築
既にWebサーバ、メールサーバ、データベースなどのミドルウェアがインストール済みであることを前提に監視の環境の構築手順メモ。さくら VPS 契約後のほぼ自分用セットアップメモ第四弾です。
1. logwatch のインストール
1-1. yum でインストール
yum -y install logwatch
※Perl がインストールされている必要があります。
1-2. 設定ファイルを編集
vim /usr/share/logwatch/default.conf/logwatch.conf
※/etc/logwatch/conf/logwatch.conf にも設定ファイルがあります。本来は追記はこちらで行うようですが自分は上記ファイルをバックアップして編集しました。(動作に影響はなし)変更箇所は以下の通り。
-#Archives = No
+Archives = Yes
-MailTo = root
+MailTo = [email protected]
-Detail = Low
+Detail = High
インストールと同時にcronも仕込まれるため、この後は午前4時に指定メールアドレスにレポートが送信されます。
2. Monit のインストール
2-1. yum-priorities のインストール
標準リポジトリにmonitが存在しないので、DAGレポジトリを利用します。
DAGはレポジトリ規模が大きいため、CentOSの標準リポジトリを上書きしてしまわないようにポジトリの優先度を設定できる yum-priorities を使います。
yum -y install yum-priorities
2-2. 標準レポジトリに優先度を設定
base と updates にpriority=1、それ以外に priority=2 を追加します。
vim /etc/yum.repos.d/CentOS-Base.repo
[base]
#(中略)
priority=1
#released updates
[updates]
#(中略)
priority=1
#additional packages that may be useful
[extras]
#(中略)
priority=2
#additional packages that extend functionality of existing packages
[centosplus]
#(中略)
priority=2
#contrib - packages by Centos Users
[contrib]
#(中略)
priority=2
2-3. DAG レポジトリを登録
vim /etc/yum.repos.d/dag.repo
[dag]
name=Dag
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag/
enabled=0
gpgcheck=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
※DAGレポジトリが大規模なため、enabled=0 にしておき、インストール時に指定する運用にした方が無難
2-4. yumでインストール
yum -y --enablerepo=dag install monit
※enabled=0 のため、オプションでレポジトリを指定する
2-5. 設定ファイルを編集
cp -a /etc/monit.conf /etc/monit.conf.YYMMDD
※編集前のバックアップ
vim /etc/monit.conf
以下を追記
# ログファイルの出力
set logfile /var/log/monit.log
# アラートメールの送信サーバ
set mailserver localhost
# アラートメールの送信先
set alert [email protected]
2-6. 監視プロセスの設定
監視して死んでる時はプロセスを再起動させるための設定ファイルを新規で作成します。
nginx
vim /etc/monit.d/nginx
check process nginx
with pidfile /var/run/nginx.pid
start program = "/sbin/service nginx start"
stop program = "/sbin/service nginx stop"
if failed host psychopomp.jp port 80 send "GET / HTTP/1.1\r\nHost: psychopomp.jp\r\n\r\n" expect "HTTP/1\.[01x] [1-4][0-9]{2} .*\r\n" with timeout 60 seconds then restart
if 1000 restarts within 1000 cycles then timeout
MySQL
vim /etc/monit.d/mysqld
check process mysqld
with pidfile /var/run/mysqld/mysqld.pid
start program = "/sbin/service mysqld start"
stop program = "/sbin/service mysqld stop"
if failed unixsocket /var/lib/mysql/mysql.sock then restart
if 5 restarts within 5 cycles then timeout
PHP-fpm
vim /etc/monit.d/php-fpm
check process php-fpm
with pidfile /var/run/php-fpm/php-fpm.pid
start program = "/sbin/service php-fpm start"
stop program = "/sbin/service php-fpm stop"
SSH
vim /etc/monit.d/sshd
check process sshd with pidfile /var/run/sshd.pid
start program = "/etc/rc.d/init.d/sshd start" with timeout 60 seconds
stop program = "/etc/rc.d/init.d/sshd stop"
if failed port 123456 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
※Port は適宜変更した値を指定します。
Postfix
vim /etc/monit.d/postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed port 25 protocol smtp then restart
2-7. サービスの登録
サーバ起動時に monit が立ち上がるように設定
chkconfig monit on
サービスの起動
service monit start
ステータスの確認
monit status
参考サイト
- http://easyramble.com/install-setup-logwatch.html
- http://www.ermine.jp/developer-blog/coders_at_work/monit-install/
- http://nob-log.info/2012/07/07/install-monit/
- http://dogmap.jp/2013/12/20/monit/
- http://www.tooyama.org/yum-addrepo-dag.html
- http://blog.ybbo.net/2014/12/04/お手軽、高性能なフリー監視ツール「monit」をlinuxに設