fluentd JSON 日志字段未被解析
fluentd JSON log field not being parsed
我正在学习 https://docs.fluentd.org/container-deployment/docker-logging-driver
上的 fluentd
教程
但我无法使 JSON 解析器工作。
我运行流利如下:
# ./demo.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match *>
@type stdout
</match>
<filter docker.**>
@type parser
key_name log
reserve_data true
<parse>
@type json # apache2, nginx, etc...
</parse>
</filter>
docker run -it -p 24224:24224 -v $(pwd)/demo.conf:/fluentd/etc/demo.conf -e FLUENTD_CONF=demo.conf fluent/fluentd:v1.3.2
我正在使用以下 docker run
命令将 JSON 日志模拟到 fluentd
docker run --log-driver=fluentd ubuntu echo '{"test":"test"}'
Expected: 2020-06-23 13:52:31.000000000 +0000 e54806b99130: {"log":"{\"test\":\"test\"}","container_id":"e54806b9913010d5ecb79b305d227db9e706299ad94bd070be6042dce735ed3b","container_name":"/wizardly_kalam","source":"stdout","test":"test"}
Actual: 2020-06-23 13:52:31.000000000 +0000 e54806b99130: {"log":"{\"test\":\"test\"}","container_id":"e54806b9913010d5ecb79b305d227db9e706299ad94bd070be6042dce735ed3b","container_name":"/wizardly_kalam","source":"stdout"}
根据 reserve_data 文档,它应该可以工作,但我无法理解问题所在。
也许我遗漏了什么,但 Fluentd 不遵守配置中的步骤顺序吗?在解析字段之前打印到标准输出。试试这个:
# ./demo.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<filter docker.**>
@type parser
key_name log
reserve_data true
<parse>
@type json # apache2, nginx, etc...
</parse>
</filter>
<match *>
@type stdout
</match>
我正在学习 https://docs.fluentd.org/container-deployment/docker-logging-driver
上的fluentd
教程
但我无法使 JSON 解析器工作。
我运行流利如下:
# ./demo.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<match *>
@type stdout
</match>
<filter docker.**>
@type parser
key_name log
reserve_data true
<parse>
@type json # apache2, nginx, etc...
</parse>
</filter>
docker run -it -p 24224:24224 -v $(pwd)/demo.conf:/fluentd/etc/demo.conf -e FLUENTD_CONF=demo.conf fluent/fluentd:v1.3.2
我正在使用以下 docker run
命令将 JSON 日志模拟到 fluentd
docker run --log-driver=fluentd ubuntu echo '{"test":"test"}'
Expected: 2020-06-23 13:52:31.000000000 +0000 e54806b99130: {"log":"{\"test\":\"test\"}","container_id":"e54806b9913010d5ecb79b305d227db9e706299ad94bd070be6042dce735ed3b","container_name":"/wizardly_kalam","source":"stdout","test":"test"}
Actual: 2020-06-23 13:52:31.000000000 +0000 e54806b99130: {"log":"{\"test\":\"test\"}","container_id":"e54806b9913010d5ecb79b305d227db9e706299ad94bd070be6042dce735ed3b","container_name":"/wizardly_kalam","source":"stdout"}
根据 reserve_data 文档,它应该可以工作,但我无法理解问题所在。
也许我遗漏了什么,但 Fluentd 不遵守配置中的步骤顺序吗?在解析字段之前打印到标准输出。试试这个:
# ./demo.conf
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
<filter docker.**>
@type parser
key_name log
reserve_data true
<parse>
@type json # apache2, nginx, etc...
</parse>
</filter>
<match *>
@type stdout
</match>