Передать имя файла плагину соответствия

Я настраиваю стек fluentd /asticsearch / kibana и хочу зарегистрировать имя файла, по которому я получил событие, в документе.

вот моя конфигурация:

<source>
  type tail_ex
  path /tmp/data/access
  pos_file /tmp/data/log.pos
  format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[\
^\"]*)" "(?<agent>[^\"]*)")?/
  time_format %d/%b/%Y:%H:%M:%S %z
  tag front.nginx.access
  refresh_interval 1800
</source>

на данный момент я получаю это:

{
    _index: logstash-2014.07.21
    _type: nginx
    _id: 0Wct7JCkT3qu7G79-cH4uw
    _version: 1
    _score: 1
    _source: {
        host: X.X.X.X
        user: -
        method: GET
        path: /acl/yyy/2/service/1/sss?index=100&num=100
        code: 200
        size: 153750
        referer: -
        agent: -
        @timestamp: 2014-07-21T03:00:14+02:00
    }
}

Я хотел бы иметь поле:

путь: / tmp / data / access

В моем ES док.

Я бы оценил некоторую помощь

1 ответ

На самом деле, вам нужно использовать плагин tail_ex и переименовать тег с именем файла

<source>
  type tail_ex
  log_level fatal
  path /tmp/data/FILERS/cda_logs_sas1/*/*/logs/access*, /tmp/data/FILERS/cda_logs_sas1/*/*/logs/archives/access.*
  pos_file /tmp/data/log.pos
  format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?/ 
  time_format %d/%b/%Y:%H:%M:%S %z 
  tag front.nginx.access.*
</source>

Затем поймайте тег с помощью record_reformer, извлеките имя файла и создайте новый ключ с ним (log_file ${tag_suffix[3]})

<match front.nginx.access.**>
  type record_reformer
  log_level fatal
  enable_ruby false
  <record>
    log_file ${tag_suffix[3]}
  </record>
  tag filtered.front.nginx.access
</match>

Затем проверьте результат

<match filtered.front.nginx.access>
    type stdout
</match>
Другие вопросы по тегам