12.Linux系統的拍錯必備方法——日誌分析

       生活中的日誌是記錄你生活的點點滴滴,讓它把你內心的世界表露出來,更好的詮釋自己的內心世界。

而電腦裏的日誌可以是有價值的信息寶庫,也可以是毫無價值的數據泥潭。對於運維技術人員來說,日誌毫

無疑問起着至關重要的作用。

1.查看系統中的日誌   rsyslog

此服務是用來採集系統日誌的,他不生產日誌,只是起到採集作用

2.rsyslog的日誌文件目錄

/var/log/messages   ## 服務信息日誌
  /var/log/secure         ## 系統登陸日誌
/var/log/cron            ## 定時任務日誌
/var/log/maillog        ## 郵件日誌
/var/log/boot.log      ## 系統啓動日誌

3.日誌管理服務

1) rsyslog    

   ## 負責採集日誌和分類存放日誌

2) 日誌分類   

    vim /etc/rsyslog.conf                     ##配置文件

什麼類型的日誌.什麼級別的日誌        /存放文件

                *.*                                       /var/log/westos

服務類型有:

auth pam產生的日誌
authpriv ssh.ftp等登錄信息的驗證信息
cron  時間任務相關
kren 內核
lpr 打印
mail  郵件
mark(syslog)-re=rsyslog  服務內部的信息,時間標識
news 新聞組
user 用戶程序產生的相關信息
uucp unix to unix copy,unix主機之間相關的通訊
local 1~7 自定義的日誌設備


 日誌的級別有:

debug 有調試信息的,日誌信息最多
info   一般信息的日誌,最常用
notice 最具有重要性的普通條件的信息
warning 警告級別
err 錯誤級別,阻止某個功能或者模塊不能正常工作的信息
crit 嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息
alert 需要立刻修改的信息
emerg  內核崩潰等嚴重信息
none 什麼都不記錄

   注意:1.每次配置完文件後,一定要重啓服務才能生效!!

systemctl restart rsyslog.service   ##重啓日誌服務

           2.從上到下,級別從低到高,記錄的信息越來越少

           3.詳細的可以查看手冊:man  3  syslog

e.g.我們查看配置文件中原有的日誌項目

3)日誌的遠程同步

日誌的同步要在發送和接收兩端同時設定

a.發送端配置

vim /etc/rsyslog.conf    ##配置日誌採集文件

將所有類型所有級別的日誌同步到ip地址爲172.25.254.222的主機中,

@ip表示採用UDP的傳輸協議同步,@@表示採用TCP的方式傳輸協議進行同步

b.接收端配置

vim /etc/rsyslog.conf    ##配置日誌採集文件

去掉15、16行的註釋符

如果採用TCP傳輸協議同步,需要去掉19、20行的註釋符

重啓日誌服務,關閉防火牆,使配置生效

systemctl restart rsyslog.service      ##重啓日誌服務
systemctl stop firewalld.service       ##關閉防火牆
systemctl disable firewalld.service    ##關閉防火牆開機自啓

爲了讓我們實驗結果更爲清晰,我們清空日誌內容,並指定日誌內容,分別在接收端額發送端查看

> /var/log/messages    ##清空日誌文件
logger test          ##指定文件test到日誌中

4.日誌採集格式的設定

配置的文件還是  /etc/rsyslog.conf

 vim /etc/rsyslog.conf     ##打開配置文件,設定採集格式

 可以設定的格式內容有:

%timegenerated% 顯示日誌時間
%FROMHOST-IP% 顯示主機ip
 %syslogtag% 顯示記錄目標
%msg% 日誌內容
\n  換行

例如:

$template LOCFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg% \n"
##  LOGFMT可以自定義,但必須是大寫字母 
*.info;mail.none;authpriv.none;cron.none          /var/log/messages;LOCFMT
##定義之後要在相應的採集文件後面添加指定的文件採集格式

systemctl restart rsyslog.service 
##重啓日誌服務,使配置文件生效

測試:

發送端:

接收端:

5.時間同步服務

服務名稱 : chronyd

服務端:

配置文件   /etc/chrony.conf

vim  /etc/chrony.conf   ##打開時間同步配置文件,配置相關參數

1)允許指定ip或者網絡位相同的的客戶端來同步本機時間

2)設定服務端的時間優先級爲10(本機不同步任何主機的時間,本機作爲時間源)

客戶端:

配置文件   /etc/chrony.conf

配置內容爲:

server  172.25.254.222  iburst  ##本機立即同步222主機的時間

配置完畢後,重啓服務

systemctl restart chronyd.service   ##重啓時間同步服務

測試:

1)更改服務端的時間,發現客戶端的時間被同步更改

2)查看時間源,可以看到同步的時間來源

##可以看到時間源中Source mode=server;IP爲所同步的服務器的IP

6.timedatectl 命令 

timedatectl                                      ##管理系統時間
timedatectl status                               ##顯示當前時間信息
timedatectl set-timezone "Asia/Shanghai"         ##設置當前時區,更改當前時區分爲東8區
 timedatectl set-time "2016-08-08 12:12"         ## 設置當前時間
timedatectl set-local-rtc 0/1                    ##設置是否使用utc時間
timedatectl list-timezones                       ##查看支持的時區

 timedatectl                                      ##管理系統時間

1)  timedatectl status                               ##顯示當前時間信息


2) timedatectl set-timezone "Asia/Hong_Kong"         ##設置當前時區,更改當前時區爲香港的時區


3) timedatectl set-time "2019-02-07 12:12"         ## 設置當前時間


4)timedatectl set-local-rtc 0/1                    ##設置是否使用utc時間


5)timedatectl list-timezones                       ##查看支持的時區

7.查看內存中的日誌  journalctl

journalctl -n 5                   ##查看最近5條日誌
journalctl -p err                 ##查看錯誤日誌
journalctl -o verbose             ##查看日誌的詳細參數
journalctl --since "**:**"        ##查看從**:**開始的日誌
journalctl --until "**:**"        ##查看到**:**爲止的日誌

1)journalctl -n 5                   ##查看最近5條日誌


2) journalctl -p err                 ##查看錯誤日誌

3) journalctl -o verbose             ##查看日誌的詳細參數

4) journalctl  --since  "00:00"        ##查看從00:00開始的日誌

5) journalctl  --until  "00:02"        ##查看到00:02爲止的日誌

需要注意的是,默認systemd-journald(內存中的日誌)不保存到硬盤中,

所以關機後再次開機只能看到本次開機之後的日誌,上一次關機之前的日誌是無法查看的

那麼如何使用systemd-journald保存系統日誌?

使用下列命令可以保存系統日誌(一般情況下不建議使用):

mkdir /var/log/journal                 ##新建一個存放目錄
chgrp systemd-journal /var/log/journal ##指定目錄的所有組爲systemd-journal
chmod g+s /var/log/journal             ##給用戶所有組權限
killall -l systemd-journald            
ls /var/log/journal                    
stat /var/log/journal/946cb0e817ea4adb916183df8c4fc817  
reboot                                 ##重啓虛擬機
ls /var/log/journal                    
stat /var/log/journal/946cb0e817ea4adb916183df8c4fc817 

重啓:

 查看日誌:

可以看到重啓前的日誌依然存在

注意:這種方法不建議使用的原因是:當你把大量的日誌信息保存到硬盤中,日積月累,你的硬盤會被不斷填充,最後導致系統不能正常運行。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章