centos8平台使用journalctl管理systemd-journald日志


一,systemd-journald的作用

1,什么是systemd-journald?

systemd-journald 是 systemd 自帶的日志系統,是一個收集並存儲各類日志數據的系統服務。 
它創建並維護一個帶有索引的、結構化的日志數據庫, 並可以收集來自各種不同渠道的日志:
1,通過 kmsg 收集內核日志 2,通過 libc 的 syslog(3) 接口收集系統日志 3,通過 本地日志接口 sd_journal_print(3) 收集結構化的系統日志 4,捕獲服務單元的標准輸出(STDOUT)與標准錯誤(STDERR)。 5,通過內核審計子系統收集審計記錄 日志守護進程會以安全且不可偽造的方式自動收集每條日志的元數據。

 

2,journalctl 用來查詢 systemd-journald 服務收集到的日志

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,journalctl所屬的包與安裝

1,查看所屬的包

[root@centos8 ~]# whereis journalctl
journalctl: /usr/bin/journalctl /usr/share/man/man1/journalctl.1.gz

[root@centos8 ~]# rpm -qf /usr/bin/journalctl 
systemd-239-18.el8_1.4.x86_64

 

2,如果找不到journalctl,可以用yum安裝

[root@blog ~]# yum install systemd

 

三,查看journalctl的版本和幫助

1,查看版本

[root@centos8 ~]# journalctl --version
systemd 239
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT 
+GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN
+PCRE2 default-hierarchy=legacy

 

2,查看幫助

[root@centos8 ~]# journalctl --help

 

四,journalctl的使用例子:

1,查看本機本次啟動之后的所有日志

[root@blog ~]# journalctl

 

2,只查看內核日志:

#-k --dmesg                 Show kernel message log from the current boot

[root@blog ~]# journalctl -k 

 

3,查看系統本次啟動的日志

#-b --boot[=ID]             Show current boot or the specified boot

[root@blog ~]# journalctl -b

說明: 等同於 journalctl -b -0

 

查看上一次啟動的日志

[root@blog ~]# journalctl -b -1

 

4,查看最新的10行日志:

# --lines

[root@blog ~]# journalctl  -n 

 

查看最新的指定行數的日志

[root@blog ~]# journalctl  -n 20

 

5,實時滾動顯示最新日志

#-f --follow                Follow the journal

[root@blog ~]# journalctl -f

 

6,查看某個unit的日志

# -u --unit=UNIT             Show logs from the specified unit

[root@blog ~]# journalctl -u openresty.service

 

說明:也可以把多個unit的日志整合起來查看:

例:把兩個unit的日志一起瀏覽

[root@blog ~]# journalctl -u openresty.service -u mysqld.service

 

7,查看指定時間的日志

#  --since   指定開始時間

# --since today 查看從今天開始的日志

# --since yesterday 查看從昨天開始的日志

[root@blog ~]# journalctl -u openresty.service --since today
[root@blog ~]# journalctl --since yesterday 

 

也可以指定准確的時間

[root@blog ~]# journalctl -u openresty.service --since="2020-03-11 12:37:11" 

 

#--until :指定結束的時間

[root@blog ~]# journalctl --since "2020-03-01" --until "2020-03-02 00:00"

 

#now   :指定時間為現在

[root@blog ~]# journalctl --since "2020-03-01" --until now

 

#可以用ago表示過去的時間

[root@blog ~]# journalctl --since "1 day ago" --until "1 hour ago"

 

8,指定查看日志時不再分頁:

# --no-pager : 不進行分頁

[root@blog ~]# journalctl --no-pager

 

如果日志太多,可以用管道傳給more或less

[root@blog ~]# journalctl --no-pager | more 
[root@blog ~]# journalctl --no-pager | less

說明:less支持上下翻頁,b是向上翻頁

          more只能向下翻頁 

 

9,查看指定級別的日志

# -p: 指定優先級及以上級別

[root@blog ~]# journalctl -p err -b 

說明:日志的八個級別:

# 0: emerg

# 1: alert

# 2: crit

# 3: err

# 4: warning

# 5: notice

# 6: info

# 7: debug

 

10,查看指定用戶的日志:

用id命令得到指定用戶的id

[root@blog ~]# id webop
uid=1000(webop) gid=1000(webop) groups=1000(webop),10(wheel)

 

#_UID : 指定用戶的uid

[root@blog ~]# journalctl _UID=1000

 

 11,json格式輸出:

#-o json : 以json格式輸出

[root@blog ~]# journalctl -o json

#-o json-pretty : 以json格式多行輸出,更易閱讀

[root@blog ~]# journalctl -o json-pretty

 

12,指定日志倒序輸出:最新的在上面,從新到舊

[root@blog ~]# journalctl -r

 

五,日志清理:

1,清理現有的日志文件

[root@blog ~]# rm -rf /var/log/journal/*

 

#重啟systemd-journald服務

[root@blog ~]# systemctl restart systemd-journald.service

 

2,顯示日志占據的硬盤空間

[root@blog ~]# journalctl  --disk-usage
Archived and active journals take up 192.0M in the file system.

 

3,清理現有的日志到500M以下

[root@blog ~]# journalctl --vacuum-size=500M 

 

4,清理現有的日志到12個月以下

[root@blog ~]# journalctl --vacuum-time=12month

 

六,如何測試寫一條日志?

1,用logger寫一條日志

[root@blog ~]# logger -p user.info "this is check logger command"

 

2,查看新寫入的日志

[root@blog ~]# journalctl -r
-- Logs begin at Wed 2019-12-25 11:43:21 CST, end at Wed 2020-04-08 14:38:55 CST. --
Apr 08 14:38:55 blog sysop[29566]: this is check logger command

 

七,journalctl所查看的日志保存在哪里?

[root@blog ~]# ls /var/log/journal/
20191225112704604621358614227964

 

 八,journalctl的配置文件在何處?

/etc/systemd/journald.conf

一般不需要改動

 

九,查看centos的版本

[root@blog ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM