我有结构化数据,键值对,应该通过系统日志记录。最后我们希望看到关于这些指标的统计数据。我们应该如何在接收端对其进行编码和解码?
一个选项是我们在 syslog 中解析日志的消息部分,并根据该解析将其插入到关系数据库表中。
我们的第二个想法是以 JSON 格式发送数据,在接收端我们将关系数据库表视为作业队列,记录必须在插入到单独的表之前进行解析。
此外,键值对可能会根据我们想要记录的内容而改变。
最佳答案
RFC 5424 for the syslog protocol定义一个 STRUCTURED-DATA
字段:
The syslog message has the following ABNF [RFC5234] definition:
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 之上设计自己的协议(protocol). JSON 编码的消息部分听起来是一个非常合理的选择。
如果您可以完全控制整个链,则应评估直接登录到目标数据库的选项。
关于mysql - 如何通过 Syslog 发送结构化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147267/