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

标签 mysql sql syslog rsyslog structured-data

我有结构化数据,键值对,应该通过系统日志记录。最后我们希望看到关于这些指标的统计数据。我们应该如何在接收端对其进行编码和解码?

一个选项是我们在 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/

相关文章:

php - 对行进行分组并且不将数字显示为科学记数法

mysql - 检查 MySQL 事务中的错误

mysql 的 tinyints 总和

java - 有人可以推荐一个好的 java unix syslog *client* 库吗?

php - <option> 中的值应使用什么 MySQLi 数据类型

java - 使用 JdbcTemplate 将值传递给 sql IN

mysql - 尝试更改表以添加外键时出错

java - Syslog 的 LoggerFields(输出日志优先级和堆栈跟踪)

django - 如何使用Django 1.3日志记录字典配置来设置SysLogHandler

php - 寻找共同的数据集和旅程路径