l??在“SYSLOGD_OPTIONS”行上加“-r”選項以允許接受外來日志消息。
l??-s ip?表示只允許接收來自指定ip的日志消息,提高安全性。多個ip之間使用冒號分隔,例如:SYSLOGD_OPTIONS=’-r?-s?192.168.0.2:192.168.0.3′?
l??-x?表示禁止中央日志服務器解析遠程主機的FQDN(fully?qualified?domain?name,完整域名)。默認情況下,當有其他機器向自己發送日志消息時,中央日志服務器將嘗試解析該機器的FQDN。如果syslog守護進程無法解析出那個地址,它將繼續嘗試,這種毫無必要的額外負擔將大幅降低日志記錄工作的效率,應該禁止。
l??-m 0表示給日志添加– MARK –標記,0表示關閉標記。舉例,-m 240,表示每隔240分鐘(每天6次)在日志文件里增加一行時間戳消息。日志文件里的“–MARK–”消息可以讓你知道中央日志服務器上的syslog守護進程沒有停工偷懶。
=========================================================================
rsyslog可以理解為增強版的syslog,在syslog的基礎上擴展了很多其他功能,如數據庫支持(Mysql, PostgreSQL、Oracle等)、日志內容篩選、定義日志格式模板等。除了默認的udp協議外,rsyslog還支持tcp協議來接收日志。
安裝過程比較簡單,需要注意的是Version 6以上需要libestr>=0.1.2和libee-0.1.2支持。裝完這兩個庫之后,在編譯rsyslog可能來還會報錯找不到libestr或libee。這里我們需要手工來指定PKG_CONFIG_PATH, 如果你安裝libestr和libee沒有特別指定過路徑,默認如下
1
|
|
安裝好了之后,我們可以用它來替代系統自帶的syslog。步驟也很簡單:
1. 將安裝包下的rsyslog.conf拷貝到/etc下面
2. 修改syslog的啟動腳本/etc/init.d/syslog,把其中的sbin修改為rsyslog的路徑,conf路徑修改為rsyslog.conf的路徑。當然如果你對自己的操作沒把握的話,也可以拷貝/etc/init.d/syslog到/etc/init.d/rsyslog,單獨建個啟動腳本,這樣即使rsyslog沒裝好,也不會影響原先的syslog。
rsyslog功能很豐富,我只測了一部分,但這已經能夠滿足我的需求
a. mysql支持
rsyslog很多功能都是以模塊的形式實現的,比如這個mysql支持,首先在編譯的時候我們必須將這個模塊編譯進去,然后在/etc/rsyslog.conf加載”$ModLoad ommysql“,然后在指定哪些日志需要存放在數據里。在使用mysql模塊前,我們需要手工建庫、定義表,這些步驟手冊里都有詳細說明,操作起來也不難。
b. filter(日志篩選)
filter是rsyslog的一大亮點,通常情況下,我們并不是所有的日志都要收集,比如我們只需要error以下級別的日志、或者我們再要包含特定內容的日志。靈活運用filter我們可以很輕易地實現這些需求。下面舉幾個例子,使用方法手冊里有詳細介紹:
1
2
|
?
var /log/test.log
|
如果日志內容包含”test_message”就存放在/var/log/test.log中,”&~”的意思是丟棄,不做后續處理。即使后面還有”:msg, contains, “test_message” /var/log/test2.log”,這條日志也不會再存在test2.log中。
1
2
|
var /log/test.log
|
上面的例子的另一種寫法,用if的好處是可以定義一些復雜的條件匹配
filter非常的實用,syslog中僅僅定義的local0~local7幾個用戶自定義的facility。使用filter我們輕松解決自定義facility不夠用的問題
c. template
使用template定義日志格式模板,可以規范不通的類型的日志,很方便我們查看,使用起來也很簡單,但是template的定義必須放在rsyslog.conf的頂端。
1
2
|
"%timestamp%?
|
第一行我們定義了一個名為myFormat的模板,第二行的意思是把我們定義的myFormat作為rsyslog的默認模板。如果只是需要在特定日志上套用這個模板可以這樣寫
1 |
|
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92894