2013-04-22 81 views
4

我有結構化的數據,鍵值對,應該通過系統日誌記錄。最後,我們希望看到有關這些指標的統計數據。我們應該如何編碼,然後在接收端進行解碼?如何通過Syslog發送結構化數據?

我們在syslog中解析日誌的消息部分,並基於解析將其插入到關係數據庫表中。

我們的第二個想法是在JSON中發送數據,在接收端我們將關係數據庫表視爲作業隊列,記錄必須在插入到單獨的表之前進行解析。

此外,鍵值對可能會根據我們想要記錄的內容而改變。

+0

我也想更多地瞭解這一點。 Windows使用ETW進行結構化記錄。 Linux有什麼? – 2015-04-02 21:16:02

+0

http://www.rsyslog.com/doc/rsyslog_mysql.html – 2015-04-02 21:36:19

+0

@MaciejLos - 不完全是這樣的。這只是將syslog數據記錄到mysql中。這是談論記錄*結構化數據*。 MySQL可能是解決方案的一部分,但它不一定是這樣。 – 2015-04-02 23:32:29

回答

2

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 (") 
    (...) 

example here

然而,該RFC確實似乎沒有得到廣泛的支持。您可能需要在舊的RFC 3164之上設計自己的協議。 JSON編碼的消息部分聽起來像是一個非常合理的選擇。

如果您對整個鏈條有完全控制權,則應評估直接登錄到目標數據庫的選項。

+0

我們結束了使用JSON – Blacksonic 2015-04-03 21:29:08