httpd(apache)のログは、サイト管理を行う上で、非常に大事なものです。
ここでは、そのログファイルの管理を行うログローテーションの設定を行ってみましょう。
- 目次
- 履歴
2010年7月17日 初版
ログローテーションのインストールを行う
まずは、ログローテーションのインストールを行います。
インストール済みか否かは、それぞれ以下のように確認することができます。
上記のようにパッケージ名が表示されればインストールされています。
先頭に ii が表示されるとインストールされています。
既にインストール済みの場合は、次の設定の項へどうぞ。
CentOS Scientific Linux
|
Debian Ubuntu
|
既にインストール済みの場合は、次の設定の項へどうぞ。
CentOS Scientific Linux
|
Debian Ubuntu
|
ログローテーションの設定を行う
ログローテーションの管理ファイルは、/etc/logrotate.conf です。
これを編集して、ログローテーションの初期設定を行います。
しかし、変更するようなところがありません。
httpd(apache)のロギングファイルの管理を変更したい場合は、そのサービス名で、そのサービス毎のログローテーションを設定できるようになっています。
httpd(apache)の場合は、/etc/logrotate.d/httpd です。
以下は、/etc/logrotate.d/httpd の編集イメージです。
|
筆者の場合は、このように変更してみました。
この設定では、毎日、ログローテーションを行い、90日分を保存します。
以下は、ここで設定できるパラメータとその意味です。
compress
ローテーションされたログをgzipで圧縮する。
create [パーミッション] [ユーザ名] [グループ名>]
ローテーション後に新たな空のログファイルを作成します。ファイルのパーミッション、ユーザ名、グループ名を指定できます。
daily
毎日ログローテーションする。
/etc/crontabの内容です。
(デフォルトでは、4時2分にローテーションが実施される。)
/etc/crontabの内容です。
|
weekly
毎週ログローテーションする。
(デフォルトでは、毎週日曜日4時22分にローテーションが実施される。)
(デフォルトでは、毎週日曜日4時22分にローテーションが実施される。)
monthly
毎月ログローテーションする。
(デフォルトでは、毎月1日4時42分にローテーションが実施される。)
(デフォルトでは、毎月1日4時42分にローテーションが実施される。)
ifempty
ログファイルが空でもローテーションする。
missingok
ログファイルが存在しなくてもエラーを出さない。
nocompress
ローテーションされたログを圧縮しない。
nocreate
新たな空のログファイルを作成しない。
nomissingok
ログファイルが存在しない場合エラーを出す。
noolddir
ローテーション対象のログと同じディレクトリにローテーションされたログを格納する。
notifempty
ログファイルが空ならローテーションしない。
olddir ディレクトリ名
指定したディレクトリ内にローテーションされたログを格納する。
postrotate – endscript
postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行する。
prerotate – endscript
postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行する。
rotate 回数
指定した回数だけローテーションする。
size ファイルサイズ
ログファイルが指定したファイルサイズ以上であればローテーションする。
sharedscripts
複数指定したログファイルに対してpostrotateまたはprerotateで記述されたコマンドを1回だけ実行する。
nosharedscripts
sharedscriptsの逆。複数指定したログファイルに対してpostrotateまたはprerotateで記述されたコマンドをファイルの数だけ実行する。
この設定で終わりです。 ここの設定をすれば、後は、自動的に読み込んでくれます。
ログローテーションの確認を行う
ログローテーションの確認を行うのは、logrotate -d で実行すれば、確認することができます。
ここで利用しているlogrotateのパラメータは以下のとおりです。
-d : デバッグ実行します。
-v : 詳細表示します。
他にも以下のようなものがあります。
-f : 強制的に実行します。
このオプションは、1度も実行されたことがないログローテーションの場合に指定することがあります。
-m : メール送信のためのコマンドを指定します。 ex) -m=/bin/mail
-s : 状態ファイルのパスを続けて指定します。 ex) -s=/var/lib/logrotate.status
一般的に、-s は違うユーザがlogrotate を実行したい場合に、状態ファイルを分けることで混乱を防ぐことができます。
-d : デバッグ実行します。
-v : 詳細表示します。
他にも以下のようなものがあります。
-f : 強制的に実行します。
このオプションは、1度も実行されたことがないログローテーションの場合に指定することがあります。
-m : メール送信のためのコマンドを指定します。 ex) -m=/bin/mail
-s : 状態ファイルのパスを続けて指定します。 ex) -s=/var/lib/logrotate.status
一般的に、-s は違うユーザがlogrotate を実行したい場合に、状態ファイルを分けることで混乱を防ぐことができます。
正常な場合は、以下のような詳細情報を出力するだけです。
|
以下のように出力された場合、ログローテーションの必要なしと判断されています。
以降のエラーやログファイルが空、あるいは存在しない場合を除けば、
ほとんどの場合は、ログローテーションを最後に行ってまだ1日以上の経過していない場合がほとんどでしょう。
その場合、以下のファイルで最終ログローテーション日付を変更してあげるとうまくいくことがあります。
CentOS Scientific Linux → /var/lib/logrotate.status
Debian Ubuntu → /var/lib/logrotate/status
また、まだ1度の実行されたことがないローテーションの場合も同じように log does not need rotating と出力される場合があります。
この場合は、1度だけ -f オプションを付けて実行すると、以降、うまくいく場合があります。
この後、先の最終ログローテーション日付を設定してあげて、再度、実行してみてください。
|
ほとんどの場合は、ログローテーションを最後に行ってまだ1日以上の経過していない場合がほとんどでしょう。
その場合、以下のファイルで最終ログローテーション日付を変更してあげるとうまくいくことがあります。
CentOS Scientific Linux → /var/lib/logrotate.status
Debian Ubuntu → /var/lib/logrotate/status
|
|
もしも設定情報に誤りがあった場合は、以下のようにerror情報を出力されます。
|
httpd(apache)のログは、非常に大事です。
参考記事:アクセスログの活用
ログ情報から、サイトの運営の見直し(フィードバック)を行うことがサイト管理者の仕事でもあります。
格安レンタルサーバーでも、ほとんどが、アクセスログとして解析結果を提供しています。
そのまま、apacheの生ログ情報をダウンロードさせてくれるところもあります。
これは、活用しない手はありません。ぜひ、活用しましょう。
参考記事:アクセスログの活用
ログ情報から、サイトの運営の見直し(フィードバック)を行うことがサイト管理者の仕事でもあります。
格安レンタルサーバーでも、ほとんどが、アクセスログとして解析結果を提供しています。
そのまま、apacheの生ログ情報をダウンロードさせてくれるところもあります。
これは、活用しない手はありません。ぜひ、活用しましょう。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :