В моей среде есть настройка, в которой журналы докер-контейнеров перенаправляются в fluentd, а затем fluentd переходит в спанклинг.
У меня проблема с fluentd, некоторые из журналов док-контейнеров не имеют структурированного формата.Из документации я вижу, что: драйвер журнала fluentd отправляет следующие метаданные в структурированном сообщении журнала:
container_id, container_name, source, log
Моя проблема заключается в том, что некоторые журналы имеют неструктурированную информацию метаданных: например: Журнал 1:
{"log":"2019/03/12 13:59:49 [info] 6#6: *2425596 client closed connection while waiting for request, client: 10.17.84.12, server: 0.0.0.0:80","container_id":"789459f8f8a52c8b4b","container_name":"testingcontainer-1ed-fwij4-EcsTaskDefinition-1TF1DH,"source":"stderr"}
Журнал 2:
{"container_id":"26749a26500dd04e92fc","container_name":"/4C4DTHQR2V6C-EcsTaskDefinition-1908NOZPKPKY0-1","source":"stdout","log":"\u001B[0mGET \u001B[32m200 \u001B[0m0.634 ms - -\u001B[0m"}
Эти два журнала имеют разный порядок информации метаданных (log1- [log, conatiner-name, container_id, source]) (log2- [container_id, conatiner-name, source, log]).Из-за этого я получаю некоторые проблемы в спленке.Как я могу решить эту проблему, чтобы получить тот же порядок метаданных?
мой файл конфигурации fluend
<source>
@type forward
@id input1
@label @mainstream
@log_level trace
port 24224
</source>
<label @mainstream>
<match *.**>
type copy
<store>
@type file
@id output_docker1
path /fluentd/log/docker.*.log
symlink_path /fluentd/log/docker.log
append true
time_slice_format %Y%m%d
time_slice_wait 1m
time_format %Y%m%dT%H%M%S%z
utc
buffer_chunk_limit 512m
</store>
<store>
@type s3
@id output_docker2
@log_level trace
s3_bucket bucketwert-1
s3_region us-east-1
path logs/
buffer_path /fluentd/log/docker.log
s3_object_key_format %{path}%{time_slice}_sbx_docker_%{index}.%{file_extension}
flush_interval 3600s
time_slice_format %Y%m%d
time_format %Y%m%dT%H%M%S%z
utc
buffer_chunk_limit 512m
</store>
</match>
</label>