Linux菜鳥成長日記(Linux系統管理日誌,時間管理。rsyslog,journalctl,chrony,timedatectl等)


 Linux系統管理日誌,時間管理。rsyslog,journalctl,chrony,timedatectl等


1.日誌服務: 所謂日誌就是對系統程序的狀況進行觀測的記錄,我們可以通過查看日誌來對計算機系統的「健康狀況」進行監測,即是預防或者修正系統中出現的問題。

      

(1).日誌的生成方式:日誌在內存中,rsyslog服務將日誌從內存中採集到硬盤中並保存

                                   由各個進程生成日誌,一個程序採集日誌(rsyslog.service)

                                   日誌的主配置文件/ect/rsyslog.conf(可用來定義日誌生成的具體格式)

(2).日誌採集規則(配置文件/etc/rsyslog.conf)

執行vim/etc/rsyslog.conf,可看到如下,規定了日誌生成以及觀測的規則。

格式如下

                                       .         *               文件名稱
分別對應:「*」:日誌類型.     「*」:日誌級別   存放日誌的文件

I.日誌類型
auth          用戶登陸日誌(pam程序產生日誌)
authpriv     服務認證日誌(sshd認證)
kern          內核日誌
cron          定時任務日誌
lpr             打印機日誌
mail           郵件日誌
news         新聞
user          用戶相關程序日誌
local 1-7    用戶自定義日誌
II.日誌級別
debug        系統調試信息
info            常規信息
warning      警告信息
err             報錯(級別低,阻止了某個功能的正常工作)
crit             報錯(級別高,阻止整個軟件或整個系統致使其不能正常工作)
alert           需要立即修改信息
emerg        內核崩潰
none          不採集任何日誌信息

例:

 *.info;mail.none;authpriv.none;cron.none                /var/log/messages (除了郵件,認證服務,定時任務外的其他系統服務的日誌都存放在/var/log/messages中)

可以通過"cat"指令來查看日誌,還可以通過">"符號來清空日誌信息。

查看:cat /var/log/messages

清空:>/var/log/messages;再執行cat /var/log/messages


附上系統常用日誌存放位置:
/var/log/messages            所有日誌級別的常規信息(不包含郵件,服務認證,定時任務)
/var/log/maillog                 郵件日誌
/var/log/secure                 服務認證日誌
/var/log/corn                    定時任務日誌

III.配置日誌格式:$template

在/etc/rsyslog.conf 下進行對日誌配置信息的進行修改(讓程序按系統要求的方式進行運行)

       注:配置文件是系統和程序進行交流的途徑,即系統通過配置文件對程序進行一定規則方式的運行

       修改配置文件後務必重啓服務

vim /etc/rsyslog.conf

編輯如下:

    $template + 格式名稱,「日誌採集格式」
*.info;mail.none;authpriv.none;cron.none          /var/log/messages;格式名稱
%timegenerated%                      日誌生成時間
%FROMHOST-IP%                    日誌來源主機的IP
%syslogtag%                             日誌生成來源程序
%msg%                                     日誌內容
\n                                               換行

例子:

$template test,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
*.info;mail.none;authpriv.none;cron.none          /var/log/messages;test

運行示例:

cat /usr/log/mesages後



                    

                    注:可通過man rsyslog.conf來了解日誌修改格式。




(3)日誌的遠程同步:對多個主機的日誌進行管理

作爲系統管理員。往往會遇到對不止一個主機的狀況進行監控,一個一個的去看未免太過繁瑣,這時候就可以將各個主機的日誌同不到一個服務器中,進行觀測。

具體操作如下:

發送端:對發送端主機的rsyslog服務進行配置

/vim/etc/rsyslog.conf
*.*                    @IP              將日誌發送到指定主機中
systemctl restart rsyslog      重啓服務



接收端對接收端主機的rsyslog服務進行配置。

15 $Mdoload imudp                    接受傳輸 

16 $UDPServerRun 514             通過514接口進行傳輸


systemctl restart rsyslog
systemctl stop firewalld         關閉防火牆      對防火牆進行關閉,否則將無法接收同步過來的日誌
systemctl disable firewalld    開機不自動開啓防火牆

並在接收方定義日誌採集格式,方便觀測,具體如上述配置日誌格式:   $template + 格式名稱,「日誌採集格式」

示例如下:


重啓服務後,在接收端查看日誌。



(4)實時日誌監控指令 journalctl       注:企業7之後纔有此命令

journalctl                    對日誌進行查看,直接查看內存中的日誌,只能對本機日誌進行監控,不能同步其他主機日誌,關機或重啓服務後消失
journalctl     -n3              觀測最新三行日誌
journalctl     -p err          對錯誤進行觀測,(-p 後加指定的信息,)
journalctl     -f                          默認顯示十行。隨着匹配日誌的增長而持續輸出。只顯示錯誤、衝突和重要告警信息
journalctl     --since time --until time        監控指定時間段
journalctl     -o verbose             查看日誌詳細參數 _PID=NUM      
journalctl _PID=NUM

由於journalctl指令是對內存中的日誌進行觀測,在重啓機器後會消失,當想要保存有用的日誌時,就需要如下指令了
執行如下指令:
mkdir /var/log/journal                                 建立目錄
chgrop systemd-journal /var/log/journal    修改目錄所有組
chmod g+s /var/log/journal                        修改權限
killall -1 systemd-journald                        重新啓動服務

驗證是否保存
journalctl -n 3
date
reboot

journalctl 

注:建立文件後的直至將會被保存到硬盤中,重新啓動後也存在。

示例如下:

建立文件後


重啓後:

可看到日誌被保存下來。



2.進行時間同步           

在進行日誌同步時,兩個主機時間如果不一致,將會導致判斷錯誤等諸多問題,此時就需要對不同主機的系統時間進行同步了。

(1)重新設定時間     timedatectl set-time "xx:xx:xx"

   timedatectl list-timezones                              列出時區列表
   timedatectl set-timezone Asia/Shanghai       設置成上海時間  
   timedatectl                                                    列出詳細信息
       Local time: Sat 2018-04-14 16:05:17 CST
       Universal time: Sat 2018-04-14 08:05:17 UTC
       RTC time: Sat 2018-04-14 08:05:16
       Timezone: Asia/Shanghai (CST, +0800)
       NTP enabled: yes
       NTP synchronized: yes
       RTC in local TZ: no
       DST active: n/a
   date
   Sat Apr 14 16:05:23 CST 2018
   timedatectl set-local-rtc 0      使用UTC時間    注:所謂UTC時間就是世界標準時間
    date
   Sat Apr 14 16:05:46 CST 2018
   vim /etc/adjtime                    查看使用的時間
   timedatectl set-local-rtc 1     使用本地時間

(2)在服務器端共享時間

對時間同步的配置文件進行修改

         vim /etc/chrony.conf
第29行 local stratum 10                 開啓時間共享功能並設定共享級別,
                                                       開啓此參數後本機不回去同步別機時間到本機
第22行 allow 172.25.151.0/24       允許此網段的主機進行時間同步(具體網段根據具體情況而定)

systemctl restart chronyd.service  重啓服務

關閉時間服務器防火牆。

在客戶端:
vim /etc/chrony.conf
server 服務端IP iburst
systemctl restart chronyd.service
chronyc sources -v                         檢測是否同步成功

示例如下:

在服務器端:

修改配置文件

重啓服務,關閉防火牆

在客戶端:

編輯配置文件

重啓服務,驗證同步結果