18
10

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 3 years have passed since last update.

journaldってなに?

Posted at

勉強前イメージ

serviceコマンドでミドルウェアの起動に失敗したときに出てくるイメージ
systemdとかのログをになってるのかな?

調査

journaldとは?

正式名称は systemd-journald.service
systemdの環境で標準的に提供されるログ管理のサービスになります。

以下のようにsystemdのデーモンプロセスとして稼働しています。

[root@localhost ~]# systemctl status systemd-journald.service
● systemd-journald.service - Journal Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled)
   Active: active (running) since 火 2020-12-08 12:13:43 JST; 1 day 8h ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 18223 (systemd-journal)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-journald.service
           └─18223 /usr/lib/systemd/systemd-journald

12月 08 12:13:43 localhost.localdomain systemd-journal[18223]: Runtime journal is using 80.0M (max …M).
12月 08 12:13:43 localhost.localdomain systemd-journal[18223]: Journal started
Hint: Some lines were ellipsized, use -l to show in full.

CentOS7の環境には journaldの他、CentOS7より前から使用されている rsyslog も稼働しています
/var/log/messages などはrsyslogが管理し、
その他のプロセスやサービスのログは独自のDBに保存しています。

流れとしては以下の画像のように、
systemdユニットプロセスやその他の一般プロセスのログをjournaldに収集し、
syslogメッセージはrsyslogにも転送されます。

journaldUntitled Diagram.drawio - diagrams.net - Google Ch.png

rsyslogに関しても、以下のようにjournaldと同様 systemdのデーモンプロセスとして動いています。

[root@localhost ~]# systemctl status rsyslog.service
● rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2020-11-30 21:32:01 JST; 1 weeks 1 days ago
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
 Main PID: 1130 (rsyslogd)
   CGroup: /system.slice/rsyslog.service
           └─1130 /usr/sbin/rsyslogd -n

12月 02 09:04:31 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 02 10:28:05 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 02 12:27:05 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 02 12:51:13 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 02 14:38:01 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 02 16:08:43 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 03 10:32:01 localhost.localdomain rsyslogd[1130]:  [origin software="rsyslogd" swVersion="8.2...ed
12月 03 19:11:22 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 03 19:49:26 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
12月 08 12:13:43 localhost.localdomain rsyslogd[1130]: imjournal: journal reloaded... [v8.24.0-52.... ]
Hint: Some lines were ellipsized, use -l to show in full.

journaldのログを見るためには・・・?

  • ファイルを見る

CentOS7のデフォルトでは /var/run/log/journal にログが吐かれています。
ここはOSを再起動すると消えるので、直近の起動ログのみ。
吐いたログを見てみようと思いましたが、バイナリファイルでした

[root@localhost ~]# ll /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/*
-rw-r-----+ 1 root systemd-journal 8388608 12月  9 20:32 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system.journal
-rwxr-x---+ 1 root systemd-journal 8388608 12月  1 21:27 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b56ffcd43e6a-bcfd007e9c017b9f.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  2 10:24 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b57127b6b01a-434f3f1eaaca813a.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  2 12:22 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b572d13f953c-8ad654dfd105654d.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  2 12:48 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b57327933169-6600573119c92485.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  2 14:35 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b574a58eaa7f-44afe00ad80ed8d3.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  2 16:04 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b575e9e49a9e-7fa8897feb5ea35d.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  3 18:01 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b58c94f7a24a-c27750ddf7df5a78.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  3 19:12 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b58d1d143f09-0e72be4e963eb3e7.journal~
-rw-r-----+ 1 root systemd-journal 8388608 12月  8 12:02 /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system@0005b5eb548053ae-2a5c77cc30eabb16.journal~

[root@localhost ~]# head /var/run/log/journal/011cccd3dfdde94b92dced6372b08bda/system.journal 
LPKSHHRH�Qs���L���S�z�!������cr���ilBDϛ���i"d��Qs���L���S�z�!��
�� �
C��T�i{�j�֚%4
�
��
��
��
��
�
�

永続的にログを保存したい場合は /var/log/journal を作って再起動するとこちらにログを保存するようになります。
試しに作ってrebootしたらきちんとログが保存されていました。
無制限にログを貯めるわけではなく、古くなったり容量が少なくなったら消していくようです。

[root@localhost ~]# mkdir /var/log/journal
[root@localhost ~]# reboot
...
[root@localhost ~]# ll /var/log/journal/*
合計 16384
-rw-r-----+ 1 root systemd-journal 8388608 12月  9 21:00 system.journal
-rw-r-----  1 root root            8388608 12月  9 20:59 system@540f5dd2506e42528b408a6bbe8b12de-0000000000000001-0005ae278017b960.journal
  • コマンドで見る

journalctl コマンドで見ることが出来ます。
叩いてみたら以下のようにずらずら出てきます

[root@localhost ~]# journalctl
 8月 31 16:39:19 localhost.localdomain systemd-journal[92]: Runtime journal is using 8.0M (max allowed 9
 8月 31 16:39:19 localhost.localdomain kernel: Initializing cgroup subsys cpuset
 8月 31 16:39:19 localhost.localdomain kernel: Initializing cgroup subsys cpu
 8月 31 16:39:19 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
 8月 31 16:39:19 localhost.localdomain kernel: Linux version 3.10.0-1160.6.1.el7.x86_64 (mockbuild@kbuil
 8月 31 16:39:19 localhost.localdomain kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.6.1.el7.x86
 8月 31 16:39:19 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
....

試しにhttpdのサービスのログを見てみます。
オプションで -u xxxx.service とつければ特定のサービスのログを見ることが出来ます

[root@localhost ~]# journalctl -u httpd.service
-- Logs begin at 月 2020-08-31 16:39:19 JST, end at 水 2020-12-09 21:04:23 JST. --
12月 09 21:04:23 localhost systemd[1]: Starting The Apache HTTP Server...
12月 09 21:04:23 localhost httpd[1566]: AH00558: httpd: Could not reliably determine the server's fully
12月 09 21:04:23 localhost systemd[1]: Started The Apache HTTP Server.

補足

多分journaldの中身って systemctl status httpd 叩いた時に下に出てくるログと同様な気がします。

[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 水 2020-12-09 21:04:23 JST; 2min 8s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1566 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1566 /usr/sbin/httpd -DFOREGROUND
           ├─1567 /usr/sbin/httpd -DFOREGROUND
           ├─1568 /usr/sbin/httpd -DFOREGROUND
           ├─1569 /usr/sbin/httpd -DFOREGROUND
           ├─1570 /usr/sbin/httpd -DFOREGROUND
           └─1571 /usr/sbin/httpd -DFOREGROUND

12月 09 21:04:23 localhost systemd[1]: Starting The Apache HTTP Server...
12月 09 21:04:23 localhost httpd[1566]: AH00558: httpd: Could not reliably determine the server...sage
12月 09 21:04:23 localhost systemd[1]: Started The Apache HTT

サービスの起動を失敗させてみました。
よくよくみたら、 "systemctl status httpd.service" をして、詳細は "journalctl -xe" で見ろよって言ってるので
あながち間違ってはなさそうですね。

[root@localhost ~]# systemctl restart httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

勉強後イメージ

今まで気にせずにサービス起動失敗したときとかjournalctl叩いてたけど、どういう役割してるとか全然気にしたことなかったかも....
元々rsyslogがこの役割をしてたりしたのかな?
経緯は今度調べてみよう。

参考

18
10
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
18
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?