I have sample data as:-
Sr No,CNIC,Cell Phone,Date Of Birth,Gender
1,3710144892657,3215510968,06/06/1961,male
2,3710155658463,3238547712,6/17/1952,male
3,3710153121295,3015357676,01/01/1956,male
4,3710116643365,3215701975,01/01/1964,male
I want to use data of birth field and calculate age my logstash.conf looks like
input {
file {
type => "csv"
path => "/root/filebeat-7.1.1-linux-x86_64/CAPP.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["Sr No", "CNIC", "Cell Phone" , "Date Of Birth", "Gender" ]
}
if [message] =~ /^Sr/ {
drop{}
}
mutate {
add_field => { "realtimestamp" => "%{@timestamp}" }
}
date {
match => [ "logstash_processed_at", "M/dd/YYYY" ]
target => "@timestamp"
add_tag => "timestamp_changed"
}
ruby {
code => "
diff = event.get('timestamp_changed') - event.get('Date Of Birth');
event.set('timediff') = diff; "
add_tag => [ "Age" ]
}
ruby {
code => "
wanted_fields = [ 'Sr No', 'CNIC' , 'Cell Phone', '@timestamp' , 'Date Of Birth', 'Gender']
event.to_hash.keys.each { |k|
event.remove(k) unless wanted_fields.include? k
}
"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "capp_v3"
document_type => "capp_v3"
}
stdout
{
codec => rubydebug
}
}
Error
SyntaxError: (ruby filter code):4: syntax error, unexpected '=' event.set('timediff') = diff; eval at org/jruby/RubyKernel.java:1061 register at /root/logstash-7.1.1/vendor/bundle/jruby/2.5.0/gems/logstash-filter-ruby-3.1.5/lib/logstash/filters/ruby.rb:59 register at org/logstash/config/ir/compiler/AbstractFilterDelegatorExt.java:56 register_plugins at /root/logstash-7.1.1/logstash-core/lib/logstash/java_pipeline.rb:191 each at org/jruby/RubyArray.java:1792 register_plugins at /root/logstash-7.1.1/logstash-core/lib/logstash/java_pipeline.rb:190 maybe_setup_out_plugins at /root/logstash-7.1.1/logstash-core/lib/logstash/java_pipeline.rb:446 start_workers at /root/logstash-7.1.1/logstash-core/lib/logstash/java_pipeline.rb:203 run at /root/logstash-7.1.1/logstash-core/lib/logstash/java_pipeline.rb:145 start at /root/logstash-7.1.1/logstash-core/lib/logstash/java_pipeline.rb:104 [2019-08-06T13:06:22,117][ERROR][logstash.agent ] Failed to execute action {:id=>:test, :action_type=>LogStash::ConvergeResult::FailedAction, :message=>"Could not execute action: PipelineAction::Create<test>, action_result: false", :backtrace=>nil} [2019-08-06T13:06:22,196][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"index_patterns"=>"logstash-*", "version"=>60001, "settings"=>{"index.refresh_interval"=>"5s", "number_of_shards"=>1}, "mappings"=>{"dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date"}, "@version"=>{"type"=>"keyword"}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}} [2019-08-06T13:06:22,244][ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SyntaxError) (ruby filter code):4: syntax error, unexpected '=' event.set('timediff') = diff;