1. 程式人生 > >Linux系統級日誌系統

Linux系統級日誌系統

  linux日誌系統,在不同的發行版本名字不同。本質一樣都是對系統執行非正常狀態的記錄。。。

rhel5.x    syslog
rhel6.x    rsyslog service rsyslog status
rhel7.x   systemd-journald和rsyslog

00、日誌等級

編碼優先順序嚴重性
0 emerg 系統不可用。
1 alert 必須立即採取措施。
2 crit 嚴重狀況。
3 err 非常嚴重錯誤狀況。
4 warning 警告狀況。
5 notice 正常但重要的事件。
6 info 資訊性事件。
7 debug 除錯級別訊息。


8 none    日誌不記錄

01、日誌等級符號

. ∶代表『比後面還要高的等級(含該等級)都被記錄下來』    mail.info  >=info 級別的日誌都記錄

.=∶代表所需要的等級就是後面接的等級而已,                     mail.=info   僅僅記錄info級別的日誌

.!∶代表不等於,亦即是除了該等級外的其他等級都記錄       mail.!info    !=info除去info不記錄,其他都記錄


例子:

news.*;cron.*                    /var/log/cronnews              #news及cron的所有日誌資訊都輸出到cronnews
news.=warn;cronn.=warn /var/log/cronnews.warn    #news及cron的warn資訊都輸出到cronnews.warn

messages 這個檔案需要記錄所有的資訊,但是就是不想要記錄 cron, mail 及 news 的資訊

可以有兩種寫法,分別是∶ *.* = 所有資訊!
*.*;news,cron,mail.none                  /var/log/messages
*.*;news.none;cron.none;mail.none /var/log/messages
注意:使用,分隔時,那麼等級只要接在最後一個即可。如果是以『;』來分的話,那麼就需要將服務與等級都寫上去!

 02、檢視系統預設的日誌系統

# 來自 RHEL5 的相關資料
[[email protected] ~]# vi /etc/syslog.conf
#kern.* /dev/console
# 只要是 kernel 產生的訊息,全部都送到 console 去!
# 這個專案預設是關閉的!不過,只要您願意,可以開啟就是了!

*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 在已知各服務的訊息中,不要記錄到這個檔案當中!
# 例如 mail 我們已經預設要記錄在 /var/log/maillog (底下),
# 所以自然不要在記錄 mail 到這個 /var/log/messages 檔案中!
# 然後其他的訊息全部都記錄到 /var/log/messages 當中!
# 所以這個檔案相當的重要!沒有被規定到的訊息都可以在這裡找到!

authpriv.* /var/log/secure
# 這個就是經過一些身份確認的行為之後,需要記錄身份的檔案!
# 什麼是身份確認呢?例如 pop3 收信要輸入帳號與密碼、 ssh 與 telnet, ftp
# 等等的服務需要輸入帳號與密碼,這些都會在 /var/log/secure 裡面記錄!
# 他可也是相當重要的一個檔案呢!

mail.* -/var/log/maillog
# 只要跟 mail 有關的(不論是 pop3 還是 sendmail )都會被紀錄到這個檔案中!

cron.* /var/log/cron
# 還記得例行性命令那一章節嗎?!對!就是那個 crontab 的東西,
# 那東西的服務程式名稱就是 cron !執行 cron 的結果都記錄於此!
*.emerg *
# 任何時候發生的警告訊息都會顯示給線上的所有人!那個 * 就是目前線上的所有人!
# 這個就是利用 wall 之類的方式傳輸訊息的啊!
uucp,news.crit /var/log/spooler
# 記錄新聞錯誤高於 crit 的等級的資訊,寫入 spooler 當中!

local7.* /var/log/boot.log
# 將開機的當中的訊息給他寫入 /var/log/boot.log 這個檔案當中呦!
基本上,每個版本的 syslog.conf 差異是頗大的,所以,每個登入檔記錄的資料其實不很固定

曾經使用過 Mandriva 的話,他的 syslogd 設定資訊有點像這樣∶

# 1. 先設定好所要建立的檔案設定!
[[email protected] ~]# vi /etc/syslog.conf
*.info /var/log/admin.log
# 2. 重新啟動 syslog 呢!
[[email protected] ~]# /etc/init.d/syslog restart
[[email protected] ~]# ll /var/log/admin.log
-rw------- 1 root root 122 Oct 23 22:21 /var/log/admin.log
# 瞧吧!建立了這個檔案出現!

chattr +a /var/log/messages   #新增隱藏屬性,只能追加不能刪除

charttr -a /var/log/message   #去除追加屬性

lsattr /var/log/messages        #檢視檔案隱藏屬性

03、RHEL6.X日誌系統rsyslog

[[email protected] etc]# cat rsyslog.conf 
# rsyslog v5 configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf  #配置的日誌檔案,自定義的日誌


#### RULES ####

# 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.*                                                  -/var/log/maillog


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

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log


# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

# A template to for higher precision timestamps + severity logging
$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-te
xt%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
:programname, startswith, "spice-vdagent"    /var/log/spice-vdagent.log;SpiceTmpl