1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Linux 系統(tǒng)日志分析與管理

        共 8050字,需瀏覽 17分鐘

         ·

        2024-07-04 17:49

        閱讀目錄

        • 接收端配置

        • 發(fā)送端配置

        Linux系統(tǒng)內(nèi)核和許多程序會產(chǎn)生各種錯誤信息、警告信息和其他的提示信息,這些信息對管理員了解系統(tǒng)的運行狀態(tài)是非常有用的,所以應該把它們寫到日志文件中去,完成這個過程的程序就是syslog,syslog可以根據(jù)日志的類別和優(yōu)先級將日志保存到不同的文件中.

        關于Linux常見的日志文件名及作用

        日志文件可以幫助我們了解很多系統(tǒng)重要的事件,包括登陸者的部分信息,因此日志文件的權限通常是配置為僅有 root 能夠讀取而已,而由于日志文件可以記錄很多的系統(tǒng)詳細信息,所以,一個有經(jīng)驗的Linux管理員會隨時隨地查閱一下自己的日志文件,以隨時掌握系統(tǒng)的最新動態(tài),那么常見的日志文件有哪些呢?一般而言有下面幾個:

        ● /var/log/cron
        主要記錄關于crontab計劃任務的相關信息,比如,系統(tǒng)計劃任務的錯誤配置,計劃任務的修改等.

        ● /var/log/btmp
        記錄錯誤登陸日志,這個文件是二進制的,不能使用cat命令查看,而要使用lastb命令查看.

        ● /var/run/utmp
        記錄當前一登陸用戶的信息,同樣不能使用cat命令查看,而要使用w,who,users命令來查詢.

        ● /var/log/dmesg
        主要記錄系統(tǒng)在開機時內(nèi)核檢測過程所產(chǎn)生的信息,默認情況下RHEL系統(tǒng)關閉了開機回顯,如果你要查看則需要在這個文件下查閱即可.

        ● /var/log/lastlog
        記錄了系統(tǒng)上面所有賬戶最近一次登陸系統(tǒng)時的相關信息,lastlog命令就是讀取這個文件里的記錄來顯示的.

        ● /var/log/malilog or /var/log/mail/*
        記錄著郵件的往來信息,默認是postfix郵件服務器的一些信息.

        ● /var/log/messages
        這個文件非常重要,幾乎系統(tǒng)發(fā)生的錯誤信息,或者重要信息都會被記錄在這里.

        ● /var/log/secure
        只要涉及到需要用戶名和密碼的操作,那么當?shù)顷懴到y(tǒng)是(不論正確錯誤),都會記錄到這里.

        ● /var/log/wtmp or /var/log/faillog
        這兩個文件可以記錄正確登陸系統(tǒng)者的賬戶信息(wtmp),與錯誤登陸時所使用的賬戶信息,last命令就是讀取wtmp文件來獲取的.

        常見的日志文件就是這幾個,但是不同的 Linux 發(fā)行版,通常日志文件的名稱和存儲目錄都不會相同,但此處除了/var/log/messages 之外,所以說你還是得要查閱你 Linux 主機上面的日志文件配置數(shù)據(jù),才能知道你的日志文件主要是放在哪里了.

        日志文件所需相關服務與進程

        其實日志文件的產(chǎn)生,基本上有兩種方式:一種是有軟件開發(fā)商自定義寫入的日志文件與相關格式,另一種則是由Linux發(fā)行商提供的日志文件管理服務來統(tǒng)一管理,你只要將這個信息丟給這個服務,它就會自己分門別類的放置到相關的日志文件中去,RHEL系統(tǒng)提供syslogd這個服務來統(tǒng)一管理日志文件.

        除了syslogd這個服務之外,內(nèi)核也需要額外的登陸服務來記錄內(nèi)核產(chǎn)生的各項信息,這個專門用來記錄內(nèi)核日志的服務就是klogd.所以說,日志文件所需的服務主要是syslogd與klogd這兩者.

        不過需要注意的是,由于系統(tǒng)每天都在產(chǎn)生大量的日志,如果日志文件量太大,就會影響系統(tǒng)的正常運轉,這時候我們可以通過logrtate來自動處理日志文件與切割更新的問題.

        所謂logrotate(日志輪詢),基本上就是將舊的文件改變名稱,然后新建一個空文件,如此一來新的日志文件將重新開始記錄,這樣就可以實現(xiàn)日志輪詢啦,總結一下,針對日志文件所需的功能,我們需要的服務與程序有以下幾個:

        syslogd:主要登陸系統(tǒng)與網(wǎng)絡等服務的信息
        klogd:主要登陸內(nèi)核產(chǎn)生的各項信息
        logrotate:主要進行日志文件的輪詢

        以上就是關于日志相關的常用常識,下面我們將開始實際看一下日志服務的應用技巧.

        SYSlog日志文件的格式

        一般情況下,系統(tǒng)產(chǎn)生的信息經(jīng)過syslog而記錄下來的數(shù)據(jù)中,每條信息均會記錄下面的幾個數(shù)據(jù).

        ● 事件發(fā)生的日期與時間
        ● 發(fā)生此事件的主機名
        ● 啟動此事件的服務名,或函數(shù)名
        ● 該信息的實際數(shù)據(jù)內(nèi)容

        當然這些信息日志的詳細程度也是可以修改的,而且這些信息可以作為系統(tǒng)的排錯之用,下面我們來看一下 /var/log/secure 這個日志文件,來簡單介紹一下它的記錄格式吧.

        [root@localhost ~]# cat /var/log/secure | head -n 5
        Oct 13 12:39:27 localhost polkitd[733]: Loading rules from directory /etc/polkit-1/rules.d
        Oct 13 12:39:27 localhost polkitd[733]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
        Oct 13 12:39:33 localhost sshd[1082]: Server listening on 0.0.0.0 port 22.
        Nov 28 09:36:41 localhost sshd[1364]: Accepted password for root from 192.168.1.20 port 63704 ssh2
        Nov 28 05:36:41 localhost sshd[1364]: pam_unix(sshd:session): session opened for user root by (uid=0)

        我們拿最后一條數(shù)據(jù)來說,該數(shù)據(jù)是說:在11月28號的下午5點36分,由localhost這臺主機,通過sshd服務pid號是1364傳來的消息,這個消息是通過pam_unix這個模塊產(chǎn)生的,內(nèi)容為session opened for user root by (uid=0),root開啟了活動.

        SYSlog配置文件的解析

        其實日志文件也有配置文件,它的目錄是 /etc/rsyslog.conf 基本上syslog針對各種服務于信息的記錄保存在這個配置文件里,這個文件規(guī)定了什么服務什么等級信息,以及需要被記錄在哪里,這三個東西,所以它的語法會是下面的樣子:

        [服務名稱] .=! [信息等級]            [記錄到哪里]

        authpriv.* /var/log/secure
        mail.info -/var/log/maillog
        cron.* /var/log/cron

        好了,接下來我們分成三個部分來解釋這幾信息的含義.

        [服務名稱]

        syslog本身有設置一些服務,你可以通過這些服務來存儲系統(tǒng)信息,syslog涉及的服務主要有以下這些:

        服 務 類 型 說 明
        auth(authpriv) 與認證有關的機制,例如login,ssh,su等需要賬號密碼
        cron 例行工作調度,cron/at等生成信息日志的地方
        daemon 與這個daemon有關的信息
        kern 內(nèi)核產(chǎn)生的信息
        lpr 打印相關的信息
        mail 只要與郵件有關的信息都記錄在這里
        news 與新聞組服務器有關的東西
        syslog syslogd本身生成的信息
        user,uucp,local0-local7 與Unix-Like機器本身有關的一些信息

        對配置文件的幾點說明:
        ● 日志類型和優(yōu)先級由點號(.)分開,例如 kern.debug 表示由內(nèi)核產(chǎn)生的調試信息
        ● kern.debug 的優(yōu)先級大于 debug
        ● 星號(*)表示所有,例如 .debug 表示所有類型的調試信息,kern. 表示由內(nèi)核產(chǎn)生的所有消息
        ● 可以使用逗號(,)分隔多個日志類型,使用分號(;)分隔多個選擇器

        對日志的操作包括:
        ● 將日志輸出到文件,例如 /var/log/maillog 或 /dev/console
        ● 將消息發(fā)送給用戶,多個用戶用逗號(,)分隔,例如 root,amrood
        ● 通過管道將消息發(fā)送給用戶程序,注意程序要放在管道符(|)后面
        ● 將消息發(fā)送給其他主機上的 syslog 進程,這時 /etc/syslog.conf文件后面一列為以@開頭的主機名(IP)

        [信息等級]

        同一個服務所產(chǎn)生的信息也是有差別的,有啟動時僅通知系統(tǒng)而已的一般信息(information),有出現(xiàn)還不至于影響到正常運行的警告信息 (warn),還有系統(tǒng)硬件發(fā)生嚴重錯誤時,所產(chǎn)生的重大問題信息(error),基本上syslog將信息分為七個主要的等級,依序是這樣的(由不重要排列到重要信息等級).

        等 級 信 息 說 明
        debug 一般調試信息
        info 基本通知信息
        notice 普通通知信息
        warning(warn) 警告信息,但不影響正常使用
        err(error) 錯誤信息,可能影響系統(tǒng)服務
        crit 比錯誤信息還嚴重的錯誤信息
        alert 警告,比crit還嚴重的警告
        emerg(panic) 疼痛等級,系統(tǒng)已經(jīng)完蛋了
        * 代表所有日志等級

        好了,上面的介紹足夠生產(chǎn)環(huán)境的使用啦,如果想配置自定義日志位置,我想你能夠搞定了.

        SYSlog日志服務器配置

        想像一個環(huán)境,你的辦公室內(nèi)有一百臺 Linux 主機,每一臺負責一個網(wǎng)絡服務,你為了要了解每臺主機的狀態(tài),因此你常常需要登陸這一百主機去檢查你的日志文件,想想是不是很騷,幸好我們的日志服務可以集中管理,這樣我們只需要一臺服務器當作日志服務器,其他客戶端主動同步數(shù)據(jù)就好啦,是不是很方便啊.

        我們的RHEL系統(tǒng),默認的syslog本身就已經(jīng)具有這個日志文件服務器的功能了,只是默認并沒有啟動該功能而已,既然是日志服務器那么我們的 Linux 主機當然會啟動一個端口來監(jiān)聽了,那個默認的端口就是 UDP 的 514 啊.

        回到頂部

        接收端配置

        1.首先編輯日志服務器的配置文件,開啟相應的注釋,此處既可以使用TCP也可以使用UDP,兩者都可.

        [root@localhost ~]# vim /etc/rsyslog.conf

        14 # Provides UDP syslog reception
        15 $ModLoad imudp #此處我們開啟UDP的即可
        16 $UDPServerRun 514
        17
        18 # Provides TCP syslog reception
        19 #$ModLoad imtcp
        20 #$InputTCPServerRun 514

        2.重啟日志服務器,即可配置完成

        [root@localhost ~]# systemctl restart rsyslog
        [root@localhost ~]# systemctl status rsyslog

        ● rsyslog.service - System Logging Service
        Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
        Active: active (running) since Wed 2018-11-28 10:33:26 EST; 6s ago
        Docs: man:rsyslogd(8)
        http://www.rsyslog.com/doc/
        Main PID: 13746 (rsyslogd)
        CGroup: /system.slice/rsyslog.service
        └─13746 /usr/sbin/rsyslogd -n

        通過這個簡單的操作,你的 Linux 主機已經(jīng)可以接收來自其他主機的日志文件了,這里還要進行防火墻的規(guī)則放行制定端口,此處略過.

        回到頂部

        發(fā)送端配置

        至于發(fā)送端的配置就簡單多了,只要指定某個信息傳送到這部主機即可,舉例來說,我們的日志服務器 IP=192.168.1.10 ,而客戶端希望所有的數(shù)據(jù)都送給主機,我們可以進行一下操作.

        1.修改日志配置文件,添加以下數(shù)據(jù),保存退出即可.

         90 #*.* @@remote-host:514
        91 # ### end of the forwarding rule ###
        92
        93 *.* @192.168.1.10

        注意:可以使用 UDP 用一個@
        可以使用 TCP 用兩個@@

        2.重啟日志工具,即可配置完成

        [root@localhost ~]# systemctl restart rsyslog
        [root@localhost ~]# systemctl status rsyslog

        ● rsyslog.service - System Logging Service
        Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
        Active: active (running) since Wed 2018-11-28 10:33:26 EST; 6s ago
        Docs: man:rsyslogd(8)
        http://www.rsyslog.com/doc/
        Main PID: 13746 (rsyslogd)
        CGroup: /system.slice/rsyslog.service
        └─13746 /usr/sbin/rsyslogd -n

        SYSlog日志的輪替功能

        syslog 利用的是 daemon 的方式來啟動的,當有需求的時候立刻就會被運行的,但是 logrotate 卻是在規(guī)定的時間到了之后才來進行日志文件的輪替,所以這個 logrotate 程序當然就是掛在 cron 底下進行的,仔細看一下 /etc/cron.daily/里面的文件,/etc/cron.daily/logrotate 就是記錄了每天要進行的日志文件輪替的行為啦.

        一般情況下,日志的輪替會用到兩個配置文件,分別是 /etc/logrotate.conf 和 /etc/logrotate.d/ 這兩個目錄,首先我們來看一下,/etc/logrotate.conf這個文件里的內(nèi)容吧.

        [root@localhost ~]# cat /etc/logrotate.conf

        weekly #默認每個禮拜進行輪詢
        rotate 4 #保留幾個日志文件
        create #日志文件被重命名,新建日志文件存儲
        dateext
        #compress #壓縮輪詢后的日志
        include /etc/logrotate.d #導入其他日志配置文件

        /var/log/wtmp { #針對/var/log/wtmp所設置的參數(shù)
        monthly #每月輪替
        create 0664 root utmp #指定新建文件的權限,以及所有者和所屬組
        minsize 1M #大于1M后輪詢
        rotate 1 #僅保留一個wtmp.1而已
        }

        /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
        }

        其他的常用格式如下,我們可以自行自由發(fā)揮的.

        參 數(shù) 信 息 說 明
        daily 每天輪替
        weekly 每周輪替
        monthly 每月輪替
        rotate 數(shù)字 保留日志文件個數(shù)
        compress 舊日志啟用壓縮
        mail address 輪替時發(fā)送郵件提示
        missingok 日志不存在忽略警告
        notifempty 日志為空不進行輪替
        minsize 大小 日志輪替最小值
        size 大小 多大進行輪替
        dateext 使用日期格式后綴 secure-20181010

        系統(tǒng)自動定期進行日志輪替的原因:

        1./etc/cron.daily/有一個腳本,每天都會運行,查看是否有符合輪替的日志,然后進行相應處理
        2.我們嘗試在rsyslog配置文件中添加自己的日志記錄,然后并且強制執(zhí)行輪替,看會不會產(chǎn)生輪替文件
        3.先在配置文件中寫入自己的日志輪替規(guī)則
        4.強制執(zhí)行日志輪替logrotate –vf /etc/logrotate.conf

        鏈接:https://www.cnblogs.com/LyShark/p/10221821.html

        (版權歸原作者所有,侵刪)


        瀏覽 40
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            边做奶水边喷h高h前夫 | 国产黄色一级电影 | 夸克成人免费无码毛片 | 天天干夜夜拍 | 丁香五月天av | 久久人人爽A片国产传媒 | 第一页综合 | 国产女人与鲁交 | 亚洲成色网 | 69精品人妻一区二区三区 |