0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

syslog, journalctl, docker logらへんをまとめる

Last updated at Posted at 2023-06-18

syslog

syslogとはシステムから出てくるアラートなどの情報をネットワークで転送したり、ログとしてファイル保存していく仕組み。

  • 稼働しているプログラムのログを、効率的に収集し記録するデーモンプロセスがsyslog。
  • ログは多くの場合、/var/logs 配下のファイルのそれぞれに残る。
  • さまざまなunit(=出力元)からログを集めてくる。$ systemctl list-units --all でunitを確認できる。
  • Rails のログをsyslogに出すためのロガーも存在する。
  • 現状ではsyslogは「rsyslog」という名称のサービスに改良されています。
  • 設定ファイルは「/etc/syslog.conf」もしくは「/etc/rsyslog.conf」となっている

journalctl

systemd によって集められたログは journalctl を使用することで表示できます。

  • ジャーナルは journald デーモンによって実装されている。
  • systemd サービスのみならず、カーネルやその他のソースからもメッセージを取得できる。

docker logs

Dockerが標準で提供するログ機能は、「docker run」コマンドで起動したプロセスによる標準出力および標準エラー出力内容を、コンテナを稼動させているホストのファイルシステム上に記録するというものだ。

コンテナを実行させる「docker run」コマンドでは、「-i」オプションおよび「-d」オプションでコンソールへの出力動作を変更できるようになっている。「-i」オプションを指定した場合はコンテナ内で標準出力に出力された内容が「docker run」コマンドを実行したコンソールにそのまま出力され、「-d」オプションを指定した場合コンテナはバックグラウンドで実行されてコンソールへの出力は行われなくなるのだが、このどちらの場合も標準出力に出力された内容と同じものがDockerデーモンに送られて記録されるようになっている。

まあ要はコンテナ内のsyslogからとってきているとかではなさそう。

dockerから出されたログは、ホストマシン内でjournalctlで sudo journalctl -u <コンテナ名>で取ることができる。

これは、docker runするとその時のdocker logsで得られる内容と同様のものを ホストマシンのsystemctlは、そのコンテナ名のunitとして保存しているから可能なのである。

Ref.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?