Я хочу, чтобы журнал фильтра k8s транслировался, как показано ниже. (Я подготовил кластер k8s с помощью ранчера, поэтому некоторые пользовательские поля включены)
input
{
"log":"2020/03/12 01:49:55.666 \u001b[1;44m[D]\u001b[0m [server.go:2774] | 10.203.7.82|\u001b[97;42m 200 \u001b[0m| 558.406쨉s| match|\u001b[97;44m GET \u001b[0m /api/ping r:/api/ping\n",
"stream":"stdout",
"docker":{
"contaner_id":"42bd2a59e17bd1fc75967d9c7e306573ee3573dedf3727490d2c72e130020ae3"
},
"kubernetes":{
"container_name":"core",
"namespace_name":"harbor",
"pod_name":"harbor-harbor-core-7d7cc79887-dlnxx",
"container_image":"goharbor/harbor-core:v1.10.1",
"container_image_id":"docker-pullable://goharbor/harbor-core@sha256:1aa7612e87c0bd42591668f273c7962b88a092a5d4622720162e9e3416bc7347",
"pod_id":"a2968e0a-d390-4635-8e59-4971b73ccc4e",
"host":"ssgdk-swarm01",
"labels":{
"app":"harbor",
"component":"core",
"pod-template-hash":"7d7cc79887",
"release":"harbor"
},
"master_url":"https://10.43.0.1:443/api",
"namespace_id":"8fb42bc9-98c6-4510-93ed-294479b845a8",
"namespace_labels":{
"cattle_io/creator":"norman",
"field_cattle_io/projectId":"p-kg84p"
}
},
"tag":"c-v5wpn:p-kg84p.var.log.containers.harbor-harbor-core-7d7cc79887-dlnxx_harbor_core-42bd2a59e17bd1fc75967d9c7e306573ee3573dedf3727490d2c72e130020ae3.log",
"log_type":"k8s_normal_container",
"projectID":"c-v5wpn:p-kg84p"
}
А ниже приведен мой свободный конфигурационный файл.
Я хочу принять только нормальный контейнерный журнал k8s и отфильтровать журналы приложений из пространства имен 'harbour'.
В td-agent.log не обнаружено ни одной ошибки, но журналы 'harbour' хранятсяasticsearch и minio.
Обычный Выражение /.*harbor.*/ также, кажется, не работает.
Кто-нибудь говорит мне, почему не работает фильтр fluentd? Или мое регулярное выражение неверно? Пожалуйста, помогите мне ...
<match **.var.log.containers.**>
@type copy
#store log to elasticsearch
<store ignore_error>
@type elasticsearch
verify_es_version_at_startup false
default_elasticsearch_version 7
host myelasticsearch
logstash_format true
</store>
#store log to minio
<store ignore_error>
@type s3
aws_key_id accessKey # The access key for Minio
aws_sec_key secretKey # The secret key for Minio
s3_bucket logs # The bucket to store the log data
s3_endpoint https://myminio # The endpoint URL (like "http://localhost:9000/")
s3_region us-east-1 # See the region settings of your Minio server
path logs/ # This prefix is added to each file
force_path_style true # This prevents AWS SDK from breaking endpoint URL
time_slice_format %Y%m%d%H%M # This timestamp is added to each file name
store_as json
<buffer time>
@type file
path /var/log/td-agent/s3
timekey 1m # Flush the accumulated chunks every hour
timekey_wait 10s # Wait for 60 seconds before flushing
#timekey_use_utc true # Use this option if you prefer UTC timestamps
chunk_limit_size 256m # The maximum size of each chunk
</buffer>
<format>
@type json
</format>
</store>
</match>
<source>
@type forward
</source>
<filter **.var.log.containers.**>
@type grep
<exclude>
key $.kubernetes.namespace_name
pattern /harbor/
</exclude>
</filter>