我有一個Kubernetes
羣集,其中我試圖在節點上聚合容器日誌並將它們發送到MongoDB
。不過,我需要能夠根據日誌記錄中的值自行發送日誌記錄到不同的MongoDB服務器。Fluentd根據字段值創建標記
我正在使用fluent-plugin-kubernetes_metadata_filter插件將附加信息從Kubernetes附加到日誌記錄。其中一個領域是kubernetes_namespace_name
。是否有可能使用該字段創建一個標籤,我可以使用它匹配mongodb輸出插件。
例如。下面,我只使用一個輸出,但這個想法是有多重,讓流暢的日誌發送給在外地kubernetes_namespace_name
基於該值的MongoDB數據庫:
<source>
@type tail
@label @KUBERNETES
path /var/log/containers/*.log
pos_file /var/log/es-containers.log.pos
time_format %Y-%m-%dT%H:%M:%S
tag kubernetes.*
format json
keep_time_key true
read_from_head true
</source>
<label @KUBERNETES>
<filter kubernetes.**>
@type kubernetes_metadata
kubernetes_url "#{ENV['K8S_HOST_URL']}"
bearer_token_file /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
include_namespace_id true
</filter>
<filter kubernetes.**>
@type flatten_hash
separator _
</filter>
# < Tag 'kubernetes.namespace.default' is created here somehow >
<match kubernetes.namespace.default>
@type mongo
host "#{ENV['MONGO_HOST']}"
port "#{ENV['MONGO_PORT']}"
database "#{ENV['MONGO_DATABASE']}"
collection "#{ENV['MONGO_COLLECTION']}"
capped
capped_size 1024m
user "#{ENV['MONGO_USER']}"
password "#{ENV['MONGO_PASSWORD']}"
time_key time
flush_interval 10s
</match>
</label>
所以你的意思,我需要有1點光源和多個標籤每個都有它自己的流量? – amofasser
正確的配置將會有相當多的依賴性,但這應該會起作用。 –