新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
簡單介紹一下Syslog-ng日志系統(tǒng)
syslog-ng的一個設計原則就是建立更好的消息過濾粒度。syslog-ng能夠進行基于內容和優(yōu)先權/facility的過濾。另一個設計原則是更容易進行不同防火墻網段的信息轉發(fā),它支持主機鏈,即使日志消息經過了許多計算機的轉發(fā),也可以找出原發(fā)主機地址和整個轉發(fā)鏈。最后的一個設計原則就是盡量使配置文件強大和簡潔。

創(chuàng)新互聯(lián)建站堅信:善待客戶,將會成為終身客戶。我們能堅持多年,是因為我們一直可值得信賴。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。10年網站建設經驗創(chuàng)新互聯(lián)建站是成都老牌網站營銷服務商,為您提供網站設計制作、做網站、網站設計、HTML5建站、網站制作、成都品牌網站建設、小程序設計服務,給眾多知名企業(yè)提供過好品質的建站服務。
syslog-ng替代syslog是基于以下的設計原則
1)通過正則表達式協(xié)助,除支持原facitily/level方式,還支持內容過濾等以建立更好的消息過濾機制。
\2) 支持主機鏈,即使日志消息經過多重網絡轉發(fā),仍可找到原發(fā)出主機的信息和整個消息鏈。
\3) 支持強大的自定義配置,并且清晰、明了。
syslog-ng安裝
[root@localhost ~]# wget http://www.balabit.com/downloads/files/syslog-ng/sources/3.2.4/source/eventlog_0.2.12.tar.gz
[root@localhost ~]# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz
[root@localhost ~]# tar xvf eventlog_0.2.12.tar.gz
[root@localhost eventlog_0.2.12]# cd eventlog-0.2.12
[root@localhost eventlog_0.2.12]# ./configure --prefix=/usr/local/eventlog
[root@localhost eventlog_0.2.12]# make
[root@localhost eventlog_0.2.12]# make install
[root@localhost ~]# cd /usr/src
[root@localhost ~]# tar xvf syslog-ng_3.3.5.tar.gz
[root@localhost ~]# cd syslog-ng-3.3.5
[root@localhost syslog-ng_3.3.5]# export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig
[root@localhost syslog-ng_3.3.5]# ./configure --prefix=/usr/local/syslog-ng
[root@localhost syslog-ng_3.3.5]# make
[root@localhost syslog-ng_3.3.5]# make install
syslog-ng配置文件介紹
其配置文件時/etc/syslog-ng/syslog-ng.conf,配置文件的格式一般由以下5個部分組成
options { };
#全局選項,多個選項時用分好";"隔開
source S_NAME { };
#定義日志源可以是本地也可以是遠程主機
filter F_NAME { };
#定義過濾規(guī)則,規(guī)則可以使用正則表達式來定義;可略
destination D_NAME { };
#定義目標可以本地也可以是遠程主機
log { };
#此段將來源,目的,過濾都給連接起來并且告訴syslog-ng如何處理日志
----------------------------------------------------------------
options { option1;option2}
sourceS_NAME { source-driver(params);source-driver(params);... };
filter F_NAME {expression;};
destination D_NAME { dest-driver(params); dest-driver(params);…};
log { source(S_NAME); filter(F_NAME); destination(D_NAME) }
options { long_hostnames(off); sync(0); perm(0640); stats(3600); };
全局配置參數更多選項如下:
chain_hostnames(yes|no) #是否打開主機名鏈功能打開后可在多網絡段轉發(fā)日志時有效
long_hostnames(yes|no) #是chain_hostnames的別名已不建議使用
keep_hostname(yes|no) #是否保留日志消息中保存的主機名稱
use_dns(yes|no) #是否打開DNS查詢功能
use_fqdn(yes|no) #是否使用完整的域名
check_hostname(yes|no) #是否檢查主機名有沒有包含不合法的字符
bad_hostname(regexp) #可通過正規(guī)表達式指定某主機的信息不被接受
dns_cache(yes|no) #是否打開DNS緩存功能
dns_cache_expire(n) #DNS緩存功能打開時,一個成功緩存的過期時間
dns_cache_expire_failed(n) #DNS緩存功能打開時,一個失敗緩存的過期時間
dns_cache_size(n) #DNS緩存保留的主機名數量
create_dirs(yes|no) #當指定的目標目錄不存在時,是否創(chuàng)建該目錄
dir_owner(uid) #目錄的UID
dir_perm(perm) #目錄的權限,使用八進制方式標注,例如0644
dir_group(gid) #目錄的GID
dir_perm(perm) #目錄的權限,使用八進制方式標注,例如0644
owner(uid) #文件的UID
group(gid) #文件的GID
perm(perm) #文件的權限,同樣,使用八進制方式標注
gc_busy_threshold(n) #當syslog-ng忙時,其進入垃圾信息收集狀態(tài)的時間一旦分派的對象達到這個數字,syslog-ng就啟動垃圾信息收集狀態(tài)。默認3000
gc_idle_threshold(n) #當syslog-ng空閑時,其進入垃圾信息收集狀態(tài)的時間一旦被分派的對象到達這個數字,syslog-ng就會啟動垃圾信息收集狀態(tài),默認100
log_fifo_size(n) #輸出隊列的行數
log_msg_size(n) #消息日志的最大值(bytes)
mark(n) #多少時間(秒)寫入兩行MARK信息供參考,目前沒有實現(xiàn)
stats(n) #多少時間(秒)寫入兩行STATUS信息,默認值是:600
sync(n) #緩存多少行的信息再寫入文件中,0為不緩存,局部參數可以覆蓋該值
time_reap(n) #在沒有消息前,到達多少秒,即關閉該文件的連接
time_reopen(n) #對于死連接,到達多少秒,會重新連接
use_time_recvd(yes|no) #宏產生的時間是使用接受到的時間還是日志中記錄時間;建議使用R_的宏代替接收時間,S_的宏代替日志記錄的時間,而不要依靠該值定義
source s_name { internal(); unix-dgram("/dev/log"); udp(ip("0.0.0.0") port(514)); };
下面是Syslog-ng支持的消息源:
file (filename) #從指定的文件讀取日志信息
unix-dgram (filename) #打開指定的SOCK_DGRAM模式的unix套接字,接收日志消息
unix-stream (filename) #打開指定的SOCK_STREAM模式的unix套接字,接收日志消息
udp ( (ip),(port) ) #在指定的UDP端口接收日志消息
tcp ( (ip),(port) ) #在指定的TCP端口接收日志消息
sun-streams (filename) #在solaris系統(tǒng)中,打開一個(多個)指定的STREAM設備,從其中讀取日志消息
internal() #syslog-ng內部產生的消息
pipe(filename),fifo(filename) #從指定的管道或者FIFO設備,讀取日志信息
filter f_name { not facility(news, mail) and not filter(f_iptables); };
更多規(guī)則函數如下:
facility(..) #根據facility(設備)選擇日志消息,使用逗號分割多個facility
level(..) #根據level(優(yōu)先級)選擇日志消息,使用逗號分割多個level,或使用“..”表示一個范圍
program(表達式) #日志消息的程序名是否匹配一個正則表達式
host(表達式) #日志消息的主機名是否和一個正則表達式匹配
match(表達式) #對日志消息的內容進行正則匹配
filter() #調用另一條過濾規(guī)則并判斷它的值
destination d_name { file("/var/log/messages"); };
更多動作如下:
file (filename) #把日志消息寫入指定的文件
unix-dgram (filename) #把日志消息寫入指定的SOCK_DGRAM模式的unix套接字
unix-stream (filename) #把日志消息寫入指定的SOCK_STREAM模式的unix套接字
udp (ip),(port) #把日志消息發(fā)送到指定的UDP端口
tcp (ip),(port) #把日志消息發(fā)送到指定的TCP端口
usertty(username) #把日志消息發(fā)送到已經登陸的指定用戶終端窗口
pipe(filename),fifo(filename) #把日志消息發(fā)送到指定的管道或者FIFO設備
program(parm) #啟動指定的程序,并把日志消息發(fā)送到該進程的標準輸入
log { source(s_name); filter(f_name); destination(d_name) };
把消息源、過濾器、消息目的組合起來就形成一條完整的指令。日志路徑中的成員是順序執(zhí)行的凡是來源于指定的消息源,匹配所有指定的過濾器,并送到指定的地址。
同樣的,每條日志消息都會經過所有的消息路徑,并不是匹配后就不再往下執(zhí)行的請留意。
一條日志的處理流程大概是這樣的,如下:
首先是 "日志的來源-source s_name { ... };"
然后是 "過濾規(guī)則-filter f_name { ... };"
再然后是 "消息鏈-log { source(s_name); filter(f_name); destination(d_name) };"
最后是 "目標動作-destination d_name { ... };"
這樣以來一條日志就根據你的意思來處理了,需要注意的是一條日志消息過了之后,會匹配定義的所有配置,并不是匹配到以后就不再往下匹配了
最后可以看一下Syslog-ng的配置文件,結合上面所做的介紹,搞明白其配置文件的意思。
文章題目:簡單介紹一下Syslog-ng日志系統(tǒng)
標題來源:http://www.dlmjj.cn/article/cocihgo.html


咨詢
建站咨詢
