I have filed TIME field and I would like to convert HHmmss to only Seconds.
e.g.
"duration": [
[
"0:00:00"
]
],
"HOUR": [
[
"0"
]
],
"MINUTE": [
[
"00"
]
],
"SECOND": [
[
"00"
]
]
I would like to have a new field in which I can convert the duration to only Seconds with the formula (like [HOUR60 60 + MINUTE*60 + SECOND] )
I tried
grok {
match => ["eventDescription", "%{SPACE}:%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}%{SPACE}%{TIME:duration}"]
}
#mutate { add_field => {"xfbTransferDuration" => [HOUR60 60 + MINUTE*60 + SECOND] }}
But this does not work.
What is the possible to way to get the TIME in Seconds.
Input String: : CFTU20I Session active for 0:00:00
Grok: %{SPACE}:%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}%{WORD}%{SPACE}%{SPACE}%{TIME:duration}
eperry
(Ed)
June 17, 2015, 7:19am
2
I think the solition for what you want to do is the ruby filter, but I don't have much experience in using it.
I find that the mutate filter is limited and every solution about "caculations' say to go to the ruby.
Hi,
Source : https://groups.google.com/forum/#!topic/logstash-users/iEYRv7bCqdM
I have searched the google groups of logstash and found a post asking almost the same kind of functionality. The proposed solution is as below
filter {
if [sendout_count] and [transport_time] {
ruby {
code => "event['per_sendout_transport_time'] = event['transport_time'] / event['sendout_count']"
}
}
}
In your example, i think , you can approach this as follows
filter {
if [HOUR] and [MINUTE] and [SECOND] {
ruby {
code => "event['timeInSeconds'] = event['HOUR']*3600+event['MINUTE']*60+event['SECOND']"
}
}
}
That way, you can get a field named > timeInSeconds. Hope this helps
2 Likes