Linux syslog日誌系統詳解

一. syslog簡介

        syslog是一種工業標準的協議,可用來記錄設備的日誌。在UNIX系統,路由器、交換機等網絡設備中,系統日誌(System Log)記錄系統中任何時間發生的大小事件。管理者可以通過查看系統記錄,隨時掌握系統狀況。UNIX的系統日誌是通過syslogd這個進程記錄系統有關事件記錄,也可以記錄應用程序運作事件。通過適當的配置,我們還可以實現運行syslog協議的機器間通信,通過分析這些網絡行爲日誌,藉以追蹤掌握與設備和網絡有關的狀況。

功能:記錄至系統記錄。

二 . syslog服務與配置

  1. 安裝syslog軟件包

    1. 軟件包名稱爲:rsyslog-5.8.10-10.el6_6.x86_64

    2. 我用的是centos系統,配置的有第三方的yum源,我直接yum install直接裝就OK了

    3. 裝完後用 rpm -qa | grep syslog下看是否已安裝

2.syslog日誌系統可以根據程序詳細信息的不同定義不同的日誌級別。

3.Linux上的日誌系統分爲:syslog和syslog-ng(syslog日誌系統的升級版)

4.syslog服務:

        syslog服務進程分兩個,分別是:syslogd(系統,非內核產生的日誌)和klogd(專門記錄內核產生的日誌)

        kernel-->物理終端(/dev/console)-->/var/log/dmesg

                  /var/log/dmesg文件可以使用dmesg命令和cat查看文件內容

        日誌滾動(日誌切割):

                所謂的滾動是指歷史信息所保存的日誌,如;messages文件日誌會越來越大等到了某一段時間,會把messages文件重新命名爲messages.1,系統並重新創建messages文件,所以叫做日誌滾動

          /sbin/init

                /var/log/messages:系統標準錯誤日誌信息;非內核產生的引導信息,各子系統產生的信息

                /vat/log/maillog:郵件系統產生的日誌信息

                /vat/log/secure:安全相關log

系統自帶的日誌切割程序logrotate

logrotate腳本配置文件             

[root@localhost cron.daily]# pwd
/etc/cron.daily
[root@localhost cron.daily]# vim logrotate

 滾動日誌信息配置文件     

[root@localhost cron.daily]# pwd
/etc/cron.daily
[root@localhost cron.daily]# vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly                #每週滾動一次
# keep 4 weeks worth of backlogs
rotate 4              #只保留4個切割版本文件,超過後清除  
# create new (empty) log files after rotating old ones
create                #滾動完之後創建一個空的新的文件
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d   #包括/etc/logrotate.d 下的文件,手動添加可直接添加到此目錄
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly                #按月,自己定義
    create 0664 root utmp  #創建文件並0664權限
        minsize 1M         #最新1M
    rotate 1               #保留幾個版本
}
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}
# system-specific logs may be also be configured here.
[root@localhost cron.daily]#

syslog配置文件/etc/rsyslog.conf

注:centos 6 的配置文件是/etc/rsyslog.conf,centos5的配置文件是/etc/syslog.conf

5.配置文件定義格式爲facility.priority  action

            facility是指哪個facility來源產生的日誌;   priority是指拿個級別的日誌 ;action是指產生日誌怎麼辦是保存在文件中還是其他。。。

           facility可以理解爲日誌的來源或設備或選擇條件,目前常用的facility有以下幾種:

               auth                      #認證相關的

               authpriv                #權限,授權相關的

               cron                      #任務計劃相關的

               daemon                #守護進程相關的

               kern                       #內核相關的

               lpr                          #打印相關的

               mail                        #郵件相關的

               mark                       #標記相關的

               news                       #新聞相關的

               security                   #安全相關的,與auth類似

               syslog                      #syslog自己的

               user                         #用戶相關的

               uucp                        #unix to unix cp相關的

               local0到local7          #用戶自定義使用

               *                                #*表示所有的facility

priority(log level)日誌優先級的級別,一般分爲以下幾種級別(從低到高)

             注:級別越低記錄的越詳細

                debug                    #程序或系統的調試信息

                info                         #一般信息

                notice                     #不影響正常的功能,需要提醒用戶的重要事件

                warning/warn         #可能影響系統功能,需要提醒用戶的重要事件

                err/error                  #錯誤信息

                crit                           #比較嚴重的

                alert                         #必須馬上處理的

                emerg/canic            #會導致系統不可用的

                *                               #表示所有的日誌級別

                none                        #跟*相反,表示什麼也沒有

action(動作)日誌記錄的位置

                系統上的絕對路徑      #普通文件 如:/var/log/XXX

                |                                #管道 通過管道送給其他的命令出來

                終端                          #終端 如:/dev/console

                @host                      #遠程主機  如@10.1.1.1

                用戶                          #系統用戶 如:root

                *                               #登錄到系統上的所有用戶,一般emerg級別的日誌是這樣定義的

定義格式列子:

                mail.info  /var/log/mail.log   #表示將mail相關的,級別爲info及info以上級別的信息記錄到/var/log/mail.log文件中 

                auth.=info  @10.1.1.1            #表示將auth相關的,級別爲info的信息記錄到10.1.1.1主機上去,前提是10.1.1.1要能接收其主機發來的日誌信息

                user.!=error                            #表示記錄user相關的,不包括error級別的信息

                 user.!error                           #表示user.error相反

                *.info                                      #表示記錄所有的日誌信息的info級別

                mail.*                                      #表示記錄所有mail相關的所有級別的信息

                *.*                                           #表示記錄所有的日誌信息的所有的日誌級別

                cron.info;mail.info                  #多個日誌來源可以用“ ; ”隔開

                cron,mail.info                         #與cron.info;mail.info        是一個意思

                mail.*;mail.!=info                    #表示記錄mail相關的所有級別的信息,但是不包括info級別的信息


重啓服務

            #service rsyslog reload    注:不重啓但能讀到配置文件;不建議重啓

6.搭建Linux日誌服務器

編輯配置文件 [root@localhost etc]# vim  /etc/sysconfig/rsyslog

修改配置文件中SYSLOGD_OPTIONS="-c 5" 添加“ -r選項”即可

目的可以讓服務器能夠接受客戶端傳來的數據

    配置文件如下

[root@localhost etc]# vim  /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-r -c 5"
~

重啓syslog服務  

[root@localhost etc]# service rsyslog restart
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:-r option only supported in compatibility modes 0 to 2 - ignored
                                                           [確定]
[root@localhost etc]#

7.搭建syslog客戶端

    在syslog配置文件中修改/etc/rsyslog.conf

[root@localhost etc]# vim /etc/rsyslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  @192.168.1.66

# Log cron stuff
cron.*                                                  /var/log/cron
.
.
.
省略

重啓syslog客戶端

[root@localhost etc]# service rsyslog restart
關閉系統日誌記錄器:                                       [確定]
啓動系統日誌記錄器:-r option only supported in compatibility modes 0 to 2 - ignored
                                                           [確定]
[root@localhost etc]#



注:如果以上內容發現錯誤,請告知留言即可,以方便糾正保證內容的準確性!!!

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