web-dev-qa-db-ja.com

Linuxの循環ログ

FreeBSDには clog と呼ばれる循環ログファイルをサポートするユーティリティがあります。

これは、一部のサービス(systemdとそのジャーナルの外部)のログの保守を回避するために非常に興味深いものです。

Linuxやrsyslogで同じことをする代替手段はありますか?

5
Rfraile

both FreeBSD and Linux、およびその他のオペレーティングシステムには、ほとんど同じことを行うツールがあります。

自動的にローテーションされ、厳密にサイズが制限されたログを作成する

次のツールは、サイズが制限され、自動的にローテーションされ、オンデマンドで回転可能なログファイルセットを、指定されたディレクトリに保持します。

使い方は非常に簡単です。通常の方法で、ログに記録されるプロセスの標準出力と標準エラーをパイプを介して標準入力に送信します。

./記録するもの2>&1 | cyclogのログ/

cyclogは、TAI64Nタイムスタンプを標準で行に追加します。すでにタイムスタンプが付けられている場合のタイムスタンプなしの処理では、multilogs、s6-log、またはsvlogdのいずれかを使用します。各タイムスタンプの追加はデフォルト以外のオプションです。

Syslogの代替

あなたが指摘するものは、FreeBSD syslog自体を変更しており、2001年にリリースされたパッチで、今日はきれいに適用されない可能性があり、別の出力ファイルメカニズムを備えています。

別のアプローチは、最初にsyslogを使用する代わりに、syslogデーモンを完全に置き換えるだけでなく、標準エラーにログを記録するようにサービスを構成する(標準エラーをログサービスにパイプするサービス管理下で)のと同じです。

例:noshツールセットは、syslogのジョブを分割し、前述のロギングツールのいずれかの標準入力を介してフィードするのに適した出力を生成する、いくつかのそのような代替物を提供します。

  • klog-read という名前のシンプルなプログラムを実行して/proc/kmsgから読み取り、そのログストリームを標準エラーに書き込むだけのklogdサービス。
  • local-syslog-read という名前のプログラムを実行してsyslog-read(BSD上の/dev/log)からデータグラムを読み取る/run/logサービスそのログストリームを標準エラーに書き込みます。
  • 前述の udp-syslog-read プログラムを実行してUDP syslogポートをリッスンし、そのログストリームを標準エラーに書き込むだけのsyslog-readサービス。
  • 前述の local-priv-syslog-read プログラムを実行してsyslog-readからデータグラムを読み取り、そのログストリームを標準エラーに書き込むだけの/run/logprivサービス。

参考文献

6
JdeBP