Я пытаюсь переместить мои файлы журналов Python в ElastiSearch, используя хвостовой источник Fluentd:
<source>
@type forward
@id input1
@label @mainstream
port 24224
</source>
<filter **>
@type stdout
</filter>
<source>
@type tail
path /fluentd/formshare/error_log
pos_file /fluentd/error_log.pos
tag formshare.error
<parse>
@type multiline
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /(?<timestamp>[^ ]* [^ ]*) (?<level>[^\s]+:)(?<message>[\s\S]*)/
</parse>
</source>
<label @mainstream>
<match formshare.access.**>
@type elasticsearch
host 172.28.1.1
port 9200
logstash_format true
logstash_prefix formshare_access
</match>
<match formshare.error.**>
@type elasticsearch
host 172.28.1.1
port 9200
logstash_format true
logstash_prefix formshare_error
</match>
<match **>
@type file
@id output1
path /fluentd/log/data.*.log
symlink_path /fluentd/log/data.log
append true
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</match>
</label>
Я вижу при запуске службы FluentD, которая анализирует файл:
после хвоста / fluentd / formshare / error_log
и файл pos_file содержит данные
/fluentd/formshare/error_log 0000000000000604 000000000098252c
Но я не получаю ошибки в ElasticSearch. Это может быть разбор, но я не очень хорошо с Regex (получил от https://www.datadoghq.com/blog/multiline-logging-guide/)
Соединение с Elastic работает. Совпадение formshare.access. **, которое я использую с "fluent-logger-python"работает нормально. Это просто хвостовой источник, который, кажется, не работает.
Я совершенно новичок в Fluentd, поэтому я не знаю, правильно ли я что-то делаю или мне нужно что-то еще вфайл конфигурации.
Любая помощь приветствуется.