Я пытаюсь разбить журнал на два события с grok, mutate и clone в моей конфигурации logstash. Мой стек очень стандартный ELK (Elasticsearch, Logstash, Kibana).Разделить запись журнала в двух событиях с помощью logstash-grok, клонировать и мутировать
Я создаю журнал, который отформатирован так:
timestamp float integer
Например:
2015/01/19 21:48:12 24.7 32
2015/01/19 22:00:20 24.7 32
2015/01/19 22:01:11 24.7 32
2015/01/19 22:01:58 24.7 28
2015/01/19 22:02:28 23.7 28
(etc ...)
В конце концов, я хочу два события в logstash, одна с ключами timestamp
очевидно, type=sensorA
и value=%{the value of the integer}
, а другой с той же отметкой времени и value=%{value of the float}
и type=sensorB
.
До сих пор, я пришел с этой конфигурацией в logstash.conf
:
1.My журнал помечается type=sensor
в моих входов:
input {
file {
path => "/var/log/sensors.log"
type => "sensor"
}
}
2.Then, я использую Grok, клонировать и мутировать, чтобы попытаться разделить их
if [type] == "sensor" {
# Extracts the values
grok {
match => { "message" => "(?<timestamp>%{YEAR}/%{MONTHNUM:month}/%{MONTHDAY:day} %{TIME}) %{NUMBER:sensorA:float} %{NUMBER:sensorB:int}" }
}
mutate {
update => [ "type", "sensorA" ]
}
# Clones the event
clone {
clones => ["sensorB"]
}
}
# So now I should have two events,
# one with type sensorA and one with type sensorB, no ? :
if [type] == "sensorA" {
mutate {
add_field => { "value" => "%{sensorA}" }
convert => ["value", "float"]
}
}
if [type] == "sensorB" {
mutate {
add_field => { "value" => "%{sensorB}" }
convert => ["value", "integer"]
}
}
Но что на самом деле не работает, так как Eventhough я получаю два события с другим типом, они оба имеют одинаковое значение (которое всегда соответствует датчику B).
Почему? У меня возникло ощущение, что файл logstash.conf на самом деле не читается линейным способом, но я не могу найти для этого никакого решения.
Подсказка? Я пропустил что-то действительно очевидное здесь? Спасибо большое
Да, это может сработать таким образом, но я до сих пор не понимаю, почему использование 'mutate' не работает; Это - я думаю - точно эквивалент, поэтому он должен ... – tchap