0
ruby 코드를 사용하는 logstash 구성 파일이 있습니다. 필자가 작성한 코드는 반복적이어서 코드의 기능을 추출하려고합니다. logstash 구성 파일에서 가능합니까? 여기 루비 코드의 함수 Logstash
은 내가 무엇을 당신이하고 싶은 것을 추측하고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"
}
하는 방법}
이것은 내가 원하는 것이 아닙니다. 메서드에 모든 루비 코드를 넣고 다른 else 절로 호출하고 싶습니다. 현재 다른 코드에서 같은 코드를 반복하고 있습니다. 내 코드의 메소드를 작성하여 if 절에서 호출 할 수 있는지 알고 싶습니다. –
이와 비슷한 것 https://discuss.elastic.co/t/methods-in-logstash-ruby/102144/3 –