在给定不同标签的情况下,使用同一来源的流利解析不同格式?
Parse different formats using fluentd from same source given different tag?
我在 docker-compose 文件中使用 fluentd,我希望它能够解析 apache 容器以及其他具有自定义格式的容器的日志输出。
为了区分格式,我打算在docker-compose中这样设置标签:
logging:
driver: "fluentd"
options:
tag: "apache2"
所以fluentd应该能够根据标签使用不同的格式。但是我如何配置 fluentd 来执行此操作?
documentation 说应该把它放在源代码部分(我不能这样做,因为我需要两种不同的格式):
<parse>
@type apache2
</parse>
我的基本 source
看起来像这样:
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
是否可以使用 fluentd routing 对来自相同 source
且具有不同标签的数据使用两种不同的格式?
是的,有可能:
# 1. Omit parsing at the source
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
# 2. Write a dedicated filter for each format you want
<filter docker.apache2> # Check your exact produced tag, depends of versions. Just guessing here.
@type parser
key_name log
<parse>
@type apache2
</parse>
</filter>
<filter docker.backend>
@type parser
key_name log
<parse>
@type json
</parse>
</filter>
# 3. Match and store all
<match **>
@type s3
...
</match>
我在 docker-compose 文件中使用 fluentd,我希望它能够解析 apache 容器以及其他具有自定义格式的容器的日志输出。
为了区分格式,我打算在docker-compose中这样设置标签:
logging:
driver: "fluentd"
options:
tag: "apache2"
所以fluentd应该能够根据标签使用不同的格式。但是我如何配置 fluentd 来执行此操作?
documentation 说应该把它放在源代码部分(我不能这样做,因为我需要两种不同的格式):
<parse>
@type apache2
</parse>
我的基本 source
看起来像这样:
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
是否可以使用 fluentd routing 对来自相同 source
且具有不同标签的数据使用两种不同的格式?
是的,有可能:
# 1. Omit parsing at the source
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
# 2. Write a dedicated filter for each format you want
<filter docker.apache2> # Check your exact produced tag, depends of versions. Just guessing here.
@type parser
key_name log
<parse>
@type apache2
</parse>
</filter>
<filter docker.backend>
@type parser
key_name log
<parse>
@type json
</parse>
</filter>
# 3. Match and store all
<match **>
@type s3
...
</match>