Hi,
I have an application(test.app) which invokes multiple downstream application apis(profile, payments etc) and we log elapsed time of every downstream call as an element of Json Array. Is it possible to plot timechart on the p99(elapsed) time of each downstream application call separately.
Sample log :
{
......
appName : test.app
downstreamStats : [
{
...
pathname : profile,
elapsed: 250,
...
},
{
...
pathname : payments,
elapsed: 850,
...
}
]
......
}
I want to plot timechart of the above logs with p99 of elapsed time BY pathname
Seems i got it :
index=test.index appName=test.app | spath downstreamStats | search downstreamStats{}.pathname!=null |eval x=mvzip('downstreamStats{}.pathname','downstreamStats{}.elapsed',"#") | mvexpand x | rex field=x "(?<ds_path>\w+)#(?<ds_elapsed>\d+)" | timechart span=1m p99(ds_elapsed) by ds_path
This works
Seems i got it :
index=test.index appName=test.app | spath downstreamStats | search downstreamStats{}.pathname!=null |eval x=mvzip('downstreamStats{}.pathname','downstreamStats{}.elapsed',"#") | mvexpand x | rex field=x "(?<ds_path>\w+)#(?<ds_elapsed>\d+)" | timechart span=1m p99(ds_elapsed) by ds_path
This works
I tried below but it didnt work :
index=test.index appName=test.app | spath downstreamStats | search downstreamStats{}.pathname!=null | eval x=mvzip('downstreamStats{}.pathname','downstreamStats{}.elapsed',"#") | mvexpand x | rex field=x "(?<ds_path>)#(?<ds_elapsed>)" | timechart span=1m p99(ds_elapsed) by ds_path
Extract the collection as a complete object, extract the items from the collection, mvexpand to create events for each item, extract the pathname and elapsed fields, plot your chart.