Передать имя файла плагину соответствия
Я настраиваю стек 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>