RECH8.0版本學習 days 7

分析和存儲日誌

redhat企業Linux中建了一個基於syslog協議的標準日誌記錄系統。systemd-journald 和rsyslog服務處理RedhatLinux8中的syslog的消息。

systemd-journald服務是操作系統時間日誌架構的核心。它收集包括內核、引導過程早期階段的輸出、守護進程啓動和運行時的標準輸出以及標準錯誤、syslog事件。

rsyslog服務從日誌中讀取systemd-journald收到的syslog消息對齊進行排序,並將它們存貯在/var/log目錄(系統重啓後不保留)中。這些日誌是人類可讀的消息。

系統日誌文件:

日誌文件 存儲的消息類型
/var/log/messages 大多數系統日誌消息記錄在此處。例外包括與身份驗證、電子郵件處理和調度作業執行相關的消息以及純粹與調試相關的消息。
/var/log/secure 與安全性和身份驗證事件相關的syslog消息。
/var/log/maillog 與郵件服務器相關的syslog消息。
/var/log/cron 與調度作業執行相關的syslog消息。
/var/log/boot.log 與系統啓動相關的非syslog控制檯消息。

有些應用不使用syslog管理他們的日誌消息,通常會放在/var/log的某一子目錄中。如apache web server。

syslog優先級概述:

代碼 優先級 嚴重性
0 emerg 系統不可用
1 alert 必須立即採取措施
2 crit 臨界情況
3 err 非嚴重錯誤情況
4 warning 警告情況
5 notice 正常但重要的事件
6 info 信息性事件
7 debug 調式級別信息。

rsyslog服務使用日誌消息的設備和優先級來確定如何進行處理。其配置規則位於/etc/rsyslog.con文件和/etc/rsyslog.d目錄中擴展名爲.conf的任何文件。

每個控制這syslog消息排序方式的規則都對應了其中一個配置文件中的一行。

日誌文件輪轉

logrotate工具會輪轉日誌文件,以防止他們在含有/var/log目錄的文件系統中佔用太多空間。輪轉日誌文件時,使用指示輪轉日期的擴展名對其重命名。如在2019-01-30輪轉,/var/log/messages文件可能會變成/var/log/messages-20190130。輪轉若干次(通常在四周之後),丟棄最舊的日誌文件以釋放磁盤空間。

分析syslog條目

rsyslog服務在日誌文件中記錄條目時採用一種標準的格式。/var/log/secure日誌文件中的日誌消息:

利用tail監控日誌文件

監控事件的一個或多個日誌文件有助於問題的重現。tail -f /path/to/file

命令輸出指定文件的最後10行,並在新行寫入到文件時繼續輸出他們。如:tail  -f  /var/log/secure

手動發送syslog消息

logger命令可以發送消息到rsyslog服務。默認情況下,它將優先級爲notice的消息發送給user設備,除非通過-p選項另有指定。

向rsyslog服務發送消息並記錄在/var/log/boot.log日誌文件中,logger命令如下:

logger -p  local7.notice “Log entry created on host”

查看系統日誌條目

systemd-kournald服務將日誌數據存儲在帶有索引的結構化二進制文件中,該文件稱爲日誌。在RedhatLinux8中,默認情況/run/log目錄用於存儲系統日誌。/run/log的內容在系統重啓後將被清除。要從日誌中檢索日誌消息,使用journalctl命令。journalctl命令突出顯示重要的日誌消息:優先級爲notice或warning的消息顯示爲粗體文本,而優先級爲error或以上的消息顯示爲紅色文本。默認情況下,journalctl -n 顯示最後10個條目,如果要顯示最後5個條目,可以用journalctl -n 5。

journalctl -p可以接受優先級的名稱或編號作爲參數,並顯示該優先級以及以上的日誌條目。

journalctl -f 命令輸出系統日誌的最後10行,並在新日誌條目寫入到日誌中繼續輸出他們。退出本進程用ctrl + c組合鍵。journalctl命令可以理解debug、info、notice、warning、err、crit、alert和emerg優先級。如,列出優先級爲err或以上的日誌條目:

journalctl -p err

journalctl命令有2個選項,分別是--since和--until,他們可以將輸出限制爲特定的時間範圍。2個選項都採用格式爲“YYYY-MM-DDhh:mm:ss”的時間參數。如果省略日期,默認爲當天;省略時間,則命令假定爲自00:00:00起的一整天。這2個選項還接受yesterday、today和tomorrow作爲有效的參數。

實例:journalctl命令列出今天記錄中的所有日誌條目:

journalctl  --since today

列出範圍從2019-02-10 20:30:00到2019-02-13 12:00:00的所有日誌條目。

journalctl  --since  “2019-02-10  20:30:00”  --until “2019-02-13 12:00:00”

指定相對於當前的某個時間以後的所有條目,如指定上一小時的所有條目。命令如下:

journalctl  --since  “-1 hour”

日誌條目中還附帶了只有在大開詳細輸出時才能看到的字段。如:

journalctl  -o verbose 

保留系統日誌

永久存儲系統日誌

默認情況下,系統日誌保存在/run/log/journal目錄中,這意味着系統重啓這些日誌會被清除。可以在/etc/systemd/journald.conf文件中更改systemd-journald服務的配置設置,使日誌在系統重啓後可以保留下來。

/etc/systemd/journald.conf文件中的storage參數決定系統日誌以易失性方式存儲,還是系統重啓後持久保留。

storage參數可以設置爲:

persistent:將日誌存儲在/var/log/journal目錄中,這可以在系統重啓後持久保留。若/var/log/journal目錄不存在,systemd-journald服務會創建它。

volatile:將日誌存儲在易失性/run/log/journal目錄中。日誌不會在系統重啓後持久保留。

auto:rsyslog決定要使用持久存儲還是易失性存儲。如果/var/loh/journal目錄存在,那麼rsyslog會使用持久存儲,否則使用易失性存儲。此參數爲默認參數。

默認情況,日誌的大小不能超過文件系統的10%,也不能造成文件系統的可用空間低於15%。可在/etc/systemd/journald.conf中爲運行時和持久日誌調整這些值。

journalctl -b 將輸出限制爲特定的系統啓動,如,僅檢索第一次系統啓動的條目:

journalctl 命令檢索第二次系統啓動的條目:

journalctl -b 僅檢索當前系統啓動的條目。

維護準確的時間

設置本地時鐘和時區

網絡時間協議(NTP)是計算機用於通過互聯網提供並獲取正確時間信息的一種標準方法。timedatectl命令簡要顯示當前的時間相關的系統設置,如系統的當前時間、時區和NTP同步設置。

系統提供了包含時區的數據庫,可通過timedatectl list-timezones命令列出。

tzselect命令識別正確的zoneinfo時區名稱。本命令不包括UTC(協調世界時)時區的名稱,使用timedatectl set-timezone UTC命令可將系統的當前時區設置爲UTC。

root用戶可以使用timedatectl set-timezone命令更改系統設置來更新當前時區。示例:

將當前時區更改爲America/Phoenix。

timedatectl -setime 更改系統的當前時間,格式爲“YYYY-MM-DD  hh:mm:ss”格式指定。示例:

timedatectl set-ntp命令可啓用或禁用NTP同步(自動調整時間),該選項需要true(打開)或false(關閉)參數。示例:

打開NTP同步   timedatectl set-ntp true。

配置和監控CHRONYD服務

chronyd服務通過與配置的NTP服務器進行同步,使通常不準確的本地硬件時鐘(RTC)保存正確運行。如沒有可用的網絡連接,chronyd將計算RTC時鐘漂移,記錄在/etc/chrony.conf配置文件指定的dirftfile變量中。默認情況下,chronyd服務使用NTP Pool Project的服務器同步時間,不需要額外的配置。參考時鐘是stratum 0 時間源。與之直接關聯的NTP服務器是stratum 1, 而與該NTP服務器同步時間的計算機則是stratum 2時間源。

/etc/chrony.conf配置文件中配置兩種時間源類別。server 比本地NTP服務器高一個級別,peer屬於同一個級別。 本配置文件中,server classroom.example.com  iburst 行會使chrony 服務使用classroom.example.com NTP時間源。

chrony  sources 命令驗證本地系統是否使用NTP服務器無縫同步系統時鐘。如需獲取包含額外說的更詳細輸出,使用-v選項。 示例;

S(源狀態)字段中的*字符表示classroom.example.com服務器已被用作時間源,是計算機當前與之同步的NTP服務器。

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