如何通过Syslog发送结构化数据?

时间:2013-04-22 12:35:40

标签: mysql sql syslog rsyslog structured-data

我有结构化数据,键值对,应该通过syslog记录。最后,我们希望查看有关这些指标的统计信息。我们应该如何编码然后在接收方进行解码?

我们在syslog中解析日志的消息部分并基于该解析将一个选项插入到关系数据库表中。

我们的第二个想法是以JSON方式发送数据,而在接收方,我们将关系数据库表视为作业队列,必须在插入到单独的表之前解析记录。

此外,键值对可能会根据我们想要记录的内容而改变。

1 个答案:

答案 0 :(得分:2)

RFC 5424 for the syslog protocol定义了STRUCTURED-DATA字段:

  

syslog消息具有以下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编码的消息部分听起来是一个非常合理的选择。

如果您完全控制整个链,则应评估直接登录目标数据库的选项。