Я пытаюсь отправить журналы Hashicorp Vault (работающие в k8s) в CloudWatch с помощью Fluentd. В основе этой настройки лежит руководство AWS https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs.html
. В данный момент я пытаюсь изменить конфигурационный файл FluentD container.conf, чтобы он мог анализировать журналы аудита хранилища. В настоящее время они отображаются в виде JSON строки, т. Е.
{
"log": "{\"time\":\"2020-04-29T14:46:54.428627555Z\",\"type\":\"reques......."}\n",
.......
}
. Я хотел бы, чтобы эта запись журнала отображалась как JSON объект в журналах CloudWatch.
Я обновил основной источник чтобы игнорировать журналы хранилища:
<source>
@type tail
@id in_tail_container_logs
@label @containers
path /var/log/containers/*.log
exclude_path ["/var/log/containers/cloudwatch-agent*", "/var/log/containers/fluentd*", "/var/log/containers/vault-0*"]
pos_file /var/log/fluentd-containers.log.pos
tag *
read_from_head true
<parse>
@type json
time_format %Y-%m-%dT%H:%M:%S.%NZ
</parse>
</source>
Я также добавил следующее в попытке заставить его проанализировать JSON в журналах хранилища:
<source>
@type tail
@id in_tail_vault_logs
@label @vaultlogs
path /var/log/containers/vault-0*
pos_file /var/log/vault.log.pos
tag *
read_from_head true
<parse>
@type json
time_format %Y-%m-%dT%H:%M:%S.%NZ
</parse>
</source>
<label @vaultlogs>
<filter **>
@type kubernetes_metadata
@id filter_kube_metadata_vault
</filter>
<filter **>
@type record_transformer
@id filter_vault_stream_transformer
<record>
stream_name ${tag_parts[3]}
</record>
</filter>
<filter **>
@type parser
key_name log
reserve_data true
<parse>
@type json
</parse>
</filter>
<match **>
@type relabel
@label @NORMAL
</match>
</label>
Однако журналы все еще отображаются в CloudWatch в виде строки JSON.
Есть ли способ сделать это