在centos7中,默認的日志系統是rsyslog,它是一個類unix計算機系統上使用的開源工具,用於在ip網絡中轉發日志信息。rsyslog采用模塊化設計,是syslog的替代品。rsyslog具有如下特點:

    實現了基本的syslog協議。

    直接兼容syslogd的syslog.conf配置文件

    在同一台機器上支持多個rsyslogd進程

    豐富的過濾功能,可將消息過濾后再轉發

    靈活的配置選項,配置文件中可以寫簡單的邏輯判斷

    增加了重要的功能,如使用tcp進行消息傳輸

    有現成的前端Web展示程序。

   默認安裝的ryslog軟件包提供的守護進程是rsyslog,它是一項系統的基礎服務。應該設置為開機運行,由systemd啟動的。

systemctl enable rsyslog systemctl start rsyslog

    守護進程rsyslog在啟動時會讀取其配置文件。管理隱患可以通過編輯/etc/rsyslog.conf、/etc/rsyslog.d/*.conf和/etc/sysconfig/rsyslog來配置rsyslog的行為。/etc/sysconfig/rsyslog文件用於配置守護進程的運行參數,/etc/rsyslog.conf是rsyslog的主配置文件。

    rsyslog的配置文件/etc/rsyslog.conf的結構如下:

    全局命令(Global dirctives):設置全局參數、如主消息尺寸、加載擴展模塊等

    模版(Templates):指定記錄的消息格式,也用於動態文件名稱生成

    輸出通道(Output chananels):對用戶期望的消息輸出進行預定義。

    規則(Rules)【selector +action】:指定消息規則。在規則中可以引用之前的定義模版和輸出通道    

    以#開始的行為注釋,所有空行將被忽略

    規則配置每一行的格式如下:

facility.priority     action
設備,級別         動作

設備字段說明:

auth        –pam產生的日志

authpriv    –ssh,ftp等登錄信息的驗證信息

cron        –時間任務相關

 

ftp             -FTP守護進程的信息

kern        –內核

lpr         –打印

mail        –郵件

mark(syslog)–rsyslog服務內部的信息,時間標識

news        –新聞組

user        –用戶程序產生的相關信息

uucp        –unix to unix copy, unix主機之間相關的通訊

local 1~7   –自定義的日志設備

 

 

級別字段說明

ebug       –有調式信息的,日志信息最多

info        –一般信息的日志,最常用

notice      –最具有重要性的普通條件的信息

warning     –警告級別

err         –錯誤級別,阻止某個功能或者模塊不能正常工作的信息

crit        –嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息

alert       –需要立刻修改的信息

emerg       –內核崩潰等嚴重信息

none        –什么都不記錄

 

動作字段說明

filename         -指定絕對路徑的日志文件名來記錄日志信息

:omusrmsg:users    -發送信息到指定的用戶,users可以是用逗號分隔符的用戶類別,*表示所有用戶

device                     -將信息發送到指定設備中,如/dev/console

|named-pipe            -將日志記錄到命令管道,用於日志調試非常方便

@hostname            -將信息發送可解析遠程主機hostname或IP,該主機必須正在運行rsyslogd,並可以識別rsyslog的配置文件,使用upd:514端口傳送日志信息

@@hostname         -將信息發送可解析遠程主機hostname或IP,該主機必須正在運行rsyslogd,並可以識別rsyslog的配置文件,使用tcp:514端口傳送日志信息

 

rsyslog.conf的說明如下所示:(關鍵配置)

#### MODULES #### $ModLoad imuxsock # 提供本地系統日志支持(如通過logger命令) $ModLoad imjournal # 提供對systemd journal的訪問 #$ModLoad imklog # 提供內核日志支持(相當於systemed的systemd-journald.service) #$ModLoad immark # 提供-MARK-消息功能 #### GLOBAL DIRECTIVES #### # Use default timestamp format 使用默認日志的時間戳格式 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Include all config files in /etc/rsyslog.d/ 包含/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. 將info或更高級別的消息送到/var/log/messages,除了/mail/news/authpriv/cron之外 # Don't log private authentication messages! 其中*是通配符,代表任何設備:none表示不對任何級別的消息進行記錄 *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. 將authpirv設備的任何級別的信息記錄到/var/log/secure中 authpriv.* /var/log/secure # Log all the mail messages in one place. 將mail設備中的任何級別信息記錄到/var/log/mailog文件中 mail.* -/var/log/maillog # Log cron stuff 將cron設備的任何級別的信息記錄到/var/log/cron文件中 cron.* /var/log/cron # Everybody gets emergency messages 將任何設備的emerg級別或者更高的消息發送給所有正在系統上用戶 *.emerg :omusrmsg:* # Save news errors of level crit and higher in a special file. 將uucp和news設備的crint級別或者更高級別消息記錄到/var/log/spooler文件中 uucp,news.crit /var/log/spooler # Save boot messages also to boot.log 將和本地系統啟動相關的信息記錄到/var/log/boot.log文件中 local7.* /var/log/boot.log

遠程日志服務器

為了方便日志監控並防止日志被篡改、通常在工作網絡中會架設中央日志服務器用於存放各個服務器的日志。rsyslog支持日志的遠程發送和接受

    rsyslog客戶:負責發送日志到中央日志服務器,支持udp,tcp,relp協議

    rsyslog服務器:負責接受從rsyslog客戶發送的日志並存儲在rsyslog服務器,支持日志文件存儲、數據庫存儲

以下為rsyslog客戶與rsyslgo服務器使用到的模塊與配置語法

角色 功能 RPM包名 模塊 配置語法
客戶 使用udp協議發送 rsyslog - *.* @hostname:514
使用tcp協議發送 rsyslog _ *.* @@hostname:514
使用relp協議發送 rsyslog-relp omrelp *.* :omrelp:hostnames:2514
服務器 使用udp協議接收 rsyslog imudp $ModLoad imudp
$InputUDPServerRun 514
使用tcp協議接收 rsyslog imtcp $ModLoad imtcp
$InputTCPServerRun 514
使用relp協議接收 rsyslog-relp imrelp $ModLoad imrelp
$InputRELPServerRun 2514
將日志記錄到MySQL ryslog-mysql ommysql $ModLoad ommysql
*.*:ommysql:DBserver,DBname,DBuser,DBpasswd
將日志記錄到PostgreSQL rsyslog-pgsql ompgsql $ModLoad ompgsql
*.*:ompgsql:DBserver,DBname,DBuser,DBpasswd

 

以下舉例說明,將日志發送到遠程主機

#已經配置好日志服務器172.31.101.52上的rsyslog(splunk) #配置客戶端rsyslog發送tcp端口日志,通過修改配置文件/etc/rsyslog.config上指定tcp傳輸的日志 echo 'mail.info @@172.31.101.52:514'>>/etc/rsyslog.conf #配置文件中追加發送郵件相關的日志,級別為值得報告的信息 sysctemctl restart rsyslog #重啟syslog #測試,在客戶端執行logger命令進行測試 logger -p mail.info "this is a test for rmote log." #發送測試消息

發送測試完畢后,在日志服務器上(splunk)上可以收到發送的測試日志,證明rsyslog配置成功

image.png

查看詳細信息,可以確定使用tcp514端口發送的日志

image.png

 

以下為系統中常用的日志文件說明,在/var/log/*路徑

 

/var/log/messages — 包括整體系統信息,其中也包含系統啟動期間的日志。此外,mail,cron,daemon,kern和auth等內容也記錄在var/log/messages日志中。
/var/log/dmesg — 包含內核緩沖信息(kernel ring buffer)。在系統啟動時,會在屏幕上顯示許多與硬件有關的信息。可以用dmesg查看它們。
/var/log/auth.log — 包含系統授權信息,包括用戶登錄和使用的權限機制等。
/var/log/boot.log — 包含系統啟動時的日志。
/var/log/daemon.log — 包含各種系統后台守護進程日志信息。
/var/log/dpkg.log – 包括安裝或dpkg命令清除軟件包的日志。
/var/log/kern.log – 包含內核產生的日志,有助於在定制內核時解決問題。
/var/log/lastlog — 記錄所有用戶的最近信息。這不是一個ASCII文件,因此需要用lastlog命令查看內容。
/var/log/maillog /var/log/mail.log — 包含來着系統運行電子郵件服務器的日志信息。例如,sendmail日志信息就全部送到這個文件中。
/var/log/user.log — 記錄所有等級用戶信息的日志。
/var/log/Xorg.x.log — 來自X的日志信息。
/var/log/alternatives.log – 更新替代信息都記錄在這個文件中。
/var/log/btmp – 記錄所有失敗登錄信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及所有打印信息的日志。
/var/log/anaconda.log — 在安裝Linux時,所有安裝信息都儲存在這個文件中。
/var/log/yum.log — 包含使用yum安裝的軟件包信息。
/var/log/cron — 每當cron進程開始一個工作時,就會將相關信息記錄在這個文件中。
/var/log/secure — 包含驗證和授權方面信息。例如,sshd會將所有信息記錄(其中包括失敗登錄)在這里。
/var/log/wtmp或/var/log/utmp — 包含登錄信息。使用wtmp可以找出誰正在登陸進入系統,誰使用命令顯示這個文件或信息等。
/var/log/faillog – 包含用戶登錄失敗信息。此外,錯誤登錄命令也會記錄在本文件中。
除了上述Log文件以外, /var/log還基於系統的具體應用包含以下一些子目錄:
/var/log/httpd/或/var/log/apache2 — 包含服務器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 這個子目錄包含郵件服務器的額外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon儲存的信息。
/var/log/samba/ – 包含由samba存儲的信息。
/var/log/sa/ — 包含每日由sysstat軟件包收集的sar文件。
/var/log/sssd/ – 用於守護進程安全服務