web-dev-qa-db-ja.com

Webサーバーのログアーカイブのベストプラクティス(Linux + Nginx)

すべてのWebサーバーログを保存/アーカイブしたいのですが、logrotateで削除したくないのです。これに対して推奨されるアプローチは何でしょうか?これは、Nginxを実行しているLinuxボックスです。前もって感謝します。

(私はcronologを使用したいのですが、Nginxがロギングを処理する方法のため、Nginxではうまくいかないようです。)

2
user11480

Logrotateでそれを行い、あなたが望むものを伝えてください...

/var/log/nginx/*.log {
    daily
    dateext
    missingok
    rotate 7305 # 2 decades
    olddir /var/log/nginx/old
    compress
    delaycompress
    notifempty
    create 644 nginx root
    sharedscripts
    postrotate
      if [ -f /var/run/nginx.pid ]; then
        kill -USR1 `cat /var/run/nginx.pid`
      fi
    endscript
}

私はnginxを使用していないので、postrotateで見つけた例を使用しました...すでにlogrotateスクリプトがある場合は、それを変更することから始めます。

重要な部分:

  • 「毎日」とは毎日を意味します。毎週またはサイズベースで行うことができますが、それは「dateext」とそれほどきれいに相互作用しません。
  • 「dateext」は、ローテーションされたログファイルに、単純な番号ではなく、日付に基づいた名前を付けることを意味します。そうすれば、毎日すべてのログファイルの名前を変更する必要はありませんそしてファイルの名前からログファイルの日付を知ることができます
  • 「回転7305」-これは20年です。多かれ少なかれ維持してください... logrotateは本当にある種の引退を好むが、それをばかげて高く設定することができます。
  • 「olddir」は同じファイルシステム上にある必要がありますが、ログは別のdirに保持されるため、何が起こっているのかを把握できます。
  • 「delaycompress」と「create」は、それが動作したくないソフトウェアで動作することを確認するのに役立ちます
7
freiheit