Я пытаюсь указать второй вывод logstash, чтобы сохранить только определенные агрегированные данные.Понятия не имею, как этого добиться на данный момент.Документация не охватывает такой случай.
В настоящее время я использую один вход и один выход.
Определение ввода (logstash-udp.conf
):
input {
udp {
port => 25000
codec => json
buffer_size => 5000
workers => 2
}
}
filter {
grok {
match => [ "message", "API call happened" ]
}
aggregate {
task_id => "%{example_task}"
code => "
map['api_calls'] ||= 0
map['api_calls'] += 1
map['message'] ||= event.get('message')
event.cancel()
"
timeout => 60
push_previous_map_as_event => true
timeout_code => "event.set('aggregated_calls', event.get('api_calls') > 0)"
timeout_tags => ['_aggregation']
}
}
Определение вывода (logstash-output.conf
):
output {
elasticsearch {
hosts => ["localhost"]
manage_template => false
index => "%{[@metadata][udp]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Чего я хочу достичь сейчас?Мне нужно добавить вторую, другую агрегацию (разные данные и условия), которая сохранит все неагрегированные данные в Elasticsearch, как сейчас, однако агрегированные данные для этой агрегации будут сохранены в Postgres.В данный момент я довольно сильно застрял, и поиск в Интернете некоторых документов / примеров не помогает.