1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

logrotateについての調査備忘録

Posted at

概要

linuxでのログローテーション処理を実行するloglotateについて、調査ついでにメモも兼ねてまとめてみます。

loglotateとは

  • loglotateは、デバイス上で継続取得されるログファイルのサイズを抑えるためのライフサイクルを実装するための仕組み
  • 一定期間ごとにログファイルのファイル名を変更したり、gzip圧縮をすることで、最新のログファイルのサイズを減らして管理することができる
  • 古いログファイルは自動削除することも可能

loglotateの設定

  • ローテートの設定は、/etc/logrotate.confおよび/etc/logrotate.dディレクトリ内のファイルで定義されている
  • ファイル内に記されたコマンドに従ってログローテート処理が行われる

/etc/logrotate.conf

  • グローバル設定を保存したファイル
/etc/loglrotate.conf
# see "man logrotate" for details

# global options do not affect preceding include directives

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
dateext

# uncomment this if you want your log files compressed
#compress

# packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may also be configured here.

記載コマンド説明

コマンド オプション 説明
weekly - ローテートを1週間ごとに実行する
rotate 世代数 4世代までのログをローテートし、それ以上古いものは削除する
create - ローテート後に新しいログファイルを作成する
dateext - ローテートしたログファイルの名前にSuffix(YYYYMMDD)を入れる
include ディレクトリパス /etc/logrotate.dディレクトリ内のファイルを読み込む

/etc/loglotate.d

  • 個別のログローテート設定が保存されたディレクトリ
[root@ip-10-0-0-18 ~]# ls /etc/logrotate.d
btmp  chrony  dnf  nginx  psacct  sssd  wtmp
/etc/logrotate.d/nginx
/var/log/nginx/*.log {
    create 0640 nginx root
    daily
    rotate 10
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

記載コマンド説明

コマンド オプション 説明
create パーミッション ユーザー名 グループ名 ローテート後に空のログファイルを新規作成
daily -1日間隔でローテートを実行する
missingok - ログファイルが見つからなかった場合でもエラー扱いにしない
notifempty - ログファイルが空の場合にローテートを行わない
compress - ローテーションしたログをgzipで圧縮する
delaycompress - 1世代目のログは圧縮しない
sharedscripts - 複数のログファイルに対するスクリプト処理をまとめて行う
postrotate endscript - postrotate endscriptで挟まれたスクリプトをローテート後に実行する

loglotateの実行確認

  • loglotateの動作をシェル上で確認してみる
  • ローテート対象のログはNginxのアクセスログ・エラーログを用いる

ローテート前のログフォルダの確認

# /var/log/nginx内のログファイルを確認
[root@ip-10-0-0-18 ~]# ls /var/log/nginx
access.log  error.log

アクセスログの中身

# ローテート対象となるアクセスログの状態を確認
[root@ip-10-0-0-18 ~]# cat /var/log/nginx/access.log
xxx.xx.xx.xx - - [15/Aug/2025:05:52:27 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" "-"

ログローテートの手動実行

[root@ip-10-0-0-18 ~]# ls /var/log/nginx
access.log  access.log-20250815  error.log
[root@ip-10-0-0-18 ~]# cat /var/log/nginx/access.log
[root@ip-10-0-0-18 ~]# cat /var/log/nginx/access.log-20250815 
xxx.xx.xx.xx - - [15/Aug/2025:05:52:27 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" "-"
  • ログローテート処理によってaccess.log-20250815が生成
  • 新しく空のaccess.logが生成された

参考

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?