文章目錄
前言
日誌的採集是由各個程序來完成的,因爲你的程序會將自己的某些執行信息書寫到日誌中。
而journald和rsyslog是用來採集日誌的,並以某種格式保存。在企業7之前只有rsyslog。在企業7之後兩個都有。
journald是無法關閉的。
在系統中做任何重大的設置修改,都會產生日誌。
- 實驗環境
rhel7_node1:172.25.254.10
rhel8_node1:172.25.254.11
journald
服務名稱:systemd-journald.service
[root@rhel7_node1 ~]# 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 Mon 2020-03-09 19:10:55 CST; 53min ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 3353 (systemd-journal)
Status: "Processing requests..."
Tasks: 1
CGroup: /system.slice/systemd-journald.service
└─3353 /usr/lib/systemd/systemd-journald
Mar 09 19:10:55 rhel7_node1.westos.com systemd-journal[3353]: Runtime journal…).
Mar 09 19:10:55 rhel7_node1.westos.com systemd-journal[3353]: Journal started
Hint: Some lines were ellipsized, use -l to show in full.
所提供的命令是journalctl
默認日誌存放路徑:/run/log(每次重啓系統會對日誌進行清空)
[root@rhel7_node1 ~]# cd /run/log
[root@rhel7_node1 log]# ls
journal
[root@rhel7_node1 log]# bootctl
System:
Machine ID: 4f72081b06bf47e99ea36241be61e2e4 #機器碼,顯示當前機器的日誌
Boot ID: 15a33520fcfe40d48709fc6faa55a7ba
No suitable data is provided by the boot manager. See:
http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface
http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec
for details.
[root@rhel7_node1 journal]# ls
4f72081b06bf47e99ea36241be61e2e4
實驗步驟(journalctl命令的用法)
-
journalctl
-n 3(日誌的最新3條)[root@rhel7_node1 journal]# systemctl restart sshd [root@rhel7_node1 journal]# journalctl -n 3 -- Logs begin at Mon 2020-03-09 19:09:58 CST, end at Mon 2020-03-09 20:12:01 CST. -- Mar 09 20:12:00 rhel7_node1.westos.com sshd[10817]: Server listening on :: port 22. Mar 09 20:12:01 rhel7_node1.westos.com polkitd[7090]: Unregistered Authentication Agent for unix-pr Mar 09 20:12:00 rhel7_node1.westos.com systemd[1]: Started OpenSSH server daemon.
–since “2020-02-13 17:00”(顯示17:00後的日誌)
[root@rhel7_node1 ~]# journalctl --since "2020-03-10 16:25" -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 16:30:01 CST. -- Mar 10 16:25:24 rhel7_node1.westos.com gnome-shell[9919]: JS WARNING: [resource:///org/gnome/shell/ Mar 10 16:25:24 rhel7_node1.westos.com gnome-shell[9919]: JS WARNING: [resource:///org/gnome/shell/ Mar 10 16:25:26 rhel7_node1.westos.com dbus[7066]: [system] Activating via systemd: service name='n ...
–until"2020-02-13 17:00"(顯示日誌到17:00)
[root@rhel7_node1 ~]# journalctl --until "2020-03-10 16:22:33" -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 16:31:28 CST. -- Mar 10 16:22:32 localhost.localdomain systemd-journal[85]: Runtime journal is using 8.0M (max allow Mar 10 16:22:32 localhost.localdomain kernel: Initializing cgroup subsys cpuset Mar 10 16:22:32 localhost.localdomain kernel: Initializing cgroup subsys cpu Mar 10 16:22:32 localhost.localdomain kernel: Initializing cgroup subsys cpuacct ...
-o(設置日誌的顯示方式)
short(經典模式顯示日誌)[root@rhel7_node1 ~]# journalctl -o short -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 16:33:31 CST. -- Mar 10 16:22:32 localhost.localdomain systemd-journal[85]: Runtime journal is using 8.0M (max allow Mar 10 16:22:32 localhost.localdomain kernel: Initializing cgroup subsys cpuset Mar 10 16:22:32 localhost.localdomain kernel: Initializing cgroup subsys cpu Mar 10 16:22:32 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
verbose(顯示日誌的全部字節)
[root@rhel7_node1 ~]# journalctl -o verbose -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 16:36:30 CST. -- Tue 2020-03-10 16:22:32.608315 CST [s=f137873616914c5dae3d6ba6f1bfd010;i=1;b=ea79dda9bc13465f9f8acb PRIORITY=6 _TRANSPORT=driver MESSAGE=Runtime journal is using 8.0M (max allowed 90.9M, trying to leave 136.4M free of 901.7M MESSAGE_ID=ec387f577b844b8fa948f33cad9a75e6 _PID=85 _UID=0 _GID=0 _COMM=systemd-journal _EXE=/usr/lib/systemd/systemd-journald _CMDLINE=/usr/lib/systemd/systemd-journald _CAP_EFFECTIVE=5402800cf _SYSTEMD_CGROUP=/system.slice/systemd-journald.service _SYSTEMD_UNIT=systemd-journald.service _SYSTEMD_SLICE=system.slice _BOOT_ID=ea79dda9bc13465f9f8acb8ed43f07b1 _MACHINE_ID=4f72081b06bf47e99ea36241be61e2e4 _HOSTNAME=localhost.localdomain Tue 2020-03-10 16:22:32.608396 CST [s=f137873616914c5dae3d6ba6f1bfd010;i=2;b=ea79dda9bc13465f9f8acb PRIORITY=6 _BOOT_ID=ea79dda9bc13465f9f8acb8ed43f07b1 _MACHINE_ID=4f72081b06bf47e99ea36241be61e2e4
export(適合傳輸和備份的二進制格式)
[root@rhel7_node1 ~]# journalctl -o export __CURSOR=s=f137873616914c5dae3d6ba6f1bfd010;i=1;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=170534;t=5a07b __REALTIME_TIMESTAMP=1583828552608315 __MONOTONIC_TIMESTAMP=1508660 _BOOT_ID=ea79dda9bc13465f9f8acb8ed43f07b1 PRIORITY=6 _TRANSPORT=driver MESSAGE=Runtime journal is using 8.0M (max allowed 90.9M, trying to leave 136.4M free of 901.7M ava MESSAGE_ID=ec387f577b844b8fa948f33cad9a75e6 _PID=85 ......
json(js格式顯示輸出)
[root@rhel7_node1 ~]# journalctl -o json { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=1;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=170534; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=2;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=170585; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=3;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=17059c; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=4;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=1705ad; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=5;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=1705b9; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=6;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=1705c7; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=7;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=1705d5; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=8;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=1705e3; { "__CURSOR" : "s=f137873616914c5dae3d6ba6f1bfd010;i=9;b=ea79dda9bc13465f9f8acb8ed43f07b1;m=1705f5;
-p(顯示指定級別的日誌)
0 emerg(系統的嚴重問題日誌)
1 alert(系統中立即要更改的信息)
2 crit(嚴重級別會導致系統軟件不能正常工作)
3 err(程序報錯)
4 warning(程序警告)
5 notice(重要信息的普通日誌)
6 info(普通信息)
7 debug(程序排錯信息)[root@rhel7_node1 ~]# journalctl -p err -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 16:41:07 CST. -- Mar 10 16:22:54 rhel7_node1.westos.com kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not Mar 10 16:23:14 rhel7_node1.westos.com smartd[7088]: DEVICESCAN failed: glob(3) aborted matching pa Mar 10 16:23:14 rhel7_node1.westos.com smartd[7088]: In the system's table of devices NO devices fo Mar 10 16:24:10 rhel7_node1.westos.com pulseaudio[10476]: [alsa-source-ES1371/1] alsa-source.c: ALS Mar 10 16:24:10 rhel7_node1.westos.com pulseaudio[10476]: [alsa-source-ES1371/1] alsa-source.c: Mos Mar 10 16:24:10 rhel7_node1.westos.com pulseaudio[10476]: [alsa-source-ES1371/1] alsa-source.c: We Mar 10 16:24:24 rhel7_node1.westos.com spice-vdagent[11460]: Cannot access vdagent virtio channel / ...
-F PRIORITY(查看可控日誌級別是234567因爲01是內核級別的)
[root@rhel7_node1 ~]# journalctl -F PRIORITY 2 3 4 7 5 6
-u sshd(指定查看服務)
[root@rhel7_node1 ~]# journalctl -u sshd -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 16:47:43 CST. -- Mar 10 16:23:33 rhel7_node1.westos.com systemd[1]: Starting OpenSSH server daemon... Mar 10 16:23:35 rhel7_node1.westos.com sshd[7725]: Server listening on 0.0.0.0 port 22. Mar 10 16:23:35 rhel7_node1.westos.com sshd[7725]: Server listening on :: port 22. Mar 10 16:23:35 rhel7_node1.westos.com systemd[1]: Started OpenSSH server daemon.
–disk-usage(查看日誌大小)
[root@rhel7_node1 ~]# journalctl --disk-usage Archived and active journals take up 8.0M on disk.
–vacuum-size=1G(設定日誌存放大小:臨時)
[root@rhel7_node1 ~]# journalctl --vacuum-size=1G Vacuuming done, freed 0B of archived journals on disk.
–vacuum-time=1W(設定日誌最長存放時間:臨時)
[root@rhel7_node1 ~]# journalctl --vacuum-time=1W Failed to parse vacuum time: 1W
-f(監控日誌)
注意:需要查看某個服務的日誌的時候,先查找到這個服務的ID(systemctl -o verbose),然後顯示日誌的全部內容,查找這個服務的_SYSTEMD_UNIT,接下來輸入以下命令:journalctl _PID=10924 _SYSTEMD_UNIT=sshd.service[root@rhel7_node1 ~]# journalctl _PID=19655 _SYSTEMD_UNIT=sshd.service -- Logs begin at Tue 2020-03-10 16:22:32 CST, end at Tue 2020-03-10 17:01:01 CST. -- Mar 10 16:59:50 rhel7_node1.westos.com sshd[19655]: Server listening on 0.0.0.0 port 22. Mar 10 16:59:50 rhel7_node1.westos.com sshd[19655]: Server listening on :: port 22.
實驗步驟(用journald服務永久存放日誌)
系統中默認日誌在:/run/log/journal中
默認方式在系統重啓後日志會被清理要永久保持日誌請完成一下操作:
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod 2775 /var/log/journal
systemctl restart systemd-journald.service
當服務器重啓,日誌存放路徑會被制定到:/var/log/journal
測試:
1.在操作以上步驟之前查看日誌
2.重啓系統
3.再次查看日誌
4.可以看出之前的日誌並沒有被保存,只能看到重啓後的新日誌
5.完成上述操作後再次重啓系統可以看到日誌是被保存下來的
rsyslog
- 服務名稱:rsyslog.service
- 日誌存放:
/var/log/messages #系統服務日誌,常規信息,服務報錯
/var/log/secure #系統認證信息日誌
/var/log/maillog #系統郵件日誌信息
/var/log/cron #系統定時任務信息
/var/log/boot.log #系統啓動日誌信息 - 配置文件:/etc/rsyslog.conf
實驗步驟(自定義日誌採集路徑)
1.修改配置文件
vim /etc/rsyslog.conf
日誌類型.日誌級別 日誌存放路徑
*.* /var/log/westos #把系統中所有級別的日誌存放到westos中
*.*;authpriv.none /var/log/westos #把系統中所有級別的日誌存放到westos中,但是除了authpriv不存放到westos中
日誌類型:
auth #用戶認證
authpriv #服務認證
cron #時間任務
kern #內核類型
mail #郵件
news #系統更新信息
user #用戶
日誌級別:
debug
info
notice
waring
err
crit
alert
emerg
none
2.執行和測試
實驗步驟(如何更改日誌採集格式)
1.定義日誌採集格式
在配置文件中:
30 $template WESTOS, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n" #定義一個名爲WESTOS的格式
#WESTOS: 格式名稱
#%FORMHOST-IP%:日誌來源主機IP
#%timegenerated%: 日誌生成時間
#%syslogtag%: 日誌生成服務
#%msg%: 日誌內容
#\n: 換行
2.設定日誌採集格式應用
通配符.通配符authpriv.none /var/log/ westos;WESTOS
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages;WESTOS #將此格式應用到某個記錄日誌的文件
3.清空原來的日誌文件
[root@rhel7_node1 log]# > /var/log/messages
4.重啓日誌服務
[root@rhel7_node1 log]# systemctl restart rsyslog
5.查看新的日誌格式
[root@rhel7_node1 log]# cat /var/log/messages
127.0.0.1 Mar 10 19:45:03 systemd: Stopping System Logging Service...
127.0.0.1 Mar 10 19:45:03 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="23061" x-info="http://www.rsyslog.com"] exiting on signal 15.
127.0.0.1 Mar 10 19:45:03 systemd: Stopped System Logging Service.
127.0.0.1 Mar 10 19:45:03 systemd: Starting System Logging Service...
127.0.0.1 Mar 10 19:45:03 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="23120" x-info="http://www.rsyslog.com"] start
127.0.0.1 Mar 10 19:45:03 systemd: Started System Logging Service.
實驗步驟(日誌的遠程同步)
在企業中,爲了方便管理,我們需要集中查看日誌,而不是一臺一臺的去查看。所以需要將所有人的日誌存放到一臺主機。
實驗環境:
rhel7_node1:172.25.254.10 #存放日誌作爲日誌接收端,所有人日誌都存放到此臺主機
rhel8_node1:172.25.254.11 #發送日誌到rhel7_node主機中
1.在rhel7中設定接收所有人日誌
先關閉火牆
systemctl stop firewalld
選擇udp協議是因爲此實驗及其操作環境均在內網,且對效率要求較高
vim /etc/rsyslog.conf
15 $ModLoad imudp ##打開日誌接受插件
16 ¥UDPServerRun 514 ##指定插件使用接口
重啓服務:
root@rhel7_node1 ~]# systemctl restart rsyslog
查詢端口:
root@rhel7_node1 ~]# netstat -antlupe | grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 0 67600 11115/rsyslogd
udp 0 0 :::514 :::* 0 67601 11115/rsyslogd
此時企業7的udp接受端口已經打開
2.rhel8中設定發送日誌到rhel7中
設置配置文件:
vim /etc/rsyslog.conf
*.* @172.25.254.10
# @ 表示使用udp傳輸日誌
# @@ 表示使用tcp傳輸日誌
# @172.25.254.11 把本機日誌用udp方式發送到172.25.254.11主機
重啓服務:
systemctl restart rsyslog
測試:
在rhel7和8中
"> /var/log/messages" #清空日誌文件以便觀察
在rhel8中
logger westos test message #製造日誌文件
在rhel7中可以看到8中生成的日誌
[root@rhel7_node1 log]# cat /var/log/messages
Mar 10 20:41:48 rhel8_node1 root[6352]: westos haha
timedatectl
查看當前系統時間:
[root@rhel7_node1 log]# timedatectl
Local time: Wed 2020-03-11 00:39:37 CST
Universal time: Tue 2020-03-10 16:39:37 UTC #格林威治時間,倫敦時間
RTC time: Tue 2020-03-10 16:39:38 #硬件時間
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
設定系統時間
timedatectl set-time "2020-02-13 10:41:55"
顯示系統的所有時區
timedatectl list-timezones
設定系統時區
timedatectl set-timezone "Asis/Shanghai"
設定系統時間計算方法
timedatectl set-local-rtc 0|1 #0表示使用utc時間計算方法(即硬件時間+時區)
#1表示使用local時間計算方式
時間同步服務
產生原因:需要更改大量主機系統時間時,不能一臺一臺改
服務名稱: chronyd.service
配置文件: /etc/chrony.conf
實驗步驟(同步兩個主機的時間)
要求:在rhel7作爲時間源
rhel8同步rhel7時間
1.在rhel7中
編輯配置文件:
vim /etc/chrony.conf
26 allow 192.168.0.0/24 #允許172.25.254.0.網段主機同步時間
29 local stratum 10 #開啓時間同步服務功能並設定級別爲10
重啓時間同步服務並關閉火牆:
systemctl restart chronyd.service
systemctl stop firewalld
在rhel8中
vim /etc/chrony.conf
3 pool 172.25.254.11 iburst
重啓服務
systemctl restart chronyd
查看:
在rhel8中查看時間:
[root@rhel8_node1 ~]# date
2020年 03月 10日 星期二 17:00:50 CST
使用chronyc命令查看時間效果:
[root@rhel8_node1 ~]# chronyc sources -v
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.0.10 3 6 177 56 -862us[ -565us] +/- 23ms #證明已經從企業7上同步過來了時間
後記
journald響應比較快,處理靈活
rsyslog比較精準
本節實驗比較多!