为什么在Python中使用logstash_formatter包?
我正在使用 logstash_formatter
这个 Python 模块来发送格式化的日志到 logstash。这个 logstash_formatter
会把我传入的字典转换成 JSON 字符串。然后,我的应用程序会把这个 JSON 消息写入到 audit_log
文件中。接着,logstash agent
会读取这个日志文件,并把 JSON 数据发送到 RabbitMQ。
在我从 https://pypi.python.org/pypi/logstash_formatter 安装 logstash_formatter
包之前,我以为因为这个格式化工具是把 JSON 消息传给 RabbitMQ 索引器,所以我不需要在我机器上运行的 logstash agent 的 shipper.conf
文件中添加过滤器。所有的 JSON 字段会自动作为标签或字段添加到 logstash 中,并在 Kibana 中显示得和过滤器一样。
但实际上并没有这样,我还是需要在 shipper.conf
文件中添加过滤器。实际上,日志消息是作为消息字段/标签出现在 logstash 的回复中。
现在我觉得使用这个包没有必要。我本来可以自己创建一个字典,然后用 json
模块把它转换成 JSON。
如果我有什么遗漏的地方,或者我对这个格式化工具的理解完全错误,请给我一些指导。
1 个回答
你说得对——你可以自己写一个脚本,把记录转换成JSON格式。
不过,这个模块的目的就是为了让你不用自己写和维护这些东西。
logstash_formatter这个包会把所有内容转换成字符串,处理一些日期问题,并且在源主机为空的情况下捕捉错误。这个模块会处理和转换你的日志文件,而logstash代理则负责把它发送出去。你可以告诉你的发送工具过滤掉一些标签,或者只发送特定的事件。
你可以从包索引下载这个模块,亲自看看——截至目前,它有154行代码,并且注释写得很清楚。