ログローテーション(logrotate)を使ってみる ( httpd(apache)の設定例 )
ログローテーション(logrotate)を使ってみる ( httpd(apache)の設定例 )
Linuxでログファイルを一定期間ごとで切り出し、世代管理を行ってくれるlogrotate。 logrotateでは、単にログをローテションするだけではなく、ローテションの際にスクリプトを動作させることが可能となっています。 それらのスクリプトは、/etc/logrotate.confや、インクルードされる/etc/logrotate.d/hogehogeといったファイルに定義します。 スクリプトを動作させることが可能なタイミングは以下の4つあります。 firstaction ログローテーションプロセスの1番最初 prerotate ログファイルをローテーションする前 postrotate ログファイルをローテションした後 lastaction ログローテーションプロセスの1番最後 # 正直、firstactionとprerotate、postrotateとlastactionの違いはあま
前々から、logrotate を修正してファイル名に日付を付加する機能を追加しようと企んでいた。 で暫くソースを眺めていると、lastactionなる機能がある事に気が付いた。 lastactionとはその名の通り、最後に実行するコマンドを記述する事ができ、postrotateの後に、実行されるようだ。 これを使えば、比較的簡単に日付付きファイル名に変更できそうだ。 つまり、通常のローテートが完了し、messages.1.gz など出来たファイルを、messages.20050112.gz に名前を変更してしまえばよさそうだ。 /etc/logrotate.d/syslog をこんな感じに変更した。 /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/c
・各ファイル /etc/logrotate.conf logrotate全体の設定ファイル /etc/logrotate.d/ 個別の設定ファイルを保存するディレクトリ /etc/cron.daily/logrotate cronで実行されるスクリプト /var/lib/logrotate.status logrotateの状態記録ファイル /usr/sbin/logrotate logrotate本体 ・全体設定ファイル # vi /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after r
railsのproduction.logなどをローテーションする一般的な方法、logrotateについてのメモ書きです。 基本 /etc/logrotate.confにデフォルトの設定 /etc/logrotate.d/配下に個別の設定を書く 利用できるディレクティブ(の一部) daily or weekly or monthly ログのローテーション間隔 missingok ログファイルがない場合でもエラーにしない rotate n n回ローテーションする compress ローテーションされたログを圧縮 delaycompress 次回のログローテーションサイクルになるまで圧縮しない notifempty ログファイルが空ならローテートしない create 0644 user group ログファイルのパーミッションと所有ユーザの設定 copytruncate 通常、ローテートするとき
logrotateでは定期的にログをローテーションしてくれます。 ローテーションのオプションにもいくつかあって、今回は以下の2つについて取り上げます。 dateext:ファイル名末尾に日付をつける delaycompress:1つ前のファイル以外は圧縮する dateextとdelaycompressを手動で実行するスクリプト 通常はこれらのオプションをつけるだけで良いのですが、あえてこれを手動で実装する場合があります。 その書き方は次のようにします。 なお、例はCentOSにおけるapacheのログファイルをローテーションするスクリプト、/etc/logrotate.d/httpdの場合です。 主な部分だけ記載しているのでご注意。 /etc/httpd/logs/*log { daily # 日付でファイルを作るのでdailyにします nocompress # 圧縮は手動でする
ここでは、ログの肥大化を防ぐためのログのローテーションについて解説していきます。syslog や他のプロセスが出力するファイルは放置していくとどんどんサイズが大きくなり、ディスクスペースを圧迫していきます。インストール時は/var ディレクトリのディスク占有率が0%であっても、数週間、数ヶ月経過するごとにあっという間に占有率が増大していることに気がつくと思います。しかし、これらの出力されるログを何世代分ローテーションさせるかといったことを予め決めておけば、指定した以上のファイルは作成されなくなり、その中でログがローテーションされていくのでログサイズの肥大化を防止することができるのです。RPMでパッケージをインストールしている方は、ほとんどログのローテーションをカスタマイズする必要はありませんが、ソースからコンパイルしてインストールした場合には、ログのローテーションは必須の作業となります。ま
Apacheのログはほっとくとサイズが膨張する一方なので, 適当なタイミングで別のファイルに切り替えるのがよろし. うちのLinux(Red Hat 7.1J)では,システム標準でcronによってlogrotateが定期的に動くようになっていたので, こいつで一緒にやってもらうことにします. logrotateは,特に設定しなければ access_log.1 access_log.2 ・・・ という具合で,あとで困ってしまうようなファイル名をつけてしまうため,少し工夫を行って, access_log.20030419 access_log.20030426 ・・・ という風になるようにしています.(1週間に1回ローテイトさせます.いわゆるweeklyですな) ↑ /usr/local/apache2/logs/access_log { weekly copytruncate postrot
logrotateでログファイルがローテーションされない事への対処 で書きましたが、logrotateは肥大化するログファイルを退避させてくれるツールです。 通常であれば、「rotate」の項目で設定した世代分、「XXXX.1」「XXXX.2」などのように数値でログファイルが退避されていきます。 この数値は、週ごとに退避する周期に設定しているのであれば、「1週間前」「2週間前」に退避されたログファイルと分かりやすいのですが、実際に何日から何日までのログファイルが入っているかは内容を見てみないと分かりませんので、ローテーションされた後のファイル名を変更してみたいと思います。 logrotateを設定するには、/etc/logrotate.dディレクトリ以下に個別の設定ファイルを用意し、編集を行います。 Apacheのログファイルを例にしてみましょう。 /var/log/httpd/*_log
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く