Я новичок в мире fluentd, поэтому имейте это в виду, отвечая на мой вопрос.
Я пытаюсь отследить несколько мест, я создал 2 исходных тега
<source>
@type tail
path E:/server-logs/server/*.log
pos_file /tmp/server.log.pos
tag my-server
<parse>
@type ltsv
delimiter_pattern /"\s+/
label_delimiter ="
types code:integer,process:integer,thread:integer
</parse>
</source>
<source>
@type tail
path E:/server-logs/services/**/*.log
pos_file /tmp/services.log.pos
tag my-services
<parse>
@type ltsv
delimiter_pattern /"\s+/
label_delimiter ="
types code:integer,process:integer,thread:integer
</parse>
</source>
Источники используют фильтр
<filter my-*>
@type record_transformer
remove_keys <Msg time
<record>
time ${record["<Msg time"]}
</record>
</filter>
Но журналы должны оказаться в двух разных местах
<match my-services>
@type stdout
</match>
<match my-server>
@type kafka2
@log_level warn
# list of seed brokers
brokers kafka:9092
use_event_time false
# buffer settings
<buffer my-server>
@type file
path /var/log/td-agent/buffer/td
flush_interval 3s
</buffer>
# data type settings
<format>
@type json
</format>
# topic settings
topic_key my-server
default_topic my-server
</match>
Когда я запускаю fluentd, я вижу эту ошибку 2020-02-14 09:08:43 +0100 [error]: # 0 неожиданная ошибка error_class = Errno :: EMFILE error = "Слишком много открытых файлов @ rb_sysopen - /tmp/server.log .pos "
Я прокомментирую любой из двух источников, он работает нормально.
Я мог бы создать два разных файла конфигурации и запустить fluentd в двух экземплярах, но это лучшая практика?