【シェルスクリプト】apacheのrotatelogsとシェルスクリプトでログ管理をする【運用】

お疲れ様です。
rotatelogsでapacheのログを出力している環境でログを管理する必要があったので、忘備録として残しておきます。

背景

CustomLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/access_log.%Y%m%d%H 14400 540" combined  env=!no_log
ErrorLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/error_log.%Y%m%d 86400 540"

apacheに標準でついてくるrotatelogsでログが世代管理されている前提でですね、
2週間経過したログは削除、1日経過したログは圧縮するスクリプトを作ってcronに登録してみます。

スクリプトの作成

vi /usr/local/bin/apache_accesslog_compress.sh
====================================================================
#!/bin/sh
#ディレクトリを移動する
cd /usr/local/apache2/logs
#14日経過したログを削除する
find ./ -name 'access_log.*' -mtime +13 -daystart -exec rm {} \;
#1日経過したログを圧縮する
find ./ -name 'access_log.*' -mtime +0 -daystart  -exec gzip {} \;
====================================================================

findコマンドの-daystartは
コマンドを実行した日の00:00を-mtimeの基準とするオプションです。

cronへの登録

crontab -e
=======================================================
00 04 * * * /usr/local/bin/apache_accesslog_compress.sh
=======================================================

投稿者: snk

保有資格 ・TOEIC 835 ・LPIC 304 ・AWS SAA/SAP ・GCP PCA ・IPA SC

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です