Я обнаружил, что logstash не поклонник моего фильтра. Было бы неплохо увидеть это вторым взглядом.
Первый - мой файл журнала - содержит следующие записи с новыми строками для каждого тома.
/vol/vol0/ 298844160 6916836 291927324 2% /vol/vol0/
Мой конфигурационный файл выглядит следующим образом:
ВХОД
file {
type => "testing"
path => "/opt/log_repo/ssh/netapp/*"
tags => "netapp"
start_position => "beginning"
sincedb_path => "/dev/null"
}
ФИЛЬТР
if [type] == "testing" {
grok{
match => [ "@message", "{UNIXPATH:volume}%{SPACE}%{INT:total}%{SPACE}%{INT:used}%{SPACE}%{INT:avail}%{SPACE}%{PROG:cap}%{SPACE}%{UNIXPATH:vols}"]
}
}
ВЫХОД
if [type] == "testing" {
elasticsearch {
action => "index"
hosts => ["http://localhost:9200"]
index => ["testing4-%{+YYYY.MM.dd}"]
}
}
Когда я запускаю его, он сообщает мне, что у него плохой файл конфигурации. Если я изменю фильтр на:
match => [ "@message", "{UNIXPATH:volume}" ]
Он создает новое поле с именем тома. Я использую пространственный компонент, потому что журнал просто не согласован. В некоторых томах между используемым пространством будет 4 пробела, а в некоторых - больше или меньше, в зависимости от имени и размера тома.
Чтобы получить эту конфигурацию, я использовал следующие сайты: https://grokdebug.herokuapp.com/discover?# http://grokconstructor.appspot.com/do/constructionstep
Все еще борюсь с тем, что мне не хватает .... Любая помощь будет принята с благодарностью.
ОБНОВЛЕНИЕ: после добавления рекомендации ниже новое поле все еще не создается.
_index string
message string
type string
tags string
path string
@timestamp date
@version string
host string
_source _source
_id string
_type string
_score