スクリプト分割ログを拒否し、Logrotateから開始


定期的にログを圧縮したり、ログが一定サイズを超えると自動的に2つのファイルに分裂したりするなど、ログを管理する必要があるかもしれません.以前はプログラムに付属していたログカット機能を実現していましたが、例えばapacheでは、この機能を付属していないプログラムはスクリプトを書いてタイミングタスクの中で実行していましたが、Linuxが付属しているlogrotateコマンドでこのような機能を実現できることに気づき、今日は皆さんと一緒にこの非常に便利なツールを検討してみました.
概要
logrotateユーティリティは、システム上のログファイルの管理を簡素化し、大量のログファイルを生成することを目的としています.Logrotateでは、自動ローテーション圧縮、ログファイルの削除、郵送が可能になります.ログファイルは、毎日、毎週、毎月、またはログファイルが特定のサイズに達したときに処理するように設定できます.
インストール方法
yum -y install logrotate

使用方法の説明
logrotateのプロファイルは/etc/logrotateです.一方/etc/logrotate.d/は、他のプロファイルを格納するディレクトリです.このディレクトリのすべてのファイルはアクティブに/etc/logrotateに読み込まれます.confで実行します.
vim /etc/logrotate.conf
weekly
rotate 4
create
dateext
include /etc/logrotate.d

ls /etc/logrotate.d/
ConsoleKit  dracut  exim  iscsiuiolog  nginx  php-fpm  ppp  syslog  yum

vim /etc/logrotate.d/nginx
/var/log/nginx/*log {     # nginx       ,            
    daily    #         
    rotate 10    #    10     。   11     ,               
    missingok    #       ,        ,  “      ”     
    notifempty    #        ,     
    compress    #        ,         gzip    
    sharedscripts    #  postrotate  ,                    。        ,                 
    postrotate     #          ,postrotate endscript           。      ,rsyslogd                 
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
    endscript
}

daily:ログファイルは天輪でweekly:ログファイルは周輪でmonthly:ログファイルは月輪でnocompress:圧縮する必要がない場合、このパラメータcopytruncate:まだ開いているログファイルで、現在のログをnocopytruncateバックアップして遮断します:ログファイルをバックアップしますがcreate mode owner group:ダンプファイルを遮断しません.指定したファイルモードを使用して新しいログファイルnocreateを作成する:新しいログファイルdelaympressとcompressを一緒に使用しない場合、ダンプされたログファイルは次のダンプ時に圧縮されます.nodelaympressはdelaympressオプションを上書きし、ダンプは同時に圧縮されます.size sizeログファイルが指定のサイズに達するまでダンプされず、sizeはbytes(デフォルト)およびKB(sizek)またはMB(sizem)を指定することができる.Dateext:定義ログファイル接尾辞は日付フォーマット、すなわち切断後ファイルはxxx.log-20160402.gzのようなフォーマットです.このパラメータが注釈されると、切断は数値的に増加する、すなわち前述のxxxである.log-1このフォーマットdelaycompress:常にcompressオプションとともに使用され、delaycompressオプションはlogrotateが最近のアーカイブを圧縮しないことを示し、圧縮は次のサイクルで行われます.これは、create 640 nginx adm:指定した権限と本のプロパティで、新しいログファイルを作成し、logrotateも元のログファイルの名前を変更します.rotate countログファイルの削除前にダンプした回数を指定します.0はバックアップなし、5は5つのバックアップを保持します.
切断時間の設定
logrotateのカット時間のデフォルトは/etc/anacrontabで設定されていますが、START_HOURS_RANGEは、構成されたlogrotateの実行時間です.
vim /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

一般的にスクリプトを使用するのは、ログを切断するコマンドを実行した後、nginxをスムーズに再起動することです.すなわち、reloadの下に新しい方法があります.テスト環境でテストが完了した後、本番環境の変更を行い、環境や構成によっては、違いに応じてnginxのメインプロセスにUSR 1信号を送信し、ログファイルを再開してください.そうでなければmv後のファイルにデータを書き続けます.なぜなら、linuxシステムでは、カーネルはファイル記述子に基づいてファイルを探しているからです.そうしないとログの切断に失敗します.kill -USR1 `ps axu | grep "nginx: master process"| grep -v grep | awk '{print $2}'`