Your data. Anywhere you go.

New Relic for iOS or Android


Download on the App Store    Android App on Google play


New Relic Insights App for iOS


Download on the App Store


Learn more

Close icon

Monitoring across process boundaries


#1

.NET Agent Question Template

Agent version: 8.12.216

No permalink (there is nothing to link to - I don’t know how to get this to work)

  • Are you using .NET framework or .NET Core?

.NET 4.7.1

Seeing errors?

Nothing: I don’t know how to get this to work

Troubleshooting

Read the documentation. Got Confused. Doesn’t help.

QUESTION:

I am trying to put in place monitoring for work we have that has the potential to cross process boundaries (i.e. the work item may enter our system via one process, and complete in another process). And potentially in the future it may cross machine boundaries too.

When a work item enters our system, we append some metadata to it, such as a timestamp. However, the work item may not be processed immediately and end up queued, and it may be another process that takes it off the queue. We want to know how long it was between entering our system and the processing being complete. So, we want to be able to put a number up to NewRelic that simply represents the time (number of seconds) between an item entering our system and being processed. Then we want to be able to view that on a graph.

We also wish to be able to track queue size (so that we can see if it is filling up unreasonably). So, we want to be able to punt a number up to NewRelic periodically that represents a count of items waiting to be processed and NewRelic to put it on a graph so we can put it up on a big visible display.

I cannot see how to do any of this with NewRelic. If it is in the documentation somehow, I’ve not been able to see it. Things that look promising just don’t seem to do anything. Only things that are nicely self contained inside a [Transaction] seem to do anything - and that is not what we want. For these metrics we simply don’t care about how long it was dealing with SQL Server, or an HTTP service, or anything else. Just something simple - a series of numbers, over time, on a graph.


#2

Hi, @colin.mackay: This sounds like a job for Insights custom events. You can, for example, create an itemProcessed event that includes metadata like the timestamp when an item was processed, how long it had been waiting before being processed, a description of the item, and any other data you think is useful. Then, in Insights, you can write a query to view the average processing time:

SELECT average(processLag) FROM itemProcessed SINCE 1 day ago TIMESERIES

Similarly, you can post a queueSizeSample event once per minute (or more frequently, if you wish), and query that data to display on a dashboard: