web-dev-qa-db-ja.com

/ optパッケージはどこにログを書き込む必要がありますか?

カスタムパッケージを/opt/package_nameにインストールし、構成ファイルを/etc/opt/package_nameに、静的ファイルを/var/opt/package_name/static/に保存しています。すべてFHSの推奨する規則に従っています。 [ 1 ] [ 2 ] []

いくつかのログファイルも保存する必要があります。分析ツールで見つけられるようにしたいので、従来の場所にも置く必要があります。これらが入る必要があります:

  • /var/log/package_name(これはカスタムパッケージですが、システムパッケージのように)
  • /var/opt/package_name/log/var/opt規約に従いますが、これは発見可能ですか?)
  • 他に何か?
13
david.libremone

/var/log/package_nameに配置します。 /var/opt/package_name/logよりも驚きを最小限に抑えるという原則を満たしています。これについての引用はありません。ログを探す場所と一致します。

また、独自のログファイルを作成することを控え、適切なタグとファシリティを使用してsyslogにログを記録することもできます。確立された分析ツールとの完全な統合を探している場合、私は通信チャネルに対してもっとうまくできるとは思えません。

  • リストされた機能として「ログ分析」を備えたすべての汎用ツールは、すでにsyslogを監視しています。
  • ログファイルのリリースとローテーションのセマンティクスは私が処理します。ファイルを手放して新しいファイルを開くように指示するlogrotateのメカニズムを設定する必要はありません。ローテーションする新しいファイルについてlogrotateに通知する必要さえありません!
  • 中央のログサーバーへのログのオフロードは、サイトで要求された場合に処理されます。 rsyslogなどの既存の確立されたツールが必要に応じて使用されるため、その機能を自分で実装することを考える必要はありません。
  • ログファイルの周りのアクセス制御(POSIXやSELinuxなど)はすでに処理されているため、ディストリビューション固有のセキュリティセマンティクスにそれほど注意を払う必要はありません。

ログにカスタムバイナリ形式を使用している場合を除いて、それでも、JSONのような、syslogに適した機械で解析可能なテキスト形式を好みます。自分の個別のログファイルを正当化するのに苦労しています。分析ツールはすでにタカのようにsyslogを監視しています。

19
Michael Mol

パッケージ構成ファイルのFHS規則に従っているので、一貫性があり、ログファイルを/var/opt/package_name/logに保存する必要があります。

FHSは次のように述べています。

/ opt内のパッケージの変数データをインストールする必要があります/ var/opt /内

また、状態

/ opt、/ var/opt、/ etc/opt hierarchies以外のパッケージファイルは、が正しく機能するためには、ファイルシステムツリー内の特定の場所に存在する必要があります。たとえば、デバイスロックファイルは/ var/lockに配置し、デバイスは/ devに配置する必要があります。

/var/optの下にログファイルがあっても、パッケージが正しく機能するのを妨げないため、代わりに/var/logを使用すると、標準に明らかに違反します。

「これは発見可能ですか」という意味がわかりません。カスタムログはとにかくカスタムツールによって処理される可能性が高いので、汎用ツールがそれらを処理するように設計されていると想定すると、バンドルされていないパッケージの標準の場所を探索する必要があります。

syslogは、ログ構成を集中化および調整するための便利な機能ですが、既知のパスを持つプレーンファイルにログを保存する必要がある場合、ログの保存場所に関する問題を完全には解決しないことに注意してください。アプリケーションログディレクトリに保存されているファイルの中には、アプリケーション自体または関連するプログラムから期待されるパスを使用してアクセスできるように設計されているものがあります。たとえば、プロセスIDを保存するファイルは、syslogが機能しません。

8
jlliagre