Splunk Search

Windows PerfMon stats -- unable to create total_cpu field

alekksi
Communicator

Hi all,

I'm having difficulty trying to create a total_cpu field. If I map a single variable to it, this works fine and creates the field, but if I try to add them together, no field is returned.

Current query below:

sourcetype="Perfmon:Processor" host="CFDFXNFR-APP22" instance=_Total AND (counter="% User Time" OR counter="% Privileged Time" OR counter="% Interrupt Time") |

eval user=if(counter="% User Time", Value, null()) |

eval system=if(counter="% Privileged Time", Value, null()) |

eval interrupt=if(counter="% Interrupt Time", Value, null()) |

eval total_cpu=user+system+interrupt |

timechart per_second(user) as user, per_second(system) as system, per_second(idle) as idle, per_second(interrupt) as interrupt, per_second(total_cpu) as total_cpu by host limit=100 span=1s

Does anyone have any insight into what may be going wrong here?

Many thanks in advance!!

Tags (2)
0 Karma
1 Solution

somesoni2
Revered Legend

There will be one row per counter, out of 3 rows per run of Perfmon, field user will be null for rows with count != "% User Time". Same is the case with other two fields. Try something like this

sourcetype="Perfmon:Processor" host="CFDFXNFR-APP22" instance=_Total AND (counter="% User Time" OR counter="% Privileged Time" OR counter="% Interrupt Time")| eval user=if(counter="% User Time", Value, null())   | eval system=if(counter="% Privileged Time", Value, null())   | eval interrupt=if(counter="% Interrupt Time", Value, null()| stats values(user) as user, values(system) as system values(interrupt) as interrupt by _time,host  | eval total_cpu=user+system+interrupt | timechart per_second(user) as user, per_second(system) as system, per_second(interrupt) as interrupt, per_second(total_cpu) as total_cpu by host limit=100 span=1s

View solution in original post

somesoni2
Revered Legend

There will be one row per counter, out of 3 rows per run of Perfmon, field user will be null for rows with count != "% User Time". Same is the case with other two fields. Try something like this

sourcetype="Perfmon:Processor" host="CFDFXNFR-APP22" instance=_Total AND (counter="% User Time" OR counter="% Privileged Time" OR counter="% Interrupt Time")| eval user=if(counter="% User Time", Value, null())   | eval system=if(counter="% Privileged Time", Value, null())   | eval interrupt=if(counter="% Interrupt Time", Value, null()| stats values(user) as user, values(system) as system values(interrupt) as interrupt by _time,host  | eval total_cpu=user+system+interrupt | timechart per_second(user) as user, per_second(system) as system, per_second(interrupt) as interrupt, per_second(total_cpu) as total_cpu by host limit=100 span=1s

alekksi
Communicator

Awesome, that's fixed it!!! Many many thanks!

Had to put an if(isnull(interrupt),0,interrupt) in to get it working properly, but this was spot-on.

0 Karma
Got questions? Get answers!

Join the Splunk Community Slack to learn, troubleshoot, and make connections with fellow Splunk practitioners in real time!

Meet up IRL or virtually!

Join Splunk User Groups to connect and learn in-person by region or remotely by topic or industry.

Get Updates on the Splunk Community!

[Puzzles] Solve, Learn, Repeat: Character substitutions with Regular Expressions

This challenge was first posted on Slack #puzzles channelFor BORE at .conf23, we had a puzzle question which ...

Splunk Community Badges!

  Hey everyone! Ready to earn some serious bragging rights in the community? Along with our existing badges ...

[Puzzles] Solve, Learn, Repeat: Matching cron expressions

This puzzle (first published here) is based on matching timestamps to cron expressions.All the timestamps ...