Почему директива исключить фильтр fluentd не работает? - PullRequest
0 голосов
/ 12 марта 2020

Я хочу, чтобы журнал фильтра 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>
...