システムのログは、そのままにしていると増え続けてディスクスペースを消費してしまいますが、それを防ぐためにログをローテートする仕組みがあります。その設定方法、設定内容をまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
システムログが保存されているディレクトリ/var/logを見てみると下記のように末尾に一週間おきの日付がついているファイルがあります。
cron-20140105、cron-20140112、cron-20140119、cron-20140126
maillog-20140105、maillog-20140112、maillog-20140119、maillog-20140126
messages-20140105、messages-20140112、messages-20140119、messages-20140126
secure-20140105、secure-20140112、secure-20140119、secure-20140126
spooler-20140105、spooler-20140112、spooler-20140119、spooler-20140126
これがローテートの仕組みによって処理されたログファイルです。
2)ログローテートを行っているのは?
ログローテートの機能は、”logrotate”というRPMパッケージによって提供されています。
そして、下記実行ファイル、設定ファイルによって構成されています。
・実行ファイル
/usr/sbin/logrotate
・全体設定ファイル
/etc/logrotate.conf
・ローテート対象のログ設定ファイル
/etc/logrotate.dディレクトリ内で設定
3)ローテート対象のログは?
/etc/logrotate.dディレクトリ内で指定します。
私の環境では下記ファイルが存在しています。
aide dracut httpd ppp syslog wpa_supplicant yum
例えばシステムログのローテートは、syslogというファイルで設定されていて下記のように記述されています。
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
①/etc/logrotate.conf
このファイルでは、あらゆるログファイルに適用するグローバルオプションを定義します。
②/etc/logrotate.d/ディレクトリ内の設定ファイル
特定ログファイル用の個別の設定ファイルを作成して、そこに設定オプションを定義します。
このファイルで設定された内容は/etc/logrotate.conf内のグローバルオプションの設定を上書きします。
2)設定項目
①デフォルト
下記のように/etc/logrotate.confのデフォルトでは、週ごと4世代のローテートで設定されています。
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
②ローテートの間隔
・daily、weekly、monthly、yearlyで指定。
③ローテートしたログファイルの圧縮に関する設定
・compress:圧縮を有効にする
・nocompress:圧縮を無効にする
・compresscmd:圧縮に使用するコマンドを指定。
・uncompresscmd:解凍に使用するコマンドを指定。
・compressext:圧縮に使用する拡張子を指定。
・compressoptions:使用される圧縮プログラムに渡すオプションを指定。
・delaycompress:ログファイルの圧縮を次回のログファイルのローテーションまで延期する。
④ローテートの回数
・rotate 回数
ログファイルが削除されるか特定のアドレスにメール送信されるまでに、ログファイルが受けるローテーションの回数を指定。
0の値が指定されると、古いログファイルはローテートされる代わりに削除される。
⑤メール送信
・mail アドレス
rotate指示文で指定された回数ローテートされたログファイルを指定したアドレスへメール送信。
・nomail
・mailfirst
間もなく期限切れになるログファイルではなく、ローテートされたばかりのログファイルがメール送信されるよう指定。
・maillast
ローテートされたばかりのログファイルではなく、間もなく期限切れになるログファイルがメール送信されるよう指定。mailが有効の場合は、これがデフォルトのオプション。
デフォルトでは、/etc/cron.daily/ディレクトリ内にlogrotateというファイルが登録されていて下記のように記述されています。
#!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限