<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 18.1 什么是登錄文件 “詳細而確實的分析以及備份系統的登錄文件”是一個系統管理員應該要進行的任務之一。 那么什么是登錄文件呢?簡單的說,就是記錄系統活動信息的幾個文件, 例如:何時、何地 (來源 IP)、何人 (什么服務名稱)、做了什么動作 (訊息登錄啰)。 換句話說就是:記錄系統在什么時候由哪個程序做了什么樣的行為時,發生了何種的事件等等。 ### 18.1.1 CentOS 7 登錄文件簡易說明 要知道的是,我們的 Linux 主機在背景之下有相當多的 daemons 同時在工作著,這些工作中的程序總是會顯示一些訊息, 這些顯示的訊息最終會被記載到登錄文件當中啦。也就是說,記錄這些系統的重要訊息就是登錄文件的工作啦! * 登錄文件的重要性 為什么說登錄文件很重要,重要到系統管理員需要隨時注意他呢?我們可以這么說: * 解決系統方面的錯誤: 用 Linux 這么久了,你應該偶而會發現系統可能會出現一些錯誤,包括硬件捉不到或者是某些系統服務無法順利運行的情況。 此時你該如何是好?由于系統會將硬件偵測過程記錄在登錄文件內,你只要通過查詢登錄文件就能夠了解系統作了啥事! 并且由[第十六章我們也知道 SELinux](../Text/index.html) 與登錄文件的關系更加的強烈!所以啰,查詢登錄文件可以克服一些系統問題啦! * 解決網絡服務的問題: 你可能在做完了某些網絡服務的設置后,卻一直無法順利啟動該服務,此時該怎辦?去廟里面拜拜抽簽嗎? 三太子大大可能無法告訴你要怎么處理呢!由于網絡服務的各種問題通常都會被寫入特別的登錄文件, 其實你只要查詢登錄文件就會知道出了什么差錯,還不需要請示三太子大大啦!舉例來說,如果你無法啟動郵件服務器 (postfix), 那么查詢一下 /var/log/maillog 通常可以得到不錯的解答! * 過往事件記錄簿: 這個東西相當的重要!例如:你發現 WWW 服務 (httpd 軟件) 在某個時刻流量特別大,你想要了解為什么時, 可以通過登錄文件去找出該時段是哪些 IP 在連線與查詢的網頁數據為何,就能夠知道原因。 此外,萬一哪天你的系統被入侵,并且被利用來攻擊他人的主機,由于被攻擊主機會記錄攻擊者,因此你的 IP 就會被對方記錄。這個時候你要如何告知對方你的主機是由于被入侵所導致的問題, 并且協助對方繼續往惡意來源追查呢?呵呵!此時登錄文件可是相當重要的呢! ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 所以我們常說“天助自助者”是真的啦!你可以通過 (1)察看屏幕上面的錯誤訊息與 (2)登錄文件的錯誤信息,幾乎可以解決大部分的 Linux 問題! * Linux 常見的登錄文件文件名 登錄文件可以幫助我們了解很多系統重要的事件,包括登陸者的部分信息,因此登錄文件的權限通常是設置為僅有 root 能夠讀取而已。 而由于登錄文件可以記載系統這么多的詳細信息,所以啦,一個有經驗的主機管理員會隨時隨地查閱一下自己的登錄文件, 以隨時掌握系統的最新脈動!那么常見的幾個登錄文件有哪些呢?一般而言,有下面幾個: * /var/log/boot.log: 開機的時候系統核心會去偵測與啟動硬件,接下來開始各種核心支持的功能啟動等。這些流程都會記錄在 /var/log/boot.log 里面哩! 不過這個文件只會存在這次開機啟動的信息,前次開機的信息并不會被保留下來! * /var/log/cron: 還記得[第十五章例行性工作調度](../Text/index.html)吧?你的 crontab 調度有沒有實際被進行? 進行過程有沒有發生錯誤?你的 /etc/crontab 是否撰寫正確?在這個登錄文件內查詢看看。 * /var/log/dmesg: 記錄系統在開機的時候核心偵測過程所產生的各項信息。由于 CentOS 默認將開機時核心的硬件偵測過程取消顯示, 因此額外將數據記錄一份在這個文件中; * /var/log/lastlog: 可以記錄系統上面所有的帳號最近一次登陸系統時的相關信息。[第十三章講到的 lastlog](../Text/index.html#uselinux_find) 指令就是利用這個文件的記錄信息來顯示的。 * /var/log/maillog 或 /var/log/mail/*: 記錄郵件的往來信息,其實主要是記錄 postfix (SMTP 協定提供者) 與 dovecot (POP3 協定提供者) 所產生的訊息啦。 SMTP 是發信所使用的通訊協定, POP3 則是收信使用的通訊協定。 postfix 與 dovecot 則分別是兩套達成通訊協定的軟件。 * /var/log/messages: 這個文件相當的重要,幾乎系統發生的錯誤訊息 (或者是重要的信息) 都會記錄在這個文件中; 如果系統發生莫名的錯誤時,這個文件是一定要查閱的登錄文件之一。 * /var/log/secure: 基本上,只要牽涉到“需要輸入帳號密碼”的軟件,那么當登陸時 (不管登陸正確或錯誤) 都會被記錄在此文件中。 包括系統的 login 程序、圖形接口登陸所使用的 gdm 程序、 su, sudo 等程序、還有網絡連線的 ssh, telnet 等程序, 登陸信息都會被記載在這里; * /var/log/wtmp, /var/log/faillog: 這兩個文件可以記錄正確登陸系統者的帳號信息 (wtmp) 與錯誤登陸時所使用的帳號信息 (faillog) ! 我們在[第十章談到的 last](../Text/index.html#last) 就是讀取 wtmp 來顯示的, 這對于追蹤一般帳號者的使用行為很有幫助! * /var/log/httpd/*, /var/log/samba/*: 不同的網絡服務會使用它們自己的登錄文件來記載它們自己產生的各項訊息!上述的目錄內則是個別服務所制訂的登錄文件。 常見的登錄文件就是這幾個,但是不同的 Linux distributions ,通常登錄文件的文件名不會相同 (除了 /var/log/messages 之外 )。所以說,你還是得要查閱你 Linux 主機上面的登錄文件設置數據, 才能知道你的登錄文件主要文件名喔! * 登錄文件所需相關服務 (daemon) 與程序 那么這些登錄文件是怎么產生的呢?基本上有兩種方式,一種是由軟件開發商自行定義寫入的登錄文件與相關格式, 例如 WWW 軟件 apache 就是這樣處理的。另一種則是由 Linux distribution 提供的登錄文件管理服務來統一管理。 你只要將訊息丟給這個服務后,他就會自己分門別類的將各種訊息放置到相關的登錄文件去!CentOS 提供 rsyslog.service 這個服務來統一管理登錄文件喔! 不過要注意的是,如果你任憑登錄文件持續記錄的話,由于系統產生的信息天天都有,那么你的登錄文件的容量將會長大到無法無天~ 如果你的登錄文件容量太大時,可能會導致大文件讀寫效率不佳的問題 (因為要從磁盤讀入內存,越大的文件消耗內存量越多)。 所以啰,你需要對登錄文件備份與更新。那...需要手動處理喔?當然不需要,我們可以通過 logrotate (登錄文件輪替) 這玩意兒來自動化處理登錄文件容量與更新的問題喔! 所謂的 logrotate 基本上,就是將舊的登錄文件更改名稱,然后創建一個空的登錄文件,如此一來, 新的登錄文件將重新開始記錄,然后只要將舊的登錄文件留下一陣子,嗯!那就可以達到將登錄文件“輪轉”的目的啦! 此外,如果舊的記錄 (大概要保存幾個月吧!) 保存了一段時間沒有問題,那么就可以讓系統自動的將他砍掉, 免得占掉很多寶貴的硬盤空間說! 總結一下,針對登錄文件所需的功能,我們需要的服務與程序有: * systemd-journald.service:最主要的訊息收受者,由 systemd 提供的; * rsyslog.service:主要登錄系統與網絡等服務的訊息; * logrotate:主要在進行登錄文件的輪替功能。 由于我們著眼點在于想要了解系統上面軟件所產生的各項信息,因此本章主要針對 rsyslog.service 與 logrotate 來介紹。 接著下來我們來談一談怎么樣規劃這兩個玩意兒。就由 rsyslog.service 這支程序先談起吧!畢竟得先有登錄文件,才可以進行 logrotate 呀!您說是吧! * CentOS 7.x 使用 systemd 提供的 journalctl 日志管理 CentOS 7 除了保有既有的 rsyslog.service 之外,其實最上游還使用了 systemd 自己的登錄文件日志管理功能喔!他使用的是 systemd-journald.service 這個服務來支持的。基本上,系統由 systemd 所管理,那所有經由 systemd 啟動的服務,如果再啟動或結束的過程中發生一些問題或者是正常的訊息, 就會將該訊息由 systemd-journald.service 以二進制的方式記錄下來,之后再將這個訊息發送給 rsyslog.service 作進一步的記載。 systemd-journald.service 的記錄主要都放置于內存中,因此在存取方面性能比較好~我們也能夠通過 journalctl 以及 systemctl status unit.service 來查看各個不同服務的登錄文件! 這有個好處,就是登錄文件可以隨著個別服務讓你查閱,在單一服務的處理上面,要比跑到 /var/log/messages 去大海撈針來的簡易很多! 不過,因為 system-journald.service 里面的很多觀念還是沿用 rsyslog.service 相關的信息,所以,本章還是先從 rsyslog.service 先談起, 談完之后再以 journalctl 進一步了解 systemd 是怎么去記錄登錄文件日志功能的呦! ### 18.1.2 登錄文件內容的一般格式 一般來說,系統產生的訊息經過記錄下來的數據中,每條訊息均會記錄下面的幾個重要數據: * 事件發生的日期與時間; * 發生此事件的主機名稱; * 啟動此事件的服務名稱 (如 systemd, CROND 等) 或指令與函數名稱 (如 su, login..); * 該訊息的實際數據內容。 當然,這些信息的“詳細度”是可以修改的,而且,這些信息可以作為系統除錯之用呢! 我們拿登錄時一定會記載帳號信息的 /var/log/secure 為例好了: ``` [root@study ~]# cat /var/log/secure Aug 17 18:38:06 study login: pam_unix(login:session): session opened for user root by LOGIN(uid=0) Aug 17 18:38:06 study login: ROOT LOGIN ON tty1 Aug 17 18:38:19 study login: pam_unix(login:session): session closed for user root Aug 18 23:45:17 study sshd[18913]: Accepted password for dmtsai from 192.168.1.200 port 41524 ssh2 Aug 18 23:45:17 study sshd[18913]: pam_unix(sshd:session): session opened for user dmtsai by (uid=0) Aug 18 23:50:25 study sudo: dmtsai : TTY=pts/0 ; PWD=/home/dmtsai ; USER=root ; COMMAND=/bin/su - Aug 18 23:50:25 study su: pam_unix(su-l:session): session opened for user root by dmtsai(uid=0) &#124;--日期/時間---&#124;--H--&#124;-服務與相關函數-&#124;-----------訊息說明------&gt; ``` 我們拿第一筆數據 (共兩行) 來說明好了,該數據是說:“在 08/17 的 18:38 左右,在名為 study 的這部主機系統上,由 login 這個程序產生的訊息,內容顯示 root 在 tty1 登陸了,而相關的權限給予是通過 pam_unix 模塊處理的 (共兩行數據)。”有夠清楚吧!那請您自行翻譯一下后面的幾條訊息內容是什么喔! 其實還有很多的信息值得查閱的呢!尤其是 /var/log/messages 的內容。記得一個好的系統管理員, 要常常去“巡視”登錄文件的內容喔!尤其是發生下面幾種情況時: * 當你覺得系統似乎不太正常時; * 某個 daemon 老是無法正常啟動時; * 某個使用者老是無法登陸時; * 某個 daemon 執行過程老是不順暢時; 還有很多啦!反正覺得系統不太正常,就得要查詢查詢登錄文件就是了。 ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 提供一個鳥哥常做的檢查方式。當我老是無法成功的啟動某個服務時,我會在最后一次啟動該服務后,立即檢查登錄文件, 先 (1)找到現在時間所登錄的信息“第一字段”; (2)找到我想要查詢的那個服務“第三字段”, (3)最后再仔細的查閱第四字段的信息,來借以找到錯誤點。 另外,不知道你會不會覺得很奇怪?為什么登錄文件就是登錄本機的數據啊~那怎么登錄文件格式中,第二個字段項目是“主機名稱”啊? 這是因為登錄文件可以做成登錄文件服務器,可以收集來自其他服務器的登錄文件數據喔!所以啰,為了了解到該訊息主要是來自于哪一部主機, 當然得要有第二個字段項目說明該信息來自哪一部主機名稱啰!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看