2015/11/27日までに頑張ること

今週調べること

 

基本的に中井先生のサイトをパクリ

 

systemctl status systemd-journald.service

systemctl status rsyslog.service

RHEL7/CentOS7のデフォルトでは、「/var/run/log/journal」以下です。
ここは、OSを再起動すると消える領域なので、journaldは、直近の起動後のログのみを保存していることになります。

永続的にログを保存したい場合は、ディレクトリー「/var/log/journal」を作って再起動します。
このディレクトリーがあると、jounraldはこちらにログを保存します。

なお、「/var/run/log/jounral」「/var/log/journal」のどちらを使用する場合でも、無制限にログをためていくわけではありません。
保存用ディレクトリーの全容量に対して10%以上になるか、該当ディレクトリーのファイルシステムの空き容量が15%以下になると、
古いエントリーから順に削除されていきます。

保存容量を明示的に指定する場合は、
設定ファイル/etc/systemd/journald.confの「SystemMaxUse」(/var/log/journalの場合)と
「RuntimeMaxUse」(/var/run/log/journalの場合)に容量を指定します。
詳細は、journald.conf(5)のmanページを参照してください。

syslog宛のメッセージは、rsyslogdよりも先にjournaldが/dev/logから奪います。
その後で、rsyslogdがimjournalモジュールを使って、journaldから受け取ります。

/etc/rsyslog.conf

$ModLoad imjournal # provides access to the systemd journal
また、journaldは、syslogメッセージを受け取ると、その内容をパースして、送信元のPIDを見つけて、
該当PIDのプロセスの諸々の情報(メタデータ)を一緒に記録します。
そのため、各メッセージについて、「どのサービスが出力したメッセージなのか」なども把握しています。

すべてのログをlessにパイプして閲覧

# journalctl
・lessがいらないとき(-lをつけないと画面の右端でカットされる。)

# journalctl -l --no-pager
・特定サービスのログだけ見るとき

# journalctl -u hoge.service
メタデータを含めて全部見たいとき

# journalctl -u hoge.service -o json-pretty
・tail -f コマンドっぽく、ログの新規出力を観察したいとき

# journalctl -f
その他のオプションは、manページか、下記の資料を参考にしてください。

apacheの2.4.6のhttpd.serviceの中身の調査