Finding and fixing issues in an applications starts with measuring what's going on under the hood.
Application Performance Monitoring (APM) has been a big part of CodeProject since the start. Over the years we've measured performance using Windows Performance Counters, database agents, hard coding data sampling logic into our application, Google and Azure analytic services, proprietary monitoring agents, and when all else fails Windows Task Manager. Sometimes all at once.
It's exhausting. And can be expensive. And your code gets littered with all these hooks and scripts and logging calls. I'm also way too lazy and don't have time for monitoring systems that are complicated to install and use and that demand you know all the minutiae of APM before you start. I just want to install something and see graphs and stuff.
This is exactly what New Relic does and so in response to their announcement of a perpetual free tier we are now using New Relic's APM platform for CodeProject.com. We don't typically qualify for free stuff, but with New Relic including 100GB of data in the free tier we're good to go. We've gathering data from only a single web server (all servers are exactly the same and load balanced), and also from our Redis server. We have not as yet added monitoring to our SQL Server instance. Even without installing the SQL agent we still get a ton of information on our SQL calls.
There are no code changes. No scripts to add to web pages. Nothing.
Not a single line of code was added in order to collect the data for these charts. Embedding the charts is simply a matter of grabbing an embed link from a chart on your dashboard and inserting in a webpage.
Remember: we didn't add a single line of code and have not installed an agent on our SQL database. The system can still, however, record
An interesting experiense was seeing client side statistics such as browser types:
Again: we didn't add any scripts to our pages. We installed the agent on our webserver and did nothing more.