
Ubuntu日本語フォーラム

ログインしていません。
Ubuntu14.04LTSを利用しております。
syslogを/var/logではなく/home/user/log/の中に保存し、
ログローテートも同フォルダの中で実施したいと考えております。
以前ここに質問しまして、
/etc/rsyslog.d/50-default.confの中の、
*.*;auth,authpriv.none -/var/log/syslog
を
*.*;auth,authpriv.none -/home/user/log/syslog
に書き換え、
/home/user/logの所有者をsyslog:admにすることで、
無事この/home/user/logの中にsyslogができるようになっている状態です。
しかし、
syslogのログローテートが動作していないようです。
設定を変更する前の/var/log/を見ましたところ、
syslogは1日単位でsyslog.7.gzまで作成されておりました。
また、
/etc/logrotate.d/rsyslogを見ましたところ、以下のように記述されておりました。
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
「/var/log/syslog」「rotate 7」「daily」とあるので、設定箇所はここだと思い、
1行目を保存したい場所「/home/user/log/syslog」に書き換えました。
この状態で、BIOSの日付を3回ほど進めてみたのですが、
/home/user/log/syslogの中に新しい日付でログが追加されるだけで、
syslog.1.gz、syslog.2.gzのようなファイルは作られませんでした。
/home/user/log/に過去ログを作成するようにするにはどこをいじればよいのか、
お心当たりあります方教えていただけますと幸いです。
よろしくお願い致します。
オフライン
takuma0217さん
http://d.hatena.ne.jp/kuchida123/touch/20110930/p1
上記ページの
◆noolddir ログファイルは同一のディレクトリにローテーションされる。
◆olddir [directory] directoryで指定されたディレクトリにログがローテーションされる。
この辺りのパラメータが臭そう(?)ですが。
オフライン
logrotate は一日一回特定の時刻に起動します。
BIOS で日付を変更すると、logrotate が起動する特定の時間が飛ばされてしまうため、ローテーションは行われません。
素直に数日ほど稼働して動作検証しましょう。
オフライン
chichinpui様
回答ありがとうございます。
挙げて頂いたURLを参考に、
/home/user/log/syslog
{
}
の中に noolddir を入れてみましたが、
/home/user/log/に過去ログは作られませんでした。
元々の、
/var/log/syslog
{
}
の中にも noolddir が無いのに/var/log/に過去ログが作られるため、
まずはその辺の調査に戻ろうと/home/user/log/syslog指定を/var/log/syslogに戻して丸1日稼働させたのですが、
/var/log/syslogにもsyslog.1.tgzが作られなくなってしまいました。
挙げて頂いたURLを見ますと、cron.dailyによって特定の時間にローテートされる、とありました。
crontabを見ますと、
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
となっており、
おそらくは6時25分に動くのだと思いますが、
元々のフォルダに残っていたsyslog.1.tgz~syslog.7.tgzの作成時間はバラバラでした。
(参考URLのように、過去ログが同じタイムスタンプ、ということはありませんでした)
正直元々の状況すらよくわからない状態となってしまいました。
オフライン
ry様
回答ありがとうございます。
検証方法に問題があるという点は盲点でした。
確かに調べた情報の中に「logrotate は一日一回特定の時刻に起動する」というものはありました。
ただ、ふと思ったのですが、
仮に6時25分に起動するよう設定されているとして、
毎日朝9時からそのパソコンを使い、その日のうちに電源を落とす、という場合、
logrotateはまったく動作することが無い、
つまりはログは溜まり続ける、ということでしょうか。
crontabを見ますと、
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
となっており、
chichinpui様に教えていただいたサイトの情報を見ると、
6時25分に稼働すると思われるのですが、
このパソコンは、基本的に6時25分には動いていないものです。
にも関わらず元々の/var/logフォルダにはsyslog.7.tgzまで残っておりました。
ただ、確かにsyslog.*.tgzの時刻が6時25分ではないため、
別のルールで動作しているのだとは思いますが、
他に指定箇所があるのでしょうか。
オフライン
takuma0217さん
/home/user/log/syslog
{
}
の中に noolddir を入れてみましたが、
/home/user/log/に過去ログは作られませんでした。
元々の、
/var/log/syslog
{
}
の中にも noolddir が無いのに/var/log/に過去ログが作られるため、
まずはその辺の調査に戻ろうと/home/user/log/syslog指定を/var/log/syslogに戻して丸1日稼働させたのですが、
/var/log/syslogにもsyslog.1.tgzが作られなくなってしまいました。
しばし旅(出張)に出ており、遅くなりましたが、気になり少し調べて見ました。
http://www.rep1.co.jp/staff/200vcxg/217rav/logrotate_lcd_-linux_command_d.htm
上記HPの内容を読む限り、「新たに指定したログファイルが作成されるのは2日目から」という事になりますね。
/var/lib/logrotate.statusの内容も合わせて確認しながら調べると解決に近づくかもしれません。
記述されている「/var/log/syslogにもsyslog.1.tgzが作られなくなってしまいました。」も新たに指定された
扱いになるのだとすると辻褄が合いませんかね?
以上 参考になれば幸いです。
オフライン
takuma0217さん
ついでに起動時刻ですが、私も毎日24時間起動しっぱなしの環境ではありません。
ログの時間はバラバラで、特に1日以上起動が空くと、起動直後にローテートされている様な気が。
それこそ今日のsyslogの1行目に、
Apr 9 17:29:47 papa-desktop anacron[1049]: Job `cron.daily' terminated とあります。
また、syslog1の更新日時はApr 9 17:29となっています。
これは電源ONした時刻なので。
オフライン
chichinpui様
回答、調査ありがとうございます。
状況から申し上げますと以下の通りです。
・私の指定したフォルダにsyslog.1は作られました。
・ただ、作られたタイミングが解せません。
挙げて頂いた情報を読ませていただきました。
「logrotate実行の1回目はリストの更新だけ、2回目でローテーション」
という情報は非常に参考になります。
しかし、日付変更などで1日ずつ進める、といった操作はしておりますが、
「1日目にリスト更新」「2日目にローテーション」、それぞれ動作しなかった点が疑問です。
(そのくせ意図しない起動直後に動作していたりします。)
確かに私の環境も、本日朝9:02(電源ONした時間)にいくつかのログがローテートされておりました。
土曜日曜とONしていないので、1日以上起動していない場合の起動直後、という情報も信ぴょう性があります。
しかし(daily指定のはずの)syslogは作られておりませんでした。
参考サイト様のように、OSの時刻変更で1分前にし、1分待ったところ、
ローテートされるログもありましたが、やはりsyslogはローテートされませんでした。
1日ずつ時間を進めていっても、syslogはローテートされません。
様子を見ようと思い、時間を現在に戻して2時間程度放置しましたところ、
気がついたら/var/lib/logrotate/statusが更新されておりまして、
その時間16:04でsyslog.1が作られました。
この16:04というローテート実行時刻がどこからきたのかはわかりませんが、
今まで動かなかったのは、OSの時間変更を行ってから数時間?はローテートしない、
といったルールでもあるのかもしれません。
とにかく目的の場所にsyslog.1が作られたので、
設定方法は正しいことがわかりました。
設定後は、設定が反映されるまでリアルタイムで待つことにします。
各種オプション指定、初回は動作しないなど、色々と得るものがありました。
ありがとうございました。
オフライン