Logrotate入門: ログ管理を自動化してシステムをスムーズに保つ方法

※当サイトはアフィリエイト広告を利用しています

LogrotateはLinuxシステムでログファイルを管理するための強力なツールです。
特にログファイルのサイズが大きくなりすぎることを防ぎ、システムのパフォーマンスを保つために重要です。
この記事ではlogrotateの基本的な使い方といくつかの高度な設定を解説します。

Logrotateの基本設定

Logrotateの設定は/etc/logrotate.conf/etc/logrotate.d/ディレクトリ内のファイルで行われます。
これらの設定ファイルでローテーションの頻度、保存するログファイルの数、ログファイルの圧縮、古いログファイルの削除などを定義できます。

主な設定オプション

  • rotate [count]: 保持するログファイルの世代数を指定します。
  • compress: 一世代前のログファイルをgzip形式で圧縮します。
  • daily, weekly, monthly: ログファイルのローテーション頻度を指定します。
  • size [size]: ログファイルのサイズが指定した値に達した時にローテーションを行います。

高度な設定

Logrotateにはログの管理をさらに細かく制御するための高度なオプションも用意されています。
例えば特定の拡張子を持つファイルをローテーションの対象外にするtabooextオプションや、ローテーション時に特定のディレクトリに古いログファイルを移動するolddirオプションなどがあります。

圧縮に関する設定

  • compresscmd: gzip以外の圧縮コマンドを指定します。
  • compressext: 圧縮されたログファイルの拡張子を指定します。
  • compressoptions: 圧縮プログラムに渡すコマンドラインオプションを指定します。

実践的な例

以下はlogrotateを使って特定のログファイルを毎日ローテーションし、最大750世代(2年ちょっと)を保持する設定例です。
古いログファイルはgzipで圧縮し、特定のディレクトリに移動させます。

/var/log/myapp/*.log {
    daily
    rotate 750
    compress
    olddir /var/log/myapp/old
    missingok
    notifempty
    create 640 root adm
}

この設定では /var/log/myapp ディレクトリ内の全ての.logファイルを毎日ローテートし、750世代分のログファイルを保持します。
古いログは /var/log/myapp/old に移動され、存在しないログファイルに対してエラーを出さず(missingok)、空のログファイルはローテートしない(notifempty)ように設定しています。

まとめ

Logrotateの設定は非常に柔軟であり、システム管理者がログファイルの管理を効率化しディスクスペースを節約できるように設計されています。
messegesやsecure等も含めログ類はデフォルトでは意外と短期間しか保存されないので、社内の規定に沿って適切な設定を探るようにしてください。

コメント

タイトルとURLをコピーしました