2024-05-23 17:46:50 发布
网友
我使用python-logstash来写入logstash。它提供了添加额外字段的选项,但问题是所有字段都在message字段下。我想完成的是在更高的层次上增加一个新的领域。在
message
我从logstash.config(使用ruby/grok/mutate插件)找到了这样做的选项,但这个解决方案不是可伸缩的(必须为每个机器实例配置)
logstash.config
ruby
grok
mutate
比如:
logger.info('my message')
在基巴纳我会看到:
我该怎么做?在
谢谢。在
通过阅读python logstash文档,他们引用“extra”字段并说“addextra fields to logstash message”,这看起来正是您想要的!在
# add extra field to logstash message extra = { 'test_string': 'python version: ' + repr(sys.version_info), 'test_boolean': True, 'test_dict': {'a': 1, 'b': 'c'}, 'test_float': 1.23, 'test_integer': 123, 'test_list': [1, 2, '3'], } test_logger.info('python-logstash: test extra fields', extra=extra)
然后确保logstash输入块中有“json”编解码器,如下所示:
编辑: 我用示例脚本对此进行了测试,得到以下Logstash输出:
{ "host" => "xxx", "path" => "pylog.py", "test_float" => 1.23, "type" => "logstash", "tags" => [], "test_list" => [ [0] 1, [1] 2, [2] "3" ], "test_boolean" => true, "level" => "INFO", "stack_info" => nil, "message" => "python-logstash: test extra fields", "@timestamp" => "2016-09-25T15:23:58.259Z", "test_dict" => { "a" => 1, "b" => "c" }, "test_string" => "python version: sys.version_info(major=3, minor=5, micro=1, releaselevel='final', serial=0)", "@version" => "1", "test_integer" => 123, "logger_name" => "python-logstash-logger" }
所有添加的额外字段显示在与消息字段相同的级别。它们不会添加到“消息”内部对象中。在
通过阅读python logstash文档,他们引用“extra”字段并说“addextra fields to logstash message”,这看起来正是您想要的!在
然后确保logstash输入块中有“json”编解码器,如下所示:
^{pr2}$编辑: 我用示例脚本对此进行了测试,得到以下Logstash输出:
所有添加的额外字段显示在与消息字段相同的级别。它们不会添加到“消息”内部对象中。在
相关问题 更多 >
编程相关推荐