さくら VPS でログを監視する (CentOS7 + nginx + Logwatch)

はじめに

さくらの VPS (CentOS7 + nginx) の環境に Logwatch を入れてログを監視します。

注意事項

コマンドはすべて root 権限での操作です。

目次

環境

  • VPS : さくらVPS 1G SSD
  • OS : CentOs 7.3
  • その他 : nginx/1.10.2, Logwatch 7.4.0

Logwatch とは

カスタマイズ可能な、ログモニタリングシステムで、一定期間のログのレポートを作成してくれます。

Logwatch のインストール

yum コマンドでパッケージをインストールします。

# yum install logwatch

Logwatch の設定

logwatch の設定ファイルを変更する場合は、/usr/share/logwatch/default.conf/logwatch.conf の内容から、変更したい箇所を /etc/logwatch/conf/logwatch.conf へ追記して修正します。
メールの宛先を変更する場合は、以下のように追記します。

# vi /etc/logwatch/conf/logwatch.conf
logwatch.conf
MailTo = xxx@goodlife.tech

ログレポートの確認

ログレポートを標準出力に出力するには、何も指定せずに実行するか、--output stdout と指定して実行します。デフォルトの出力先は logwatch.conf で設定されていて、stdout です。

# logwatch
# logwatch --output stdout

サービスを指定してログを表示する場合は、--service オプションを指定します。cron のログを表示する場合は以下の通りです。

# logwatch --service cron

nginx 用の設定

logwatch には、標準で nginx 用の設定ファイルが存在しないため、httpd 用の設定ファイルをコピーして作成します。

cp /usr/share/logwatch/default.conf/logfiles/http.conf /etc/logwatch/conf/logfiles/nginx.conf
cp /usr/share/logwatch/default.conf/services/http.conf /etc/logwatch/conf/services/nginx.conf
cp /usr/share/logwatch/scripts/services/http /etc/logwatch/scripts/services/nginx

cp /usr/share/logwatch/default.conf/logfiles/http-error.conf /etc/logwatch/conf/logfiles/nginx-error.conf
cp /usr/share/logwatch/default.conf/services/http-error.conf /etc/logwatch/conf/services/nginx-error.conf
cp /usr/share/logwatch/scripts/services/http-error /etc/logwatch/scripts/services/nginx-error

設定ファイルを変更する

nginx のサービス設定ファイルを以下のように変更します。

# vi /etc/logwatch/conf/services/nginx.conf
/etc/logwatch/conf/services/nginx.conf
- Title = "httpd"
+ Title = "nginx"

- LogFile = http
+ LogFile = nginx

nginx のログファイルの形式を設定します。

# vi /etc/logwatch/conf/logfiles/nginx.conf
/etc/logwatch/conf/logfiles/nginx.conf
- LogFile = httpd/*access_log
- LogFile = apache/*access.log.1
- LogFile = apache/*access.log
- LogFile = apache2/*access.log.1
- LogFile = apache2/*access.log
- LogFile = apache2/*access_log
- LogFile = apache-ssl/*access.log.1
- LogFile = apache-ssl/*access.log
+ LogFile = /var/log/nginx/access.log

- Archive = archiv/httpd/*access_log.*
- Archive = httpd/*access_log.*
- Archive = apache/*access.log.*.gz
- Archive = apache2/*access.log.*.gz
- Archive = apache2/*access_log.*.gz
- Archive = apache-ssl/*access.log.*.gz
- Archive = archiv/httpd/*access_log-*
- Archive = httpd/*access_log-*
- Archive = apache/*access.log-*.gz
- Archive = apache2/*access.log-*.gz
- Archive = apache2/*access_log-*.gz
- Archive = apache-ssl/*access.log-*.gz
+ Archive = /var/log/nginx/access.log-*.gz

nginx-error のサービス設定ファイルを以下のように変更します。

# vi /etc/logwatch/conf/services/nginx-error.conf
/etc/logwatch/conf/services/nginx-error.conf
- Title = http errors
+ Title = nginx errors

- LogFile = http-error
+ LogFile = nginx-error

nginx-error のログファイルの形式を設定します。

# vi /etc/logwatch/conf/logfiles/nginx-error.conf
/etc/logwatch/conf/logfiles/nginx-error.conf
- LogFile = httpd/*error_log
- LogFile = apache/*error.log.1
- LogFile = apache/*error.log
- LogFile = apache2/*error.log.1
- LogFile = apache2/*error.log
- LogFile = apache2/*error_log
- LogFile = apache-ssl/*error.log.1
- LogFile = apache-ssl/*error.log
+ LogFile = /var/log/nginx/error.log

- Archive = archiv/httpd/*error_log.*
- Archive = httpd/*error_log.*
- Archive = apache/*error.log.*.gz
- Archive = apache2/*error.log.*.gz
- Archive = apache2/*error_log.*.gz
- Archive = apache-ssl/*error.log.*.gz
- Archive = varnish/*error.log.*.gz
- Archive = archiv/httpd/*error_log-*
- Archive = httpd/*error_log-*
- Archive = apache/*error.log-*.gz
- Archive = apache2/*error.log-*.gz
- Archive = apache2/*error_log-*.gz
- Archive = apache-ssl/*error.log-*.gz
+ Archive = /var/log/nginx/error.log-*.gz

Logwatch を実行して、nginx のログが出力されれば成功です。

# logwatch --output stdout --service nginx

--------------------- nginx Begin ------------------------
(略)
---------------------- nginx End -------------------------