Journalctlã¯ããã°ãåæããããã®åªããããŒã«ã§ãããéåžžãææ¬²çãªLinux管çè ã«æåã«æ £ããããŒã«ã®1ã€ã§ããçµã¿èŸŒã¿ã®ããŒããŒã·ã§ã³æ©èœãè±å¯ãªãã£ã«ã¿ãªã³ã°æ©èœãããã³ãã¹ãŠã®systemdãŠããããµãŒãã¹ã®ãã°ã1ã€ã®ããŒã«ã§è¡šç€ºããæ©èœã¯éåžžã«äŸ¿å©ã§ãããã·ã¹ãã 管çè ã®äœæ¥ãå€§å¹ ã«å®¹æã«ããŸãã
ãã®èšäºã§ã¯ãjournalctlã®äž»ãªæ©èœãšãã®äœ¿ç𿹿³ã«ã€ããŠèª¬æããŸãã journalctlã䜿çšãããšãã·ã¹ãã ãã°ã衚瀺ããŠãsystemdåæåããŒã¢ã³ãåããLinuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã䜿çšããŠãã¯ãŒã¯ã¹ããŒã·ã§ã³ãŸãã¯ãµãŒããŒã§çºçããåé¡ã解決ã§ããŸããsystemdåæåããŒã¢ã³ã¯ãRHELãCentOSãFedoraãDebianãªã©ã®ææ°ã®Linuxã·ã¹ãã ã§ãã§ã«äºå®äžã®æšæºã«ãªã£ãŠããŸãã
systemdã¯ããã»ã©åªããŠããªããšããèªèããããŸããã·ã¹ãã ãããŒããã仿¥ã§ãè«äºã®çãšãªã£ãŠããŸãããã·ã¹ãã 管çãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã®åªããããŒã«ã»ãããæäŸããããšã¯åŠå®ã§ããŸãããèµ·åããããªãåé¡ã®ãããµãŒããŒãåŠçããå¿ èŠããããšæ³åããŠãã ããããã®å Žåãã©ã€ããã£ã¹ããªãã¥ãŒã·ã§ã³ããèµ·åããã·ã¹ãã ããŒãã£ã·ã§ã³ãããŠã³ãããsystemdãã°ã調ã¹ãŠåé¡ãäœã§ãããã確èªã§ããŸãã
Systemd
Systemdã«ã¯3ã€ã®äž»èŠãªã³ã³ããŒãã³ãããããŸãã
- systemd-ã·ã¹ãã ããã³ãµãŒãã¹ãããŒãžã£ãŒ
- systemctl-ãµãŒãã¹ã®ã¹ããŒã¿ã¹ã衚瀺ããã³ç®¡çããããã®ãŠãŒãã£ãªãã£
- systemd-analyze-ã·ã¹ãã ã®èµ·åããã»ã¹ã«é¢ããçµ±èšãæäŸãããŠããããã¡ã€ã«ã®æ£ç¢ºæ§ããã§ãã¯ããsystemdã®ãããã°æ©èœãåããŠããŸã
ãžã£ãŒãã«
Journaldã¯systemdãã®ã³ã°ããŒã¢ã³ã§ãã Systemdã¯ãããã»ã¹ãã¢ããªã±ãŒã·ã§ã³ãªã©ããã®ã·ã¹ãã ãã°ãäžå 管çããããã«èšèšãããŠããŸãããã®ãããªã€ãã³ãã¯ãã¹ãŠjournaldããŒã¢ã³ã«ãã£ãŠåŠçãããã·ã¹ãã å šäœãããã°ãåéããŠãã€ããªãã¡ã€ã«ã«ä¿åããŸãã
ãã€ããªåœ¢åŒã§ã®ã€ãã³ãã®éäžãã°ã®å©ç¹ã¯éåžžã«å€ããããšãã°ãã·ã¹ãã ãã°ã¯ãå¿ èŠã«å¿ããŠããã¬ãŒã³ããã¹ããJSONãªã©ã®ããŸããŸãªåœ¢åŒã«å€æã§ããŸããæ¥ä»ãšæå»ã®ãã£ã«ã¿ãŒã䜿çšããŠããã°ã1ã€ã®ã€ãã³ããŸã§è¿œè·¡ããããšãéåžžã«ç°¡åã§ãã
ãžã£ãŒãã«ãã°ãã¡ã€ã«ã¯æ°åã®ã€ãã³ããåéã§ããæ°ããã€ãã³ãããšã«æŽæ°ããããããLinuxã·ã¹ãã ãååã«é·ãå®è¡ãããŠããå Žåããã°ãã¡ã€ã«ã®ãµã€ãºã¯æ°ã®ã¬ãã€ã以äžã«éããå¯èœæ§ããããŸãããããã£ãŠããã®ãããªãã°ã®åæã¯é å»¶ããŠçºçããå¯èœæ§ããããŸãããã®å Žåããã°ãåæãããšãã«ãåºåããã£ã«ã¿ãªã³ã°ããŠäœæ¥ãé«éåã§ããŸãã
ãžã£ãŒãã«èšå®ãã¡ã€ã«
æ§æãã¡ã€ã«ã¯æ¬¡ã®ãã¹ã«ãããŸãïŒ/etc/systemd/journald.confãjournaldã®ããŸããŸãªèšå®ãå«ãŸããŠããŸããäœãããŠããã確信ãæãŠãªãéãããã®ãã¡ã€ã«ã倿Žããããšã¯ãå§ãããŸããã
ãžã£ãŒãã«ãžã£ãŒãã«ã®ãããã£ã¬ã¯ããªã¯ã/ run / log / journalã«ãããŸãïŒãã°ã®æ°žç¶ã¹ãã¬ãŒãžãæ§æãããŠããªãå Žåã§ãããåŸã§è©³ãã説æããŸãïŒã
ãã¡ã€ã«ã¯ãã€ããªåœ¢åŒã§ä¿åããããããcatãŸãã¯nanoã䜿çšããŠè¡šç€ºããã®ãéåžžã§ããå€ãã®ç®¡çè ãæ £ããŠããããã«ããã¡ã€ã«ã¯æ©èœããŸããã
journalctlã䜿çšããŠãã°ã衚瀺ããã³åæãã
衚瀺ããåºæ¬çãªã³ãã³ãïŒ
# journalctl
ã·ã¹ãã ã®èµ·åãéå§ãããç¬éããããšã©ãŒãèŠåãå«ããã¹ãŠã®ãã°ã®ãã¹ãŠã®ãšã³ããªãåºåãããŸããå€ãã€ãã³ãã¬ã³ãŒããäžçªäžã«ãæ°ããã€ãã³ãã¬ã³ãŒããäžçªäžã«è¡šç€ºãããŸããPagââeUpãšPageDownã䜿çšããŠãªã¹ããç§»åããEnterã䜿çšããŠãã°ã1è¡ãã€ã¹ã¯ããŒã«ããQã䜿çšããŠçµäºããŸãã
ããã©ã«ãã§ã¯ãjournalctlã¯ãã·ã¹ãã ã§æ§æãããã¿ã€ã ãŸãŒã³ã«åŸã£ãŠã€ãã³ãã®æå»ã衚瀺ããŸããjournalctlã§ã¯ãUTCæå»ã§ãã°ã衚瀺ããããšãã§ããŸãïŒãã®æéæšæºã§ã¯ãã€ãã³ãã¯ãžã£ãŒãã«ãã¡ã€ã«å ã«ä¿åãããŸãïŒãããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã
# journalctl --utc
éèŠåºŠã«ããã€ãã³ãã®ãã£ã«ã¿ãªã³ã°
ã·ã¹ãã ã¯ããŸããŸãªã¬ãã«ã®é倧床ã®ã€ãã³ããèšé²ããŸããäžéšã®ã€ãã³ãã¯ç¡èŠã§ããèŠåã§ããå Žåããããäžéšã¯èŽåœçãªãšã©ãŒã§ããå ŽåããããŸããä»ã®ã¡ãã»ãŒãžãç¡èŠããŠãšã©ãŒã®ã¿ã衚瀺ããå Žåã¯ã
é倧床ã³ãŒãã瀺ãã³ãã³ããå ¥åããŸãã ïŒjournalctl -p 0é倧床
ã¬ãã«ã®å Žåãæ¬¡ã®è¡šèšãåãå ¥ããããŸãã
- 0ïŒç·æ¥ïŒã·ã¹ãã ãåäœããªãïŒ
- 1ïŒã¢ã©ãŒãïŒæ©æ¥ãªå¯Ÿå¿ãå¿ èŠãªã¢ã©ãŒãïŒ
- 2ïŒã¯ãªãã£ã«ã«
- 3ïŒãšã©ãŒ
- 4ïŒèŠå
- 5ïŒéç¥
- 6ïŒæ å ±ïŒæ å ±ã¡ãã»ãŒãžïŒ
- 7ïŒãããã°ïŒãããã°ã¡ãã»ãŒãžïŒ
é倧床ã³ãŒããæå®ãããšãjournalctlã¯ãã®é倧床ã³ãŒã以äžã®ãã¹ãŠã®ã¡ãã»ãŒãžãåºåããŸããããšãã°ã-p 2ãªãã·ã§ã³ãæå®ãããšãjournalctlã¯ã¬ãã«2ã1ãããã³0ã®ãã¹ãŠã®ã¡ãã»ãŒãžã衚瀺ããŸãã
ãã°ã¹ãã¬ãŒãžã®èšå®
ããã©ã«ãã§ã¯ãjournaldã¯åèµ·åã®ãã³ã«ãã°ãäžæžãããjournalctlãåŒã³åºããšçŸåšã®ã·ã¹ãã èµ·åããã®ãã°ãåºåãããŸãã
ãã°ã®æ°žç¶çãªä¿åãæ§æããå¿ èŠãããå Žåã¯ããããåå¥ã«æ§æããå¿ èŠããããŸããéçºè ã¯ãrsyslogãè€è£œããªãããã«ããã¹ãŠã®ãã°ã®æ°žç¶çãªã¹ãã¬ãŒãžãæŸæ£ããŸããã
æ§æãã¡ã€ã«/etc/systemd/journald.confã§Storage =ãã©ã¡ãŒã¿ãŒãautoïŒã«èšå®ãããŠããŠããã£ã¬ã¯ããª/ var / log / journal /ãååšããªãå Žåããã°ã¯/ var /ã®å Žåãåèµ·åã®éã«ä¿åããã«/ run / log / journalã«æžã蟌ãŸããŸãã log / journal /ãååšããå Žåããã°ã¯æ°žç¶çã«ããã«ä¿åãããŸããããã£ã¬ã¯ããªãåé€ãããå Žåãsystemdã¯èªåçã«åäœæããã代ããã«ä¿åããã«/ run / systemd / journalã«ãã°ããã¯ããŸãããã®å Žåããã£ã¬ã¯ããªãåäœæããã«ã¯ãã¹ãã¬ãŒãž=æ°žç¶æ§ãjournald.confã«è¿œå ããsystemd-journald.serviceãåèµ·åïŒãŸãã¯åèµ·åïŒããŸãã
ãã°ãä¿åããããã®ãã£ã¬ã¯ããªãäœæããå¿ èŠãªå±æ§ãèšå®ããŠããµãŒãã¹ãåèµ·åããŸãã
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
ããŠã³ããŒããã°ã衚瀺ãã
journaldããã°ãæ°žç¶çã«ä¿åããããã«æ§æãããŠããå Žåãåã ã®ããŠã³ããŒãããšã«ãã°ã衚瀺ã§ããŸããæ¬¡ã®ã³ãã³ãã§ãã°ãäžèŠ§è¡šç€ºããŸãã
# journalctl --list-boots
æåã®çªå·ã¯ãç¹å®ã®ã»ãã·ã§ã³ã®ãã°ã衚瀺ããããã«äœ¿çšã§ãããã°çªå·ã瀺ããŠããŸãã2çªç®ã®ããŒãIDã䜿çšããŠãå¥ã®ãã°ã衚瀺ããããšãã§ããŸãã
次ã®2ã€ã®æ¥ä»ãã€ãŸããã°ãæžã蟌ãŸããæéãããã¯ãç¹å®ã®æéã®ãã°ãæ€çŽ¢ããå Žåã«äŸ¿å©ã§ãã
ããšãã°ãçŸåšã®ã·ã¹ãã èµ·åãããã°ã衚瀺ããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã
# journalctl -b 0
ãããŠãååã®ããŠã³ããŒãã®ãã°ã衚瀺ããã«ã¯ïŒ
# journalctl -b -1
ç¹å®ã®æéã®ãã°ã衚瀺ãã
Journalctlã䜿çšãããšããæšæ¥ãïŒæšæ¥ïŒãã仿¥ãïŒä»æ¥ïŒããææ¥ãïŒææ¥ïŒããä»ãïŒä»ïŒãªã©ã®åèªã䜿çšã§ããŸãã
ãããã£ãŠãã-sinceããªãã·ã§ã³ã䜿çšã§ããŸãïŒãã°ã衚瀺ããæéã®æåããïŒã
ç¹å®ã®æ¥æããïŒ
# journalctl --since "2020-12-18 06:00:00"
ç¹å®ã®æ¥ä»ããç¹å®ã®æ¥æãŸã§ïŒ
# journalctl --since "2020-12-17" --until "2020-12-18 10:00:00
æšæ¥ããïŒ
# journalctl --since yesterday
åå9æãã1æéåã®ç¬éãŸã§ïŒ
# journalctl --since 09:00 --until "1 hour ago"
ã«ãŒãã«ã¡ãã»ãŒãžã®è¡šç€º
çŸåšã®ããŒãã«é¢ããLinuxã«ãŒãã«ããã®ã¡ãã»ãŒãžã衚瀺ããã«ã¯ã-kã¹ã€ãããæå®ããŠã³ãã³ãã䜿çšããŸãã
# journalctl -k
ç¹å®ã®systemdãµãŒãã¹ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ãã°ã®è¡šç€º
ç¹å®ã®systemdãµãŒãã¹ã®ãã°ããã£ã«ã¿ãªã³ã°ã§ããŸããããšãã°ãNetworkManagerãããã°ã衚瀺ããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã
# journalctl -u NetworkManager.service
ãµãŒãã¹ã®ååãèŠã€ããå¿ èŠãããå Žåã¯ã次ã®ã³ãã³ãã䜿çšããŸãã
# systemctl list-units --type=service
ãŸããå®è¡å¯èœãã¡ã€ã«ãæå®ããŠã¢ããªã±ãŒã·ã§ã³ãã°ã衚瀺ããããšãã§ããŸããããšãã°ã仿¥ã®nginxããã®ãã¹ãŠã®ã¡ãã»ãŒãžã衚瀺ããã«ã¯ã次ã®ã³ãã³ãã䜿çšã§ããŸãã
# journalctl /usr/sbin/nginx --since today
ãŸãã¯ãç¹å®ã®PIDãæå®ããããšã«ãã£ãŠïŒ
# journalctl _PID=1
远å ã®è¡šç€ºãªãã·ã§ã³
æ°ããã¡ãã»ãŒãžã«æ³šæããŠãã ããïŒtail -fãšåæ§ïŒïŒ
# journalctl -f
æåŸã®ãšã³ããªã«ãå·»ãæ»ãããŠãã°ãéããŸãã
# journalctl -e
ãã°ã®ãããã£ã¬ã¯ããªã«å€§éã®ããŒã¿ãããå Žåãjournalctlåºåã®ãã£ã«ã¿ãªã³ã°ã«æéããããããšããããŸããç£èŠããå¿ èŠã®ãããã°ã®ã¿ãjournalctlã«æå®ããŠã-fileãªãã·ã§ã³ã䜿çšãããšãããã»ã¹ãå€§å¹ ã«é«éåã§ããŸãã
journalctl --file /var/log/journal/e02689e50bc240f0bb545dd5940ac213/system.journal -f
ããã©ã«ãã§ã¯ãjournalctlã¯ç»é¢ã®å¹ ã«åããªãè¡ã®éšåãåãåããŸãããè¡ã®æãè¿ããæãŸããå ŽåããããŸãããã®æ©èœã¯ãlessã«æž¡ããããªãã·ã§ã³ïŒããã©ã«ãã®ããŒãžã³ã°ããã°ã©ã ïŒãå«ãSYSTEMD_LESSç°å¢å€æ°ã«ãã£ãŠå¶åŸ¡ãããŸããããã©ã«ãã§ã¯ã倿°ã¯FRSXMKã§ããSãªãã·ã§ã³ãåé€ããŠããè¡ã¯åãæšãŠãããŸããã
äŸãã°ïŒ
SYSTEMD_LESS=FRXMK journalctl
ãã°ãµã€ãºã®å¶é
Journaldãåèµ·ååŸã«ãã°ãä¿æããããã«æ§æãããŠããå Žåãããã©ã«ãã§ã¯ããžã£ãŒãã«ã®ãµã€ãºã¯ãã¡ã€ã«ããŒãã£ã·ã§ã³ã®10ïŒ ã«å¶éãããæå€§4GBã®ãã£ã¹ã¯ã¹ããŒã¹ãå æã§ããŸãã
æå€§ãã°ãµã€ãºã¯ããžã£ãŒãã«æ§æãã¡ã€ã«ã®æ¬¡ã®èšå®ã®ã³ã¡ã³ããè§£é€ããŠç·šéããããšã§èª¿æŽã§ããŸãã
SystemMaxUse=50M
ãã°ã®åé€
ã¢ãŒã«ã€ãããããã°ãã¡ã€ã«ã¯ãrmãŸãã¯journalctlã䜿çšããŠæåã§åé€ã§ããŸãã
ãã°ãåé€ããæåŸã®100MBã®ã¿ãæ®ããŸãã
# journalctl --vacuum-size=100M
ãã°ãåé€ããéå»7æ¥éã®ãã°ã®ã¿ãæ®ããŸãã
# journalctl --vacuum-time=7d
çµè«
ãžã£ãŒãã«ãã°ãµãŒãã¹ã¯éåžžã«åŒ·åã§æè»ãªããŒã«ã§ããããã®äœ¿ç𿹿³ãç¥ã£ãŠããã°ãã·ã¹ãã ãŸãã¯ãã®ãµãŒãã¹ã®åé¡ã®åå ãæ¢ããªãããäœæ¥ãå€§å¹ ã«æ¥œã«ããããšãã§ããŸãã