I have an event that is multiple lines:
Mon May 4 22:06:47 PDT 2020
/dev/sdb1 13245631 12450471 127548 99% /Volumes/Media
/dev/sdd2 9460988 7196839 1787272 81% /Volumes/Media 2
I'm trying to turn it into something that I can monitor over time in a time chart but I'm having trouble getting this split up properly. I tried this:
index=sysmon | rex max_match=0 (?<event>.*)\N | rex max_match=0 \/dev\/(?<drive>\w+)\s*(?<blocks>\d+)\s*(?<used>\d+)\s*(?<available>\d+)\s*(?<usepcnt>\d+)%\s*(?<mounted>.*) | timechart span=30m values(used) by drive
It starts to look right in the table, I have time and values but they are all grouped together still:
The max_match
option of rex
produces multi-value fields. You must use mvexpand
to create separate events for each value. Perhaps this run-anywhere query will help.
| makeresults
| eval raw="Mon May 4 22:06:47 PDT 2020
/dev/sdb1 13245631 12450471 127548 99% /Volumes/Media
/dev/sdd2 9460988 7196839 1787272 81% /Volumes/Media 2"
| rex field=raw max_match=0 (?<event>.*)\N
| mvexpand event
| rex field=event max_match=0 \/dev\/(?<drive>\w+)\s*(?<blocks>\d+)\s*(?<used>\d+)\s*(?<available>\d+)\s*(?<usepcnt>\d+)%\s*(?<mounted>.*)
| timechart span=30m values(used) by drive
The max_match
option of rex
produces multi-value fields. You must use mvexpand
to create separate events for each value. Perhaps this run-anywhere query will help.
| makeresults
| eval raw="Mon May 4 22:06:47 PDT 2020
/dev/sdb1 13245631 12450471 127548 99% /Volumes/Media
/dev/sdd2 9460988 7196839 1787272 81% /Volumes/Media 2"
| rex field=raw max_match=0 (?<event>.*)\N
| mvexpand event
| rex field=event max_match=0 \/dev\/(?<drive>\w+)\s*(?<blocks>\d+)\s*(?<used>\d+)\s*(?<available>\d+)\s*(?<usepcnt>\d+)%\s*(?<mounted>.*)
| timechart span=30m values(used) by drive
That did exactly what I was looking for! Thank you!