
我是新手syslog-ng
,我正在設置syslog-ng
,我在其中接收syslog
、auth.log
和的日誌dpkg.log
。雖然我能夠獲取syslog
和的日誌auth.log
,但我無法將dpkg
日誌寫入單獨的文件,並且它會同時寫入dpkg
日誌文件和syslog
日誌文件中。伺服器的設定檔如下:
options {
create_dirs(yes);
owner(root);
group(root);
perm(0640);
dir_owner(root);
dir_group(root);
dir_perm(0750);
};
source s_dl {
network (
transport("tcp")
port(3993)
);
};
filter f_dpkg{
tags("dpkg");
};
destination d_host-specific {
file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY.log");
};
destination d_syslog {
file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY-syslog.log");
};
destination d_dpkg {
file("/var/log/servers/$HOST/$YEAR/$MONTH/$HOST-$YEAR-$MONTH-$DAY-dpkg.log");
};
log {
source(s_dl);
filter(f_auth);
destination(d_host-specific);
};
log {
source(s_dl);
filter(f_syslog3);
destination(d_syslog);
};
log{
source(s_dl);
filter(f_dpkg);
destination(d_dpkg);
};
syslog-ng客戶端的設定檔如下:
source s_dpkg {
file('/var/log/dpkg.log'); tags('dpkg'));
};
destination d_net { tcp("192.168.48.15" port(3993)); };
filter f_tag { tags("dpkg"); };
log { source(s_src); filter(f_auth); destination(d_net);};
log { source(s_src); filter(f_syslog3); destination(d_net);};
log { source(s_dpkg); filter(f_test); destination(d_net);};
任何人都可以指出我的錯誤在哪裡,或獲取詳細資訊的正確方法是什麼。注意:我需要使用相同的連接埠來接受單一主機的所有日誌,因為我無法繼續新增連接埠來接受來自同一台電腦的不同日誌。
答案1
問題是客戶端添加到 dpkg 訊息的標籤不會傳輸到伺服器端(因為它不是原始訊息的一部分)。
另外,在我看來,整個標記是必要的,因為原始 dpkg 日誌沒有填充 syslog 訊息的 PROGRAM 欄位。所以解決問題最簡單的方法恕我直言是:
- 在客戶端上的來源 s_dpkg 中使用 program-override("dpkg") 選項 (https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/reference-source-file.html#idm45439656585216)以正確設定 dpkg 訊息中的 PROGRAM 字段
- 在伺服器上,使用程式(“dpkg”)過濾器而不是標籤過濾器。
華泰