Fluentd grep + логи вывода - PullRequest
       19

Fluentd grep + логи вывода

0 голосов
/ 20 ноября 2018

У меня есть служба, развернутая в кластере kubernetes, с установленным fluentd в качестве набора демонов.И мне нужно разнообразить логи, которые он получает, чтобы они в конечном итоге оказались в разных сегментах s3.Одно ведро будет для всех журналов, сгенерированных kubernetes и нашим кодом отладки / обработки ошибок, а другое хранилище будет подмножеством журналов, генерируемых службой, которые анализируются структурированным регистратором и идентифицируются определенным полем в json.Подумайте об этом: один сегмент предназначен для состояния компьютера и ошибок, другой - для описания user_id созданного ресурса image_id at ts. Описание действий пользователя

Сам сервис не знает о fluentd, поэтому я не могу вручную установить тег длялоги, основанные на том, на каком контейнере s3 я хочу, чтобы они заканчивались. Теперь, при использовании fluentd.conf, я настраиваю s3 так:

<match **>
  # docs: https://docs.fluentd.org/v0.12/articles/out_s3
  # note: this configuration relies on the nodes have an IAM instance profile with access to your S3 bucket
  type copy
  <store>
    type s3
    log_level info
    s3_bucket "#{ENV['S3_BUCKET_NAME']}"
    s3_region "#{ENV['S3_BUCKET_REGION']}"
    aws_key_id "#{ENV['AWS_ACCESS_KEY_ID']}"
    aws_sec_key "#{ENV['AWS_SECRET_ACCESS_KEY']}"
    s3_object_key_format %{path}%{time_slice}/cluster-log-%{index}.%{file_extension}
    format json
    time_slice_format %Y/%m/%d
    time_slice_wait 1m
    flush_interval 10m
    utc
    include_time_key true
    include_tag_key true
    buffer_chunk_limit 128m
    buffer_path /var/log/fluentd-buffers/s3.buffer
  </store>
  <store>
  ...
  </store>
</match>

Итак, я хотел бы иметь что-то вродеgrep plugin

<store>
  type grep
  <regexp>
    key type
    pattern client-action
  </regexp>
</store>

, который бы отправлял журналы в отдельную корзину s3 на тот, который определен для всех журналов

1 Ответ

0 голосов
/ 20 ноября 2018

Я предполагаю, что журналы действий пользователя генерируются вашей службой, а системные журналы включают в себя журналы Docker, Kubernetes и Systemd с узлов.Я нашел ваш пример файла yaml на официальном официальном репозитории github .Если вы посмотрите папку в этой ссылке, вы увидите еще два файла с именами kubernetes.conf и systemd.conf.У этих файлов есть source разделы, в которых они tag имеют свои данные.

Раздел match в файле fluent.conf соответствует **, то есть все журналы и отправка их на s3.Вы хотите разделить ваши типы журналов здесь.Журналы вашего контейнера помечены kubernetes.* в kubernetes.conf в этой строке .

, поэтому приведенная выше конфигурация превращается в

<match kubernetes.* >
@type s3
# user log s3 bucket
...

и для системных журналов match все остальные теги, кроме kubernetes. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...