Red Hatのログファイルの管理と監視 – logrotateを使った自動管理をはじめよう

Red Hatのログファイルの管理と監視 – logrotateを使った自動管理をはじめよう

この記事では、Red Hat Enterprise Linux (RHEL) のシステムログ管理を効率化するための手法を説明します。logrotateを使った自動ログ管理の設定を中心に、日々の監視を簡単にする方法を紹介します。

前提条件

  • RHEL 8または9がインストールされている
  • rootまたはsudo権限を持つユーザーが利用可能

logrotateの概要

logrotateは、ログファイルのサイズや世代を管理するツールです。定期的にログを圧縮し、古いファイルを削除することで、ストレージ使用量を制御します。

logrotateのインストール確認

logrotateがインストールされているか確認します。

sudo dnf list installed logrotate

インストールされていない場合は、以下のコマンドでインストールします。

sudo dnf install logrotate -y

logrotateのデフォルト設定ファイル

デフォルト設定ファイルの場所は以下です。

/etc/logrotate.conf

現在の設定を確認します。

cat /etc/logrotate.conf

ログディレクトリの設定

特定のログディレクトリに対する設定を行います。例として、`/var/log/myapp/`を追加します。

sudo nano /etc/logrotate.d/myapp

設定例:

/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root root
}

logrotateのスケジュール確認

logrotateはcronにより実行されます。スケジュールを確認します。

cat /etc/cron.daily/logrotate

手動でlogrotateを実行

設定をテストするため、手動でlogrotateを実行します。

sudo logrotate -f /etc/logrotate.conf

特定ログの監視設定

アプリケーションログなど、特定のログファイルの管理を追加します。以下の設定例はApacheログ用です。

sudo nano /etc/logrotate.d/httpd

設定例:

/var/log/httpd/*log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
sharedscripts
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}

ログの圧縮オプション

ログ圧縮に使用する形式を指定します。例: bzip2

compresscmd /usr/bin/bzip2
uncompresscmd /usr/bin/bunzip2

古いログファイルの削除

古いログを自動で削除する世代数を設定します。

rotate 7

この設定で、8世代目以降のログが削除されます。

エラーログの確認

logrotate実行時にエラーが発生した場合、以下を確認します。

sudo cat /var/log/messages | grep logrotate

logrotateのデバッグモード

設定の問題を確認するためにデバッグモードを使用します。

sudo logrotate -d /etc/logrotate.conf

システム全体のログ管理

すべてのシステムログを管理するには、デフォルト設定ファイルを活用します。

sudo nano /etc/logrotate.conf

例: 圧縮形式や通知設定を変更

compress
mail root

logrotateのステータス確認

どのログが最近ローテーションされたか確認します。

sudo cat /var/lib/logrotate/status

トラブルシューティング

問題が発生した場合は、以下を確認します。

  • 設定ファイルにエラーがないか確認
  • cronが正常に動作しているか確認
  • 対象ログファイルが存在するか確認