0
rubyコードを使用しているlogstash構成ファイルがあります。私が書いているコードは繰り返しあり、私はそれの関数を抽出したい。 logstash設定ファイルで可能ですか?ここルビコードの機能Logstash
は私が何をやりたいことはそうevent.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s
の値が格納されていることを推測してい
map_action => "update"
}
ruby
{
code => "event.set('storeNumber', @@map['storeNumber_task1'])
if @@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'startTime'] == nil and @@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'endTime'] == nil
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'startTime'] = event.get('logTimestamp');
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'endTime'] = event.get('logTimestamp');
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'counter'] = 1;
elsif @@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'startTime'] > event.get('logTimestamp')
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'startTime'] = event.get('logTimestamp');
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'counter'] += 1;
elsif @@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'endTime'] < event.get('logTimestamp')
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'endTime'] = event.get('logTimestamp');
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'counter'] += 1;
else
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'counter'] += 1;
end
if @@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'counter'] == 5
@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'totalTime']= (Time.parse(@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'endTime']).to_f - Time.parse(@@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'startTime']).to_f).round(4)
event.set('processingTime', @@map[event.get('storeNumber').to_s + event.get('txnNumber').to_s + event.get('tillNumber').to_s + 'totalTime'])
end"
}
date
{
match => ["logTimestamp", "YYYY-MM-dd HH:mm:ss,SSS"]
target => "logTimestamp"
}
}
これは私が探しているものではありません。私はすべてのルビコードをメソッドに入れて別のif節で呼びたいと思っていますが、現在は別の節で同じコードを繰り返しています。私のコードのメソッドを作成し、if節から呼び出すことが可能かどうかを知りたいです。 –
このようなもの https://discuss.elastic.co/t/methods-in-logstash-ruby/102144/3 –