0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

logrotateが急に動かなくなった

Last updated at Posted at 2022-06-09

前置き

logrotate設定できたはずやのに動かんor今まで動いてたのに動かなくなったってハマった人の助けになればと思って書いています。
logrotate、たまにしか触らないので挙動を忘れて思い出すのに困りますよね。。。

備忘録も兼ねて引っかかったポイントとそれに伴って問題点を見つける方法をメモしておこうと思います。

そもそもdry-runをしましょう

動かない時はとにもかくにもdry-runしてデバッグしましょう。ログをみれば大抵のことがわかります。
ありがちなミスを挙げるとすると

  • ファイルのパーミッションの問題
  • 親ディレクトリのパーミッションの問題(この記事が参考になります。)
  • そもそもローテーション対象パスをtypo...

こんなもんでしょうか。

あと、個別設定ファイルを実行してうまくいっても、/etc/logrotate.confdateextとかデフォルト値と違っていてなおかつ個別設定ファイル上で記述していないグローバルな設定が書いてあると挙動がかわってきます。
最終テストはlogrotate -d /etc/logrotate.confでやっとくべきです。これで私が今回やられました。

ローテション対象ログの存在するディレクトリにあるファイル名に気をつけよう

この記事を書いたきっかけです。logrotate.confだけにdateext(ローテーション時にファイル末尾に日付をつけてくれる)が書いてあることと、古いファイルがよくない名前で置いてあったのが原因でした。

実例

設定

  • logrotate.confにはdateextの記述あり。
  • HOGEを管理するlogrotate.d/HOGEにはdateextの記述なし。さらにdelaycompressの記述あり。
ローテーション対象ファイル群
HOGE.log
HOGE.log-20200602
HOGE.log-20220602.gz

というファイルだけが同一ディレクトリ上にあるとしましょう。
このHOGEというファイルに関するlogrotate.d以下の設定ファイルにはdateextが書いていませんが、親設定ファイルであるlogrotate.confには書いてありました。
なのでlogrotateはHOGE.log-YYYYMMDDというフォーマットのファイルを世代管理対象とします。
またdelaycompressがあるので一世代前は圧縮しません。
そのためlogrotateはたまたま一世代前にあたるHOGE.log-20200602というファイルを圧縮しようとします。もちろんこのファイルはlogrotateが管理して作成したものではないです。
しかし、既にHOGE.log-20220602.gzがあるため作成に失敗するということが発生します。

つまり、logrotateが作ろうとしているファイルと同じ名前のファイルが既にあるとlogrotateは動作をやめてしまいます。
(間違って置いたログファイルを上書きされては困るので安全な動作ですね。)

ちなみにlogrotate.d/HOGEだけでdry-runしたときはdateextが効きません。
つまりHOGE.log.1という名前で世代管理をしようとするのでローテーションに成功します。

この組み合わせで私は混乱してしまいました。

おそらくログの置いてあるディレクトリ上で以前だれかがログファイルを解凍してそのまま放置していたせいでこの現象がおきてしまったのでしょう。。。涙

結論

ログの置いてあるディレクトリ上でファイルを解凍して作業をしないように、、、。
.gzならzcatlessを組み合わせて使ったりで対処しましょう。もしくはローカルにコピーして作業しましょう。

おまけ

今回、anacronで実行していたのでlogrotateの実行ログをリダイレクトしてファイルに実際本番で実行時の挙動を保存して確認しようと思ったら、logrotateのログは標準エラー出力で吐かれていました。(少しでも失敗したときだけなのかもしれませんが。)
もし毎回logrotateのログを保存したい場合はご注意を。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?