我有結構化的數據,鍵值對,應該通過系統日誌記錄。最後,我們希望看到有關這些指標的統計數據。我們應該如何編碼,然後在接收端進行解碼?如何通過Syslog發送結構化數據?
我們在syslog中解析日誌的消息部分,並基於解析將其插入到關係數據庫表中。
我們的第二個想法是在JSON中發送數據,在接收端我們將關係數據庫表視爲作業隊列,記錄必須在插入到單獨的表之前進行解析。
此外,鍵值對可能會根據我們想要記錄的內容而改變。
我有結構化的數據,鍵值對,應該通過系統日誌記錄。最後,我們希望看到有關這些指標的統計數據。我們應該如何編碼,然後在接收端進行解碼?如何通過Syslog發送結構化數據?
我們在syslog中解析日誌的消息部分,並基於解析將其插入到關係數據庫表中。
我們的第二個想法是在JSON中發送數據,在接收端我們將關係數據庫表視爲作業隊列,記錄必須在插入到單獨的表之前進行解析。
此外,鍵值對可能會根據我們想要記錄的內容而改變。
的RFC 5424 for the syslog protocol限定STRUCTURED-DATA
字段:
系統日誌消息具有以下ABNF [RFC5234]定義:
SYSLOG-MSG = HEADER SP STRUCTURED-DATA [SP MSG] (...) STRUCTURED-DATA = NILVALUE/1*SD-ELEMENT SD-ELEMENT = "[" SD-ID *(SP SD-PARAM) "]" SD-PARAM = PARAM-NAME "=" %d34 PARAM-VALUE %d34 SD-ID = SD-NAME PARAM-NAME = SD-NAME PARAM-VALUE = UTF-8-STRING ; characters '"', '\' and ; ']' MUST be escaped. SD-NAME = 1*32PRINTUSASCII ; except '=', SP, ']', %d34 (") (...)
然而,該RFC確實似乎沒有得到廣泛的支持。您可能需要在舊的RFC 3164之上設計自己的協議。 JSON編碼的消息部分聽起來像是一個非常合理的選擇。
如果您對整個鏈條有完全控制權,則應評估直接登錄到目標數據庫的選項。
我們結束了使用JSON – Blacksonic 2015-04-03 21:29:08
我也想更多地瞭解這一點。 Windows使用ETW進行結構化記錄。 Linux有什麼? – 2015-04-02 21:16:02
http://www.rsyslog.com/doc/rsyslog_mysql.html – 2015-04-02 21:36:19
@MaciejLos - 不完全是這樣的。這只是將syslog數據記錄到mysql中。這是談論記錄*結構化數據*。 MySQL可能是解決方案的一部分,但它不一定是這樣。 – 2015-04-02 23:32:29