Hi,
I'm to the Logstash, How can I convert the below codes in Logstash?
Code 1:
def categorize_rssi(rssi):
if rssi <= -30 and rssi > -50:
return "Excellent Signal"
elif rssi <= -50 and rssi > -60:
return "Good Signal"
elif rssi <= -60 and rssi > -70:
return "Fair Signal"
elif rssi <= -70 and rssi > -80:
return "Poor Signal"
elif rssi <= -80 and rssi > -90:
return "Very Poor Signal"
elif rssi < -90:
return "No Signal"
else:
return None
Code 2:
def categorize_snr(snr):
if snr >= 40:
return "Excellent"
elif 40 > snr >= 25:
return "Good"
elif 25 > snr >= 15:
return "Fair"
elif 15 > snr >= 10:
return "Poor"
else:
return "Very Poor"
Regards
Gowtham S
Badger
March 2, 2025, 4:00pm
2
You could do this with a ranges filter, which is not bundled, so you will need to install it. Otherwise do it in a ruby filter. The ranges filter uses the ruby .between? operator, so the ends of the range are included in it.
Note that your if-else cascade does not handle the value -90.
range {
ranges => [
"someField", -49, -30, "field:category:Excellent signal",
"someField", -59, -50, "field:category:Good signal",
"someField", -69, -60, "field:category:Fair signal",
"someField", -79, -70, "field:category:Poor signal",
"someField", -89, -80, "field:category:Very poor signal",
"someField", -2147483647, -91, "field:category:no signal"
]
}
if ![category] { mutate { add_field => { "category" => "None" } } }
Thanks for the response. Let me check and update the status.
Badger:
}
I have done the changes in Logstash. Please see the details below and let us know in case of any modifications in the config.
mutate
{
add_field => { "[wirelesslancontroller][ClientSNRStatus]" => "%{ [wirelesslancontroller][ClientSNR]}" }
}
range
{
ranges => [
"[wirelesslancontroller][ClientSNR]" , 0, 10, "field:"[wirelesslancontroller][ClientSNRStatus]":Unusable" ],
"[wirelesslancontroller][ClientSNR]" , 11, 15, "field:"[wirelesslancontroller][ClientSNRStatus]":Poor",
"[wirelesslancontroller][ClientSNR]" , 16, 25, "field:"[wirelesslancontroller][ClientSNRStatus]":Fair",
"[wirelesslancontroller][ClientSNR]" , 26, 40, "field:"[wirelesslancontroller][ClientSNRStatus]":Good",
"[wirelesslancontroller][ClientSNR]" , 41, 100, "field:"[wirelesslancontroller][ClientSNRStatus]":Excellent",
]
}