日誌服務器搭建之多服務器日誌轉發與格式化處理

日誌服務器搭建是靠linux的rsyslog功能做日誌轉發和日誌收集的linux

rsyslog是由一臺Linux服務器做日誌服務器,收集其餘服務器即rsyslog客戶端轉發過來的日誌,因此rsyslog既能夠做爲日誌服務器,也能夠做爲日誌客戶端去使用laravel

rsyslog配置介紹

rsyslog配置包括/etc/rsyslog.conf文件和/etc/rsyslog.d文件夾下的自定義配置文件(自定義配置文件會在rsyslog.conf全局配置中被加載)git

rsyslog.conf配置文件包括模塊配置、全局配置、規則三部分數據庫

日誌服務器配置

日誌服務器的rsyslog配置文件包括如下幾個部分:ubuntu

模塊配置

通常來講,只須要配置做爲日誌服務器經過UDP協議仍是TCP協議接收其餘服務器的日誌文件便可 centos

模塊配置
經過UDP傳輸內容較快,可是可能會出現丟失;而TCP協議傳輸則較爲安全

全局配置

全局設置
圖中模板,logfile爲任意命名,後面的%%內的內容則是rsyslog變量

附rsyslog變量: data items在rsyslog中叫作properties,通常用在templates(就是%%之間的變量)或者條件判斷中。主要有三種Properties:安全

Message Properties:
msg			        匹配message中的msg部分
rawmsg			    從socket收到的信息,通常用來debug
rawmsg-after-pri	和rawmsg相似,可是syslog PRI被移除了
hostname		    message的主機名
source			    HOSTNAME的別名
fromhost		    message來源的主機名,通常是用在relay chain中
fromhost-ip		    同fromhost,不過獲取的是ip
syslogtag		    message的tag
programname		    是tag的靜態部分,例如tag是named[123456],則programname是named
pri			        message的PRI,undecoded格式

System Properties:
$bom			The UTF-8 encoded Unicode byte-order mask (BOM)
$myhostname		The name of the current host as it knows itself

Time-Related System Properties:
$now			當前日期,格式YYYY-MM-DD,now是指當前message被處理的時間
$year			當前年份(4-digit)
$month			當前月份(2-digit)
$day			當前日期(2-digit)
$hour			當前小時(24 hour) time (2-digit)
$hhour			From minute 0 to 29, this is always 0 while from 30 to 59 it is always 1.
$minute			當前分鐘(2-digit)
複製代碼

規則(選擇器+動做)

每一個規則行由兩部分組成,selector部分和action部分,這兩部分由一個或多個空格或tab分隔,selector部分指定源和日誌等級,action部分指定對應的操做。bash

選擇器 SELECTORS selector也由兩部分組成,設施和優先級,由點號.分隔。第一部分爲消息源或稱爲日誌設施,第二部分爲日誌級別。服務器

日誌設施有網絡

auth(security), authpriv: 受權和安全相關的消息
kern: 來自Linux內核的消息
mail: 由mail子系統產生的消息
cron: cron守護進程相關的信息
daemon: 守護進程產生的信息
news: 網絡消息子系統
lpr: 打印相關的日誌信息
user: 用戶進程相關的信息
local0 to local7: 保留,本地使用
複製代碼

日誌級別有(升序):

debug:包含詳細的開發情報的信息,一般只在調試一個程序時使用。
info:情報信息,正常的系統消息,好比騷擾報告,帶寬數據等,不須要處理。
notice: 不是錯誤狀況,也不須要當即處理。
warning: 警告信息,不是錯誤,好比系統磁盤使用了85%等。
err:錯誤,不是很是緊急,在必定時間內修復便可。
crit:重要狀況,如硬盤錯誤,備用鏈接丟失。
alert:應該被當即改正的問題,如系統數據庫被破壞,ISP鏈接丟失。
emerg:緊急狀況,須要當即通知技術人員。
none:沒有記錄等級
複製代碼

特別留意一下在訊息等級以前還有 .[=!] 的鏈接符號喔!他表明的意思是這樣的: . :表明『比後面還要嚴重的等級(含該等級)都被記錄下來』的意思,例如: mail.info 表明只要是 mail 的諮詢,並且該資訊等級嚴重於info (含 info 自己)時,就會被記錄下來的意思。 .=:表明所須要的等級就是後面接的等級而已, 其餘的不要! .!:有點反向選擇的感受,表明忽略大於等於這個等級的訊息! 亦便是低於這個等級的纔會被記錄的意思!

動做 ACTION action是規則描述的一部分,規則用於處理消息。總的來講,消息內容被寫到一種日誌文件上,但也能夠執行其餘動做,好比寫到數據庫表中或轉發到其餘主機。

動做設置

備註:
一、日誌文件前面的減號表示的意思是異步寫文件,好比: mail.!info -/var/log/mail.info
二、而*.emerg :omusrmsg:表明全部服務emerg級別的日誌都會告知全部在線人員
三、
.* ?模板名錶示全部日誌都遵循logfile模板格式

日誌客戶端配置

日誌客戶端也是使用rsyslog功能,且配置文件和日誌服務器同樣,但通常只會在全局配置中配置如下內容

客戶端配置
. @IP表示將全部系統信息和定義local0-local7的自定義信息經過UDP傳輸到某IP . @@IP則表示經過TCP傳輸 而轉發內容和規則也能夠寫到/etc/rsyslog.d/下的一個單獨文件

符號"& ~"表示了一個重定向規則,被用來告知rsyslog守護進程中止對日誌消息的進一步處理,而且不要在本地寫入。只須要寫入指定文件或服務器中便可,若是沒有使用該重定向規則,那麼全部的遠程消息都會在寫入上述描述的日誌文件以外同時被寫入到本地日誌文件,這就意味着日誌消息實際上被寫了屢次。如: . @IP & ~

備註: local0-local7的自定義服務須要在對應服務的配置文件中配置,不然轉發過去的日誌只有系統日誌

重啓rsyslog

全部對於rsyslog的更新都須要重啓rsyslog,包括對rsyslog.conf更改後的:wq操做,不然rsyslog沒法繼續使用

centos7系統:
systemctl restart rsyslog.service
ubuntu或centos6:
service rsyslog restart
複製代碼

laravel服務轉發

laravel自身支持將日誌打到rsyslog,可是須要啓動該配置,啓動了syslog配置後,便可打到rsyslog日誌中,rsyslog會自動監控。若是其中日誌發生變化,會轉發到日誌服務器中

laravel配置

最終轉發到日誌服務器的結果如圖:

最終結果
相關文章
相關標籤/搜索