tanke25616429のアウトプット

IT技術の基本を勉強したことをアウトプットします。Linux、Kubernetes、クラウド中心です。百番煎じくらいだけど誰かの役に立てばそれはそれでうれしい。

Linuxのログ

動機

Linuxには/var/log配下のログ(/var/log/messages等)があったり、journalctlコマンドで見られるログがあったり、rsyslogdというデーモンプロセスがあったりするが、その辺の理解が曖昧だったのでメモする。

rsyslog

SyslogはSystem Logging Protocolの略で、システムログまたはイベントメッセージをSyslogサーバーと呼ばれる特定のサーバーに送信するために使用される標準プロトコル。rsyslogは多くのLinuxディストリビューションで採用されているsyslogサービスのこと。

journaldとjournalctl

journaldは、各ソースからログを受信し、メモリ上のログデータベース(/run/log/journal/配下)に蓄積する。メモリ上なのでOSをシャットダウンするとデータが消失する*1。rsyslogにログを転送してファイルへログを出力する。

journalctlはログデータベースを参照するコマンド。

/var/log/messages

/var/log/messagesファイルは、システムに関する一般的なメッセージが格納される(ユーザの認証情報や各種アプリケーションに関するメッセージなど)。記述されるメッセージはsyslogで設定できる(rsyslogを使っていればrsyslogで設定)。/var/logディレクトリには、さまざまなログファイルが格納されており(例./var/log/audit/audit.log、/var/log/cron等)、単にその中の一種である。アプリケーション*2で特に設定していない場合、デフォルトで/var/log/messagesに記録するようになっている、と考えればいいと思う。

logを出力するコマンドloggerで何も指定せずに実行すると、/var/log/messagesに記録されていることがわかる。

f:id:tanke25616429:20210925104748p:plain
logger実行例

参考にしたもの

knowledge.sakura.ad.jp

blog.a-know.me

densan-hoshigumi.com

www.jtc-i.co.jp

linuc.org

atmarkit.itmedia.co.jp

*1:デフォルト設定では。設定を変更することでログデータベースの永続化も可能。

*2:Linuxをインストールした際にプリインストールされているアプリを含む。