Nginx-TOmcatなどのメンテナンス常用サービスのログ分割-logrotate

7841 ワード

Nginx-TOmcatなどのメンテナンス常用サービスのログ分割-logrotate
目次

  • 一、Nginx-TOmcat等の常用サービスログ分析
  • Nginxログ
  • Tomcatログ
  • MongoDBログ
  • Redisログ
  • 二、ログカットサービスlogrotate
  • 三、ログカット例
  • Nginx切一切
  • Tomcat切一切

  • 記事GitHubアドレス:運用次元の一般的なアプリケーションのログ分割
    一、Nginx-TOmcatなどの常用サービスログ分析
    実際の生産では、どのアプリケーションのログが自動的に分割されるか知っていますか?サービスによるタイミング分割が必要なアプリケーション・ログはどれですか?次に見てみましょう.
    比較の基準
  • 自動切断しますか?
  • 再起動は自動的に分割されますか?

  • Nginxログ
    ログ名
    ログの説明
    自動切断
    タイミングカットが必要かどうか
    access.log
    Nginxアクセスログ
    いいえ
    はい
    error.log
    Nginxエラーログ
    いいえ
    はい
    サイトログを個別に構成する必要がある場合はserverモジュールに追加する必要があるaccess_log logs/djx.log ;Tomcatログ
    ログ名
    ログの説明
    自動切断
    タイミングカットが必要かどうか
    catalina.out
    Tomcatランタイムログとコンソールログへの出力(適用)
    いいえ
    はい
    catalina.2019-04-28.log
    Tomcat自体が実行するログは、主に起動と一時停止です.
    はい
    いいえ
    localhost_access_log.2019-04-28.txt
    Tomcatのログにアクセスして、時間と資源を要求して、状態コードはすべて記録があります
    はい
    いいえ
    localhost.2019-04-28.log
    アプリケーション初期化(listener,filter,servlet)未処理の例外が最後にTomcatによってキャプチャされて出力されるログ
    はい
    いいえ
    host-manager.2019-04-28.log
    Tomcatの持参したHost Managerプロジェクトのログ情報を入れる
    はい
    いいえ
    manager.2019-04-28.log
    Tomcatには、Managerプロジェクト固有のログファイルが付属しています
    はい
    いいえ
    Tomcatのログはとても面白くて、私も真剣に見てやっとその中の奥義を発見しました.
    重点を置いた
    Tomcatのcatalina.outログは自動的に切断されないので、タイミング的に切断する必要があります.Tomcatを再起動しても自動的に切断されません.
    他のログTomcatは自動的に切断されますが、ログは翌日切断され、ログが切断され、再起動すると切断されます.
  • デイリーカット:ログが24.00分に切断されるという意味で、00:00:10にその日の最初のログが発生した場合はカットします.
  • ログがある場合のみカット:翌日の要求を満たしているが、翌日までログが発生していない場合は、翌日の最初のログが発生するまでカットするという意味です.
  • 切断再開:上記の条件が満たされていなければ翌日になっても1つのログが生成されない場合、Tomcatの再起動時に切断が行われるという意味です.

  • 上の内容は少し回りますが、いくつかの例を挙げて理解します.
    例1:
        Tomcat   2019   4  28 15.30    ,      catalina.2019-04-28.log  。2019   4 29         2019   4 29 9.30 。           ?
    
    ​               2019   4 29 9.30 。

    例2:
            Tomcat   2019   4  28 10.30    ,      catalina.2019-04-28.log  。  2019   4 29 3.30     Tomcat  ,      ,Tomcat  2019   4 29 3.30           ,    2019   4 29  3.50      。           ?
    
    ​       Tomcat            。

    MongoDBログ
    MongoDBのログは普段はあまり注目されていませんが、こちらでは記録をします.
    MongoDBのログが切断されるかどうかは、MongoDBの構成パラメータによって異なります.
    logRotate= rename/reopen
        #3.0.0      。      rename   reopen:
            rename        。             。
            reopen       Linux/Unix                  。   reopen                 Linux/Unix logrotate    ,        。
                 reopen,       logappend
    logappend= true #   MongoDB        ,                   。       ,MongoDB              。

    ただし、MongoDBのログはデフォルトでは切断されません(再起動しなければ).MongoDBログカット記事参照:MongoDBログカット3方式
    Redisログ
    Redisログのデフォルトも切断されず、再起動しても切断されません.Redisログは実際の環境でも切断を推奨しており、切断頻度を低減することができます.あるRedisログが1 Gに達し、2年間実行されているのを見て、ログを検索するのは不便なので、Redisのログもカットすることをお勧めします.
    二、ログカットサービスlogrotate
    通常、対応するログカットサービスを探していますが、システムのデフォルトがログ付きのカットサービスをデフォルトで持っていることを知りませんlogrotate.私たちのシステムのログ/var/log/cron/var/log/maillog/var/log/messagesなどはすべてlogrotateによってカットされているので、ファイル/etc/logrotate.d/syslog具体的な構成を見ることができます.logrotate毎日または毎月周期的にログを自動カット・圧縮し、メールで送信することができます.logrotateのオートカットはcrondでタスクを実行します.
    logrotate公式リンク
    logrotateコマンドおよびオプション
    logrotate [OPTION...] 
     -d, --debug  #      ,       。                  。
     -f, --force  #       
     -m, --mail=command   #          ,   /bin/mail
     -s, --state=statefile #           ,      /var/lib/logrotate.status 。
     -v, --verbose  #    logrotate     
     -l, --log=STRING #          
     --version #       

    logrotateプロファイルパスlogrotateプロファイルの場所は/etc/logrotate.conflogrotateユーザプロファイルがある/etc/logrotate.d/logrotateの実行状態ファイル/var/lib/logrotate.statuslogrotateプロファイルのパラメータ:
    su djx  djx  #           ,   root。         ,     。
    compress #     gzip           , xxx.log-20131216.gz ;       ,     
    compresscmd #        ,   gzip
    uncompresscmd #                   gunzip
    compressext  #         ,   gzip        .gz。
    copy  #          , create    。
    copytruncate #             ,          ;          ,             ,           。 create    。
    create mode owner group #     ,        ,                。
    dateext    #        !               YYYYMMDD     , xxx.log-20131216  ,     ,          ,      xxx.log-1    
    dateformat format_string #             
    ifempty #             ,       。  notifempty   
    notifempty  #         ,     ,  ifempty   
    mailfirst  #          ,         
    maillast  #         ,         ,(    )
    rotate count  #        ,          ,               。     200 ,        180   ,     20   。           daily,         ,      180   。
    maxage count #      count     ,      mail        。
    daily   #      
    weekly  #       ,         。
    monthly      #         ,          。
    yearly   #                ,      
    nocompress   #      。 
    size size  #            
    olddir dir  #         
    start count  #           ,         ,     1    。          。
    missingok   #       ,            
    mail  [email protected] #      rotate      ,    rotate     ,      ,             。
    prerotate       #  logrotate           
    postrotate      #  logrotate           
    
    ###  3.85           
    hourly #       

    構成例
    #      ,       。
    /opt/tomcat/logs/catalina.out{
    compress 
    compressext .gz
    copytruncate
    dateext
    notifempty
    maillast
    rotate 180 
    daily
    size 10M
    olddir /opt/logs/tomcat
    missingok
    mail [email protected] #                            。
    }

    共通コマンド
    logrotate -d -f /etc/logrotate.d/tomcat  #             
    logrotate  -f /etc/logrotate.d/tomcat  #       ,                   

    注意事項:
  • ログを日単位でカットするように設定した場合、具体的な実行時間はいつですか?24.00で切断されるとは思わないでください.切断される時間はランダムです.このランダム値はcrondサービスに依存し、最終的にはファイルに依存する/etc/anacrontab
    [root@localhost ~]# cat /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
    
    タイミングタスクは3-22時の5分-45分にログカットが行われることがわかります.
  • 本番環境でどのようにタイミングログを分割するか実際の本番環境では、通常、日次ログ分割を行います.つまり、前日のログ分割を24.00で行いたいと考えています.crondサービスでタイミングカット(logrotate-f/etc/logrotate.d/tomcat)を行います.しかし、多くのアプリケーションでは、24.00で実行されるタイミングタスクがあります.その時間帯には大量のログが発生します.もし私たちがこの時点で切断すると、より多くの重要なログが失われる可能性があります(そして、この時点ではタスクが多く、リソースの消費が多く、切断も遅い)、まず開発に問い合わせることをお勧めします.24.00に大量のタイミングタスクがあるかどうか、24.00の数分前か数分後に切断することができます.これにより、大量のログの損失を回避できます.

  • 三、ログカットの例
    Nginxすべてを切る
    例:Nginxログ保存/opt/nginx/logs/、ログを含むaccess.logおよびerror.log.
    /opt/nginx/logs/* {
    compress 
    compressext .gz
    copytruncate
    dateext
    notifempty
    maillast
    rotate 180 
    daily
    size 10M
    olddir /opt/logs/nginx
    missingok
    mail [email protected] #                            。
    }

    Tomcatはすべてを切る
    例:Tomcatログが保存されている/opt/tomcat/logs/ログが含まれているcatalina.out他のログは自動的にカットされます.
    /opt/tomcat/logs/catalina.out{
    compress 
    compressext .gz
    copytruncate
    dateext
    notifempty
    maillast
    rotate 180 
    daily
    size 10M
    olddir /opt/logs/tomcat
    missingok
    mail [email protected] #                            。
    }