Hello,
Logstash version: 7.17
Aggregate filter plugin: v2.10.0
Contents for /var/log/logstash/input.log:
{"timestamp": "2023-07-31T15:10:45.141Z", "parentOnly": 1, "logger_name": "activity_stream", "job": 102693, "type": "tower-logs"}
{"timestamp": "2023-07-31T15:10:48.392Z", "childOnly": 1, "logger_name": "job_events", "job": 102693, "type": "tower-logs"}
{"timestamp": "2023-07-31T15:10:50.392Z", "finalOnly": 1, "logger_name": "maindispatch", "job": 102693, "type": "tower-logs"}
Logstash configuration:
input {
file {
path => "/var/log/logstash/input.log"
type => "tower-logs"
}
}
filter {
if [type] == "tower-logs" {
json {
source => "message"
target => "linca"
}
if [logger_name] == "activity_stream" {
aggregate {
task_id => "%{job}"
code => "
map['compositeOnly'] = event.get('parentOnly')
"
map_action => "create"
}
}
if [logger_name] == "job_events" {
aggregate {
task_id => "%{job}"
code => "map['compositeOnly'] += event.get('childOnly')
"
map_action => "update"
}
}
if [logger_name] == "dispatch" {
aggregate {
task_id => "%{job}"
code => "map['compositeOnly'] += event.get('finalOnly')
"
map_action => "update"
end_of_task => true
timeout => 10
}
}
}
}
output {
file {
path => "/var/log/logstash/tavi.log"
}
}
Output file:
{"type":"tower-logs","message":"{\"timestamp\": \"2023-07-31T14:10:45.141Z\", \"parentOnly\": 1, \"logger_name\": \"activity_stream\", \"job\": 102693, \"type\": \"tower-logs\"}","path":"/var/log/logstash/input.log","linca":{"timestamp":"2023-07-31T14:10:45.141Z","job":102693,"logger_name":"activity_stream","parentOnly":1,"type":"tower-logs"},"@version":"1","@timestamp":"2023-07-31T14:01:35.307Z","host":"IP_HOST"}
{"type":"tower-logs","message":"{\"timestamp\": \"2023-07-31T14:10:48.392Z\", \"childOnly\": 1, \"logger_name\": \"job_events\", \"job\": 102693, \"type\": \"tower-logs\"}","path":"/var/log/logstash/input.log","linca":{"timestamp":"2023-07-31T14:10:48.392Z","job":102693,"logger_name":"job_events","type":"tower-logs","childOnly":1},"@version":"1","@timestamp":"2023-07-31T14:01:35.308Z","host":"IP_HOST"}
{"type":"tower-logs","message":"{\"timestamp\": \"2023-07-31T14:10:50.392Z\", \"finalOnly\": 1, \"logger_name\": \"maindispatch\", \"job\": 102693, \"type\": \"tower-logs\"}","path":"/var/log/logstash/input.log","linca":{"timestamp":"2023-07-31T14:10:50.392Z","job":102693,"logger_name":"maindispatch","finalOnly":1,"type":"tower-logs"},"@version":"1","@timestamp":"2023-07-31T14:01:35.308Z","host":"IP_HOST"}
{"type":"tower-logs","message":"","path":"/var/log/logstash/input.log","linca":null,"@version":"1","@timestamp":"2023-07-31T14:01:35.309Z","host":"IP_HOST"}
What I would like to obtain: a 4th event that will have the composityOnly field in which the values from parentOnly, childOnly and finalOnly have been summed.
Could you please advise? Thank you!