我與您聯繫關於我與syslog-NG有關的問題。 我們的一些設備(主要是惠普交換機和SAN)正在發送不遵守系統日誌RFC 5424的系統日誌消息。無法過濾格式錯誤的消息在syslog-ng
給你舉幾個例子:
如果我嗅出了服務器的網絡界面,我們可以看到像這些「錯誤」的消息(如你所看到的,PRI後,我們可以看到程序,然後時區和字段用逗號分開總之,混合字段,缺少的字段等不是標準系統日誌消息):
<190>raslogd: 2017/03/08-16:03:20, [SEC-1203], 53642, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
因此,我目前無法過濾這些消息。 我試圖定義一個常規的過濾器,並嘗試打印諸如MSGHDR,MSG,PRI等字段,但看不到任何東西。
過濾此消息的唯一方法是隻定義外部接口和一個文件作爲輸出,不包含任何模板。
例如,如果我不喜歡這樣的過濾器:
destination d_INCOMING_ALL { file("/app/syslog-ng/logs/incoming_all.log"); };
log {
source(s_EXTERNAL);
destination(d_INCOMING_ALL);
};
我可以看到的消息在日誌文件中,但格式化的,不知何故(我想syslog-ng的重新格式化它們):
[[email protected] logs]# grep -i cswc incoming_all.log
Mar 9 09:44:20 cswc-mo8x-hpsan01 raslogd: 2017/03/09-08:34:50, [SEC-1203], 53647, WWN 10:00:50:eb:1a:6c:21:38 | FID 128, INFO, cswc-mo8x-SAN01, Login information: Login successful via TELNET/SSH/RSH. IP Addr: 1.2.3.4
[[email protected] logs]#
問題是我不能過濾這些消息(我們接收來自1000多個設備的日誌) 那裏,我需要過濾來自這些設備的消息! ,我能做到這一點的唯一方法是在主機名(cswc- )或程序名(raslogd)
所以我試圖通過添加模板到該文件,例如顯示的字段:
destination d_test {
file ("/app/syslog-ng/logs/test_olivier.log"
template("pri=${priority} date=${ISODATE} host=${HOST} program=${PROGRAM} message=${MSG}\n")
);
};
但沒有任何作品,沒有顯示。 我試過所有的領域,味精,信息,MSGHDR等..不能管理顯示任何東西。 唯一的工作是解析沒有過濾器或模板。
自然,如果我TRED所有種類的過濾器,這樣的下面,它不工作(如字段是混合型):
filter f_is_SAN {
host("cswc.*" flags(ignore-case));
};
同樣爲:
filter f_is_SAN {
match(".*cswc.*" flags(ignore-case));
};
如何任何提示我爲來自這些設備的這些消息(在主機名或程序名上)創建過濾器?
感謝 問候,
嗨,嘗試發送有問題的消息到您的syslog-ng服務器上的一個單獨的端口,並在源中使用no-parse標誌: source {network(ip(XXXX)port(X)transport(「tcp」)) flags(no-parse));}; 這將導致syslog-ng爲消息添加一個頭,並將消息中的所有內容(包括原始頭文件)包含在$ MESSAGE宏中,並將HOST字段設置爲發件人的IP地址。 要避免使用單獨的端口,請使用連接:https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/junctions。 html –
嗨羅伯特,感謝您的提示,我會嘗試並給你一個反饋 – olivierg
mmh我不能使用另一個端口,惠普交換機不支持它:( – olivierg