Hey people!
So I may be a big idiot and be missing something very simple but i cant seem to figure it out.
here is my search:
index=server1
|stats avg(score) as avgscore1
|append [index=server2
|stats avg(score) as avgscore2
|eval avgscore1=tonumber(avgscore1)
|eval avgscore2=tonumber(avgscore2)
|eval diff = avgscore1 - avgscore2
|eval change=if(diff > 0,"Down",if(diff < 0,"Up",if(diff == 0,"Same","Broken")))
No matter what I try i keep getting "Broken" even when i know the numbers are different. When i table diff, its blank. I've tried |eval diff = 5 - 7 and it works fine. Thinking that the avgscores weren't numbers, i used tonumber() so convert them but didnt work either. Any ideas?
Thank you in advanced!
When you use append, splunk adds the result as rows and not columns. So in your example you have two rows, one with a col called avgscore1 and second with avgscore2 neither have both. Hence always "Broken". What you need is appendcols. Like this
index=server1
|stats avg(score) as avgscore1
|appendcols [index=server2
|stats avg(score) as avgscore2
|eval avgscore1=tonumber(avgscore1)
|eval avgscore2=tonumber(avgscore2)
|eval diff = avgscore1 - avgscore2
|eval change=case(diff > 0,"Down", diff < 0, "Up", diff == 0, "Same",1=1, "Broken")
*OR
index=server1 OR index=server2 | eval x= " " | chart avg(score) as avg by x server | fields - x | eval diff=server1-server2 | eval change = case(diff > 0,"Down", diff < 0, "Up", diff == 0, "Same",1=1, "Broken")
When you use append, splunk adds the result as rows and not columns. So in your example you have two rows, one with a col called avgscore1 and second with avgscore2 neither have both. Hence always "Broken". What you need is appendcols. Like this
index=server1
|stats avg(score) as avgscore1
|appendcols [index=server2
|stats avg(score) as avgscore2
|eval avgscore1=tonumber(avgscore1)
|eval avgscore2=tonumber(avgscore2)
|eval diff = avgscore1 - avgscore2
|eval change=case(diff > 0,"Down", diff < 0, "Up", diff == 0, "Same",1=1, "Broken")
*OR
index=server1 OR index=server2 | eval x= " " | chart avg(score) as avg by x server | fields - x | eval diff=server1-server2 | eval change = case(diff > 0,"Down", diff < 0, "Up", diff == 0, "Same",1=1, "Broken")
I know i was missing something simple! Thank you for the help!