用 syslog-ng 記錄外部設備日誌

環境:
ubuntu server 8.04

原因:
以前用系統自帶的 syslog 記錄外部設備日誌,有以下缺陷
1、由於每日生成多個日誌文件,日誌文件名中不能包含日期,提取十分不便。
2、設備以 local7 發送過來的日誌在 syslog 和 messages 中亦記錄,採取屏蔽措施後,雖然不記錄了,但 syslog 和 messages 亦不再記錄本機產生的日誌。

方法:
1、安裝 syslog-ng
sudo apt-get install syslog-ng
在安裝時,會提示刪除 syslog 和 klog,沒有關係,同意即可。

2、修改 syslog-ng 配置文件
/etc/syslog-ng/syslog-ng.conf

在 sources 段中加入
# nsisg1000 source
source s_nsisg1000 {
        udp();
};

在 destinations 段中加入指令,按照年月日生成文件夾方便管理。按照小時生成日誌文件,防止日誌文件大小超過文件系統的限制。
destination df_nsisg1000 { file("/var/log/syslog/nsisg1000/$YEAR.$MONTH.$DAY/$HOUR.log"); };

 

在 logs 段中加入,一定要放在 log 段的最前面,否則如果設備日誌符合其它 log 條件的話,會記錄在其它日誌文件中,並且不再向下個 log 條件傳遞,將導致設備日誌變相丟失。
# nsisg1000
log {
        source(s_nsisg1000);
        destination(df_nsisg1000);
};

修改完後,重新啓動 syslog-ng
sudo /etc/init.d/syslog-ng restart

3、壓縮和刪除日誌
在 /etc/cron.daily 中建立計劃文件 nsisg1000

sudo touch nsisg1000
sudo chmod 755 nsisg1000

內容如下:
#! /bin/sh

gzip /var/log/nsisg1000/`date -d yesterday +%Y.%m.%d`/*.log

它會把前一天的日誌文件壓縮並刪除壓縮前的巨大日誌文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章