※当サイトの記事には、広告・プロモーションが含まれます。

Dockerのlogging driverでsyslogを選択した場合、実質rsyslog、logrotateの設定ファイルの追加が必要な話

gigazine.net

WordPressの開発プロジェクトであるWordPress.orgは、2024年9月25日にWP Engineからのアクセスをブロックしました。新たに、WP EngineがWordPress.orgへのアクセス権回復を求める申立書を裁判所に提出したことが明らかになりました。

WP EngineがWordPress.orgへのアクセス権回復を求めて裁判所に申立書を提出 - GIGAZINE

WP Engineは2010年に設立された企業で、WordPressホスティングサービスを主な事業として活動しています。ところが、2024年9月にWordPressの開発者であるマット・マレンウェッグ氏が「WP EngineはWordPressを用いて収益を得ているにもかかわらず、WordPressの開発にほとんど貢献していない」と主張し、WordPress.orgの公式ブログにも同様の意見を含む記事を掲載しました。

WP EngineがWordPress.orgへのアクセス権回復を求めて裁判所に申立書を提出 - GIGAZINE

⇧ まぁ、お金の問題になりますわな...

Dockerのlogging driverとは

Dockerの公式のドキュメントによると、

docs.docker.com

Configure logging drivers

Docker includes multiple logging mechanisms to help you get information from running containers and services. These mechanisms are called logging drivers. Each Docker daemon has a default logging driver, which each container uses unless you configure it to use a different logging driver, or log driver for short.

https://docs.docker.com/engine/logging/configure/

⇧ とありますと。

ts0818.hatenablog.com

⇧ 上記の記事の時に触れておりますが、

Supported logging drivers

The following logging drivers are supported. See the link to each driver's documentation for its configurable options, if applicable. If you are using logging driver plugins, you may see more options.

https://docs.docker.com/engine/logging/configure/

⇧ Docker側で用意されている「logging driver」としては上記のものがありますと。

ちなみに、

grafana.com

⇧「logging driver」を用意しているサービスもあるので、最早、どれだけの「logging driver」が存在するのかカオスな状態となっていそうな気がする...

「logging driver」に「fluentd」を指定した場合、

⇧ 上記にあるように、「fluent-bit」も利用できるらしく、収拾が付かない...

syslogとは

Wikipediaによると、

syslogシスログ)は、ログメッセージIPネットワーク上で転送するための標準規格である。"syslog" という用語は、その通信プロトコルを指すだけでなく、syslog メッセージを送信するシステム(アプリケーションやライブラリ)syslog メッセージを受信し報告・分析するシステムに対しても使われる。

syslog - Wikipedia

syslogの各メッセージには、そのメッセージを生成したシステムの種類を示すファシリティコードが付与され、重大度が設定される

syslog - Wikipedia

syslogの実装は、多くのオペレーティングシステムで行われている。 

syslog - Wikipedia

ネットワーク上で動作する場合、syslogはクライアントサーバモデルを採用している。受信側(サーバ)は一般に"syslogd"、"syslogデーモン"、"syslogサーバ" などと呼ばれる。クライアントは1024バイト以下の短いテキストメッセージをサーバに送信する。

syslog - Wikipedia

syslogメッセージはUDPまたはTCP上で送信される。送信されるデータは一般にクリアテキストであるが、Stunnel、sslio、sslwrap といった SSL ラッパーを使って SSL/TLS による暗号化が可能である。

syslog - Wikipedia

⇧ とありますと。

歴史

syslogは、1980年代にエリック・オールマンによってsendmailプロジェクトの一環として開発された

syslog - Wikipedia

以降、他のアプリケーションでも採用されるようになり、現在ではUnix系システムの標準的なログ記録方式となっている

syslog - Wikipedia

その他のOSでも実装されており、ルータなどのネットワーク機器にもよく搭載されている

syslog - Wikipedia

長らくデファクトスタンダードであって、何らかの規格があるわけではなく、個々の実装には非互換も存在していた。セキュリティ強化のため、IETFはsyslogワーキンググループを結成した。2001年、syslogの現状をまとめて文書化したRFC 3164が発表された。その後、2009年にRFC 5424で標準化された。

syslog - Wikipedia

様々な企業が、syslogの実装について特許を主張しようとしたがプロトコルの利用と標準化にはあまり影響を及ぼさなかった。

syslog - Wikipedia

⇧ 標準化されるまでに、ほぼ30年ぐらいかかってるのか...

rsyslogとは

Wikipediaによると、

Rsyslog is an open-source software utility used on UNIX and Unix-like computer systems for forwarding log messages in an IP network. It implements the basic syslog protocol, extends it with content-based filtering, rich filtering capabilities, queued operations to handle offline outputs, support for different module outputs, flexible configuration options and adds features such as using TCP for transport.

https://en.wikipedia.org/wiki/Rsyslog

The official RSYSLOG website defines the utility as "the rocket-fast system for log processing".

https://en.wikipedia.org/wiki/Rsyslog

⇧「syslog」をベースにしているらしい。

Protocol

Rsyslog uses the standard BSD syslog protocol, specified in RFC 3164. As the text of RFC 3164 is an informational description and not a standard, various incompatible extensions of it emerged. Rsyslog supports many of these extensions. The format of relayed messages can be customized.

https://en.wikipedia.org/wiki/Rsyslog

⇧「syslog」の「RFC 3164」が標準になる前のものだったらしく、互換性の無い拡張機能が乱立した地獄のような状況だったみたいね...

History

The rsyslog project began in 2004, when Rainer Gerhards, the primary author of rsyslog, decided to write a new strong syslog daemon to compete with syslog-ng, because, according to the author, "A new major player will prevent monocultures and provide a rich freedom of choice."

Rainer Gerhards worked on rsyslog inside his own company, Adiscon GmbH.

https://en.wikipedia.org/wiki/Rsyslog

⇧「syslog」の開発が、1980年にスタートだったようなので、24年を経てスタートしたということですか。

Dockerのlogging driverでsyslogを選択した場合、実質rsyslogの設定ファイルの追加が必要な話

で、

docs.docker.com

⇧ 公式のドキュメントを見ても、「ログローテーション」などについて、どうすべきなのか言及が無いという...

docs.docker.com

⇧ 上記で、少しだけ、「ログローテーション」に触れてはいるものの、何故か、Dockerにおける「ログローテーション」についての参照先のリンクは無いという...

ネット上の情報によりますと、

blog.ikappio.com

設定することは、

  • dockerで稼働するサービスでロギングドライバを変更する
  • ホスト側でrsyslogの設定ファイルを追加する
  • ホスト側でlogrotateの設定ファイルを追加する

の3つ。

Dockerのログをホストのrsyslogに溜める | ikapblog

⇧ 上記サイト様によりますと、「logging driver」以外にも、設定が諸々、必要ということが分かる。

何と言うか、Dockerの公式のドキュメントで説明しておいて欲しいですな...

「rsyslog」の設定については、

qiita.com

⇧ 上記サイト様が詳しいです。

ちなみに、

qiita.com

note.com

tex2e.github.io

⇧ 上記サイト様によりますと、

/etc/rsyslog.d/*.conf   

⇧「/etc/rsyslog.d」ディレクトリ配下であれば、設定ファイルの名前は何でも良さそうなのかね?

linuc.org

⇧ 設定ファイルが読み込まれる優先順位が分からん...

stackoverflowによると、

stackoverflow.com

⇧ まさかのアルファベット順...

本当に?

www.rsyslog.com

Note: if multiple files are included, they are processed in ascending sort order of the file name. We use the “glob()” C library function for obtaining the sorted list. On most platforms, especially Linux, this means the sort order is the same as for bash.

https://www.rsyslog.com/doc/configuration/global/options/rsconf1_includeconfig.html

⇧ う~む、「C言語」のライブラリの「glob()」関数のソート順ということらしいのだけど、「C言語」が読めないからな...

OpenBSD」のマニュアルだと、

man.openbsd.org

⇧ とあって、デフォルトだと

By default, the pathnames are sorted in ascending ASCII order

となっているから、「アルファベットの昇順」になるんかね?

毎度モヤモヤ感が半端ない…

今回はこのへんで。